14
14
15
15
package org .eclipse .dataspaceconnector .identity ;
16
16
17
+ import static org .assertj .core .api .Assertions .assertThat ;
18
+ import static org .eclipse .dataspaceconnector .junit .testfixtures .TestUtils .getResourceFileContentAsString ;
19
+ import static org .junit .jupiter .api .Assertions .assertEquals ;
20
+ import static org .junit .jupiter .api .Assertions .assertTrue ;
21
+ import static org .mockito .ArgumentMatchers .any ;
22
+ import static org .mockito .Mockito .mock ;
23
+ import static org .mockito .Mockito .when ;
24
+
17
25
import com .fasterxml .jackson .core .JsonProcessingException ;
18
26
import com .fasterxml .jackson .databind .ObjectMapper ;
19
27
import com .nimbusds .jose .jwk .ECKey ;
26
34
import org .eclipse .dataspaceconnector .iam .did .spi .document .VerificationMethod ;
27
35
import org .eclipse .dataspaceconnector .iam .did .spi .resolution .DidResolver ;
28
36
import org .eclipse .dataspaceconnector .iam .did .spi .resolution .DidResolverRegistry ;
29
- import org .eclipse .dataspaceconnector .spi .iam .ClaimToken ;
30
37
import org .eclipse .dataspaceconnector .spi .iam .TokenParameters ;
31
38
import org .eclipse .dataspaceconnector .spi .monitor .ConsoleMonitor ;
32
39
import org .eclipse .dataspaceconnector .spi .result .Result ;
36
43
37
44
import java .time .Clock ;
38
45
import java .util .Map ;
39
-
40
- import static org .eclipse .dataspaceconnector .junit .testfixtures .TestUtils .getResourceFileContentAsString ;
41
- import static org .junit .jupiter .api .Assertions .assertEquals ;
42
- import static org .junit .jupiter .api .Assertions .assertTrue ;
46
+ import java .util .UUID ;
43
47
44
48
/**
45
49
* Test the {@link DecentralizedIdentityService} with a key algorithm. See {@link WithP256Test} for concrete impl.
48
52
abstract class DecentralizedIdentityServiceTest {
49
53
private static final String DID_DOCUMENT = getResourceFileContentAsString ("dids.json" );
50
54
55
+ private CredentialsVerifier credentialsVerifierMock ;
51
56
private DecentralizedIdentityService identityService ;
52
57
53
58
@ Test
54
59
void generateAndVerifyJwtToken_valid () {
55
- var result = identityService .obtainClientCredentials (TokenParameters .Builder .newInstance ()
56
- .scope ("Foo" )
57
- .audience ("Bar" )
58
- .build ());
60
+ when (credentialsVerifierMock .getVerifiedCredentials (any ())).thenReturn (Result .success (Map .of ("region" , "eu" )));
61
+
62
+ var result = identityService .obtainClientCredentials (defaultTokenParameters ());
59
63
assertTrue (result .succeeded ());
60
64
61
- Result < ClaimToken > verificationResult = identityService .verifyJwtToken (result .getContent (), "Bar" );
65
+ var verificationResult = identityService .verifyJwtToken (result .getContent (), "Bar" );
62
66
assertTrue (verificationResult .succeeded ());
63
67
assertEquals ("eu" , verificationResult .getContent ().getClaims ().get ("region" ));
64
68
}
65
69
66
70
@ Test
67
71
void generateAndVerifyJwtToken_wrongAudience () {
68
- var result = identityService .obtainClientCredentials (TokenParameters .Builder .newInstance ()
69
- .scope ("Foo" )
70
- .audience ("Bar" )
71
- .build ());
72
+ var result = identityService .obtainClientCredentials (defaultTokenParameters ());
73
+
74
+ var verificationResult = identityService .verifyJwtToken (result .getContent (), "Bar2" );
75
+ assertTrue (verificationResult .failed ());
76
+ }
77
+
78
+ @ Test
79
+ void generateAndVerifyJwtToken_getVerifiedCredentialsFailed () {
80
+ var errorMsg = UUID .randomUUID ().toString ();
81
+ when (credentialsVerifierMock .getVerifiedCredentials (any ())).thenReturn (Result .failure (errorMsg ));
72
82
73
- Result <ClaimToken > verificationResult = identityService .verifyJwtToken (result .getContent (), "Bar2" );
83
+ var result = identityService .obtainClientCredentials (defaultTokenParameters ());
84
+ assertTrue (result .succeeded ());
85
+
86
+ var verificationResult = identityService .verifyJwtToken (result .getContent (), "Bar" );
74
87
assertTrue (verificationResult .failed ());
88
+ assertThat (verificationResult .getFailureDetail ()).contains (errorMsg );
89
+ }
90
+
91
+ private static TokenParameters defaultTokenParameters () {
92
+ return TokenParameters .Builder .newInstance ()
93
+ .scope ("Foo" )
94
+ .audience ("Bar" )
95
+ .build ();
75
96
}
76
97
77
98
@ BeforeEach
@@ -80,9 +101,9 @@ void setUp() {
80
101
var privateKey = new EcPrivateKeyWrapper (keyPair .toECKey ());
81
102
82
103
var didResolver = new TestResolverRegistry (DID_DOCUMENT , keyPair );
83
- CredentialsVerifier verifier = document -> Result . success ( Map . of ( "region" , "eu" ) );
84
- String didUrl = "random.did.url" ;
85
- identityService = new DecentralizedIdentityService (didResolver , verifier , new ConsoleMonitor (), privateKey , didUrl , Clock .systemUTC ());
104
+ credentialsVerifierMock = mock ( CredentialsVerifier . class );
105
+ var didUrl = "random.did.url" ;
106
+ identityService = new DecentralizedIdentityService (didResolver , credentialsVerifierMock , new ConsoleMonitor (), privateKey , didUrl , Clock .systemUTC ());
86
107
}
87
108
88
109
@ NotNull
@@ -114,7 +135,7 @@ public void register(DidResolver resolver) {
114
135
public Result <DidDocument > resolve (String didKey ) {
115
136
try {
116
137
var did = new ObjectMapper ().readValue (hubUrlDid , DidDocument .class );
117
- ECKey key = (ECKey ) keyPair .toPublicJWK ();
138
+ var key = (ECKey ) keyPair .toPublicJWK ();
118
139
did .getVerificationMethod ().add (VerificationMethod .Builder .create ()
119
140
.type ("JsonWebKey2020" )
120
141
.id ("test-key" )
0 commit comments