• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

hyperledger / identus-cloud-agent / 10793991050

10 Sep 2024 01:56PM CUT coverage: 48.504% (-4.5%) from 52.962%
10793991050

push

web-flow
build: sbt and plugins dependency update (#1337)

Signed-off-by: Hyperledger Bot <hyperledger-bot@hyperledger.org>
Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io>
Co-authored-by: Hyperledger Bot <hyperledger-bot@hyperledger.org>
Co-authored-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io>

7406 of 15269 relevant lines covered (48.5%)

0.49 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

55.56
/connect/core/src/main/scala/org/hyperledger/identus/connect/core/model/ConnectionRecord.scala
1
package org.hyperledger.identus.connect.core.model
2

3
import org.hyperledger.identus.connect.core.model.ConnectionRecord.{ProtocolState, Role}
4
import org.hyperledger.identus.mercury.protocol.connection.{ConnectionRequest, ConnectionResponse}
5
import org.hyperledger.identus.mercury.protocol.invitation.v2.Invitation
6
import org.hyperledger.identus.shared.models.{Failure, WalletId}
7

8
import java.time.temporal.ChronoUnit
9
import java.time.Instant
10
import java.util.UUID
11

12
/** @param id
13
  * @param createdAt
14
  * @param updatedAt
15
  * @param thid
16
  * @param label
17
  * @param goalCode
18
  * @param goal
19
  * @param role
20
  * @param protocolState
21
  * @param invitation
22
  * @param connectionRequest
23
  * @param connectionResponse
24
  * @param metaRetries
25
  *   represents the number of tries that this state can be processed. If the retries is 0 mean there is no more tries
26
  *   available and the State MUST be considered unrecoverable.
27
  * @param metaLastFailure
28
  *   if present contains information about the last failure. TODO this information should be moved to some metric
29
  *   service.
30
  */
31
case class ConnectionRecord(
32
    id: UUID,
33
    createdAt: Instant,
34
    updatedAt: Option[Instant],
35
    thid: String,
36
    label: Option[String],
37
    goalCode: Option[String],
38
    goal: Option[String],
39
    role: Role,
40
    protocolState: ProtocolState,
41
    invitation: Invitation,
42
    connectionRequest: Option[ConnectionRequest],
43
    connectionResponse: Option[ConnectionResponse],
44
    metaRetries: Int,
45
    metaNextRetry: Option[Instant],
46
    metaLastFailure: Option[Failure],
47
    walletId: WalletId,
48
) {
49
  def withTruncatedTimestamp(unit: ChronoUnit = ChronoUnit.MICROS): ConnectionRecord = copy(
×
50
    createdAt = createdAt.truncatedTo(unit),
×
51
    updatedAt = updatedAt.map(_.truncatedTo(unit)),
×
52
    metaNextRetry = metaNextRetry.map(_.truncatedTo(unit))
×
53
  )
54
}
55

56
/** Like [[ConnectionRecordBefore]] but without the walletId */
57
case class ConnectionRecordBeforeStored(
58
    id: UUID,
59
    createdAt: Instant,
60
    updatedAt: Option[Instant],
61
    thid: String,
62
    label: Option[String],
63
    goalCode: Option[String],
64
    goal: Option[String],
65
    role: Role,
66
    protocolState: ProtocolState,
67
    invitation: Invitation,
68
    connectionRequest: Option[ConnectionRequest],
69
    connectionResponse: Option[ConnectionResponse],
70
    metaRetries: Int,
71
    metaNextRetry: Option[Instant],
72
    metaLastFailure: Option[Failure],
73
) {
74

75
  def withTruncatedTimestamp(unit: ChronoUnit = ChronoUnit.MICROS) = copy(
1✔
76
    createdAt = createdAt.truncatedTo(unit),
1✔
77
    updatedAt = updatedAt.map(_.truncatedTo(unit)),
1✔
78
    metaNextRetry = metaNextRetry.map(_.truncatedTo(unit))
1✔
79
  )
80

81
  def withWalletId(walletId: WalletId): ConnectionRecord = ConnectionRecord(
1✔
82
    id = id,
83
    createdAt = createdAt,
84
    updatedAt = updatedAt,
85
    thid = thid,
86
    label = label,
87
    goalCode = goalCode,
88
    goal = goal,
89
    role = role,
90
    protocolState = protocolState,
91
    invitation = invitation,
92
    connectionRequest = connectionRequest,
93
    connectionResponse = connectionResponse,
94
    metaRetries = metaRetries,
95
    metaNextRetry = metaNextRetry,
96
    metaLastFailure = metaLastFailure,
97
    walletId = walletId
98
  )
99
}
100

101
object ConnectionRecord {
102
  enum Role:
103
    case Inviter extends Role
104
    case Invitee extends Role
105

106
  enum ProtocolState:
107
    // Inviter has created an Invitation in a database
108
    case InvitationGenerated extends ProtocolState
109

110
    // Invitee has received an offer (In Holder DB)
111
    case InvitationReceived extends ProtocolState
112

113
    // Inviter Invitation is expired in Invitee DB
114
    case InvitationExpired extends ProtocolState
115

116
    //  Invitee has created a Connection Request to Inviter
117
    case ConnectionRequestPending extends ProtocolState
118

119
    // Invitee has sent a request to Inviter
120
    case ConnectionRequestSent extends ProtocolState
121

122
    // Inviter has received a request from Invitee
123
    case ConnectionRequestReceived extends ProtocolState
124

125
    // Inviter has created a Connection response for Invitee
126
    case ConnectionResponsePending extends ProtocolState
127

128
    // Inviter has sent Connection response for Invitee
129
    case ConnectionResponseSent extends ProtocolState
130

131
    // Invitee has received a ConnectionResponse from Inviter
132
    case ConnectionResponseReceived extends ProtocolState
133

134
    // TODO Ack to the connection response to finalise connection
135

136
    // TODO DID Rotation later
137

138
    // Holder declined the offer sent by Issuer (Holder DB) or Issuer declined the proposal sent by Holder (Issuer DB)
139
    case ProblemReportPending extends ProtocolState
140
    // Holder has sent problem report to Issuer (Holder DB) or Issuer has sent problem report to Holder (Issuer DB)
141
    case ProblemReportSent extends ProtocolState
142
    // Holder has received problem resport from Issuer (Holder DB) or Issuer has received problem report from Holder (Issuer DB)
143
    case ProblemReportReceived extends ProtocolState
144

145
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc