Skip to content

Commit 1bf8530

Browse files
refactor: replace DCP scope alias (#952)
* refactor: replace DCP scope alias * update credentials api version file
1 parent d917a60 commit 1bf8530

9 files changed

Lines changed: 49 additions & 49 deletions

File tree

core/common-core/src/main/java/org/eclipse/edc/identityhub/defaults/EdcScopeToCriterionTransformer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
* Implementation of the {@link ScopeToCriterionTransformer} interface that converts a scope string to a {@link Criterion} object.
2929
* This is a default/example implementation, that assumes scope strings adhere to the following format:
3030
* <pre>
31-
* org.eclipse.edc.vc.type:SomeCredential:[read|all|*]
31+
* org.eclipse.dspace.dcp.vc.type:SomeCredential:[read|all|*]
3232
* </pre>
3333
* This scope string will get translated into a {@link Criterion} like:
3434
* <pre>
@@ -42,7 +42,7 @@ public class EdcScopeToCriterionTransformer implements ScopeToCriterionTransform
4242
public static final String TYPE_OPERAND = "verifiableCredential.credential.type";
4343
// this has to include the "@" for Postgres queries to work because they operate on JSON
4444
public static final String CONTEXT_OPERAND = "verifiableCredential.credential.@context";
45-
public static final String ALIAS_LITERAL = "org.eclipse.edc.vc.type";
45+
public static final String ALIAS_LITERAL = "org.eclipse.dspace.dcp.vc.type";
4646
public static final String CONTAINS_OPERATOR = "contains";
4747
private static final String SCOPE_SEPARATOR = ":";
4848
private final List<String> allowedOperations = List.of("read", "*", "all");

core/common-core/src/test/java/org/eclipse/edc/identityhub/defaults/EdcScopeToCriterionTransformerTest.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,12 @@ class EdcScopeToCriterionTransformerTest {
2424

2525
@ParameterizedTest
2626
@ValueSource(strings = {
27-
"org.eclipse.edc.vc.type:TestCredential:read",
28-
"org.eclipse.edc.vc.type:TestCredential:*",
29-
"org.eclipse.edc.vc.type:TestCredential:all",
30-
"org.eclipse.edc.vc.type:foo:all",
31-
"org.eclipse.edc.vc.type:https://example.com/contexts/v1#TestCredential:read",
32-
"org.eclipse.edc.vc.type:https://example.com/contexts/v1/#TestCredential:read",
27+
"org.eclipse.dspace.dcp.vc.type:TestCredential:read",
28+
"org.eclipse.dspace.dcp.vc.type:TestCredential:*",
29+
"org.eclipse.dspace.dcp.vc.type:TestCredential:all",
30+
"org.eclipse.dspace.dcp.vc.type:foo:all",
31+
"org.eclipse.dspace.dcp.vc.type:https://example.com/contexts/v1#TestCredential:read",
32+
"org.eclipse.dspace.dcp.vc.type:https://example.com/contexts/v1/#TestCredential:read",
3333
})
3434
void transform_validScope(String scope) {
3535
assertThat(transformer.transformScope(scope)).isSucceeded();
@@ -38,8 +38,8 @@ void transform_validScope(String scope) {
3838
@ParameterizedTest
3939
@ValueSource(strings = {
4040
"invalidAlias:TestCredential:read",
41-
"org.eclipse.edc.vc.type:TestCredential:write",
42-
"org.eclipse.edc.vc.type:TestCredential:foo",
41+
"org.eclipse.dspace.dcp.vc.type:TestCredential:write",
42+
"org.eclipse.dspace.dcp.vc.type:TestCredential:foo",
4343
"org.eclipse.edc::foo",
4444
"org.eclipse.edc:foo",
4545
"org.eclipse.edc:https://example.com/contexts/v1#:foo",

core/identity-hub-core/src/test/java/org/eclipse/edc/identityhub/core/services/query/CredentialQueryResolverImplTest.java

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ void setUp() {
7171
void query_noResult() {
7272
when(storeMock.query(any())).thenAnswer(i -> success(List.of()));
7373
var res = resolver.query(TEST_PARTICIPANT_CONTEXT_ID,
74-
createPresentationQuery("org.eclipse.edc.vc.type:TestCredential:read"), List.of("org.eclipse.edc.vc.type:AnotherCredential:read"));
74+
createPresentationQuery("org.eclipse.dspace.dcp.vc.type:TestCredential:read"), List.of("org.eclipse.dspace.dcp.vc.type:AnotherCredential:read"));
7575
assertThat(res).isSucceeded();
7676
assertThat(res.getContent()).isEmpty();
7777
}
@@ -98,7 +98,7 @@ void query_noQueryScope_shouldAllPermitted() {
9898
var credential = createCredentialResource("AnotherCredential");
9999
when(storeMock.query(any())).thenReturn(success(List.of(credential)));
100100

101-
var res = resolver.query(TEST_PARTICIPANT_CONTEXT_ID, createPresentationQuery(/*empty scopes*/), List.of("org.eclipse.edc.vc.type:AnotherCredential:read"));
101+
var res = resolver.query(TEST_PARTICIPANT_CONTEXT_ID, createPresentationQuery(/*empty scopes*/), List.of("org.eclipse.dspace.dcp.vc.type:AnotherCredential:read"));
102102
assertThat(res).isSucceeded();
103103
assertThat(res.getContent()).usingRecursiveFieldByFieldElementComparator().containsExactly(credential.getVerifiableCredential());
104104
}
@@ -109,7 +109,7 @@ void query_noAccessTokenScope_withQueryScope_shouldReturnFailure() {
109109
when(storeMock.query(any()))
110110
.thenReturn(success(List.of(credential)));
111111

112-
var res = resolver.query(TEST_PARTICIPANT_CONTEXT_ID, createPresentationQuery("org.eclipse.edc.vc.type:AnotherCredential:read"), List.of());
112+
var res = resolver.query(TEST_PARTICIPANT_CONTEXT_ID, createPresentationQuery("org.eclipse.dspace.dcp.vc.type:AnotherCredential:read"), List.of());
113113
assertThat(res).isFailed();
114114
assertThat(res.reason()).isEqualTo(QueryFailure.Reason.UNAUTHORIZED_SCOPE);
115115
verify(monitor).warning("Permission was not granted on any credentials (empty access token scope list), but 1 were requested.");
@@ -119,15 +119,15 @@ void query_noAccessTokenScope_withQueryScope_shouldReturnFailure() {
119119
void query_accessTokenScopeStringInvalid_shouldReturnFailure() {
120120
when(storeMock.query(any())).thenReturn(success(Collections.emptyList()));
121121
var res = resolver.query(TEST_PARTICIPANT_CONTEXT_ID,
122-
createPresentationQuery("invalid"), List.of("org.eclipse.edc.vc.type:AnotherCredential:read"));
122+
createPresentationQuery("invalid"), List.of("org.eclipse.dspace.dcp.vc.type:AnotherCredential:read"));
123123
assertThat(res.failed()).isTrue();
124124
assertThat(res.reason()).isEqualTo(QueryFailure.Reason.INVALID_SCOPE);
125125
assertThat(res.getFailureDetail()).contains("Scope string has invalid format.");
126126
}
127127

128128
@Test
129129
void query_scopeStringHasWrongOperator_shouldReturnFailure() {
130-
var res = resolver.query(TEST_PARTICIPANT_CONTEXT_ID, createPresentationQuery("org.eclipse.edc.vc.type:TestCredential:write"), List.of("ignored"));
130+
var res = resolver.query(TEST_PARTICIPANT_CONTEXT_ID, createPresentationQuery("org.eclipse.dspace.dcp.vc.type:TestCredential:write"), List.of("ignored"));
131131
assertThat(res.failed()).isTrue();
132132
assertThat(res.reason()).isEqualTo(QueryFailure.Reason.INVALID_SCOPE);
133133
assertThat(res.getFailureDetail()).contains("Scope string cannot be converted: Scope string has invalid format.");
@@ -140,7 +140,7 @@ void query_scopeStringWithFqct() {
140140
when(storeMock.query(any())).thenAnswer(i -> success(List.of(resource)));
141141

142142
var res = resolver.query(TEST_PARTICIPANT_CONTEXT_ID,
143-
createPresentationQuery("org.eclipse.edc.vc.type:https://example.com/contexts/v1#TestCredential:read"), List.of("org.eclipse.edc.vc.type:TestCredential:read"));
143+
createPresentationQuery("org.eclipse.dspace.dcp.vc.type:https://example.com/contexts/v1#TestCredential:read"), List.of("org.eclipse.dspace.dcp.vc.type:TestCredential:read"));
144144
assertThat(res).isSucceeded();
145145
assertThat(res.getContent()).containsExactly(resource.getVerifiableCredential());
146146
}
@@ -150,7 +150,7 @@ void query_singleScopeString() {
150150
var credential = createCredentialResource("TestCredential");
151151
when(storeMock.query(any())).thenAnswer(i -> success(List.of(credential)));
152152
var res = resolver.query(TEST_PARTICIPANT_CONTEXT_ID,
153-
createPresentationQuery("org.eclipse.edc.vc.type:TestCredential:read"), List.of("org.eclipse.edc.vc.type:TestCredential:read"));
153+
createPresentationQuery("org.eclipse.dspace.dcp.vc.type:TestCredential:read"), List.of("org.eclipse.dspace.dcp.vc.type:TestCredential:read"));
154154
assertThat(res).isSucceeded();
155155
assertThat(res.getContent()).containsExactly(credential.getVerifiableCredential());
156156
}
@@ -165,7 +165,7 @@ void query_verifyDifferentObjects() {
165165
.thenReturn(success(List.of(credential2)));
166166

167167
var res = resolver.query(TEST_PARTICIPANT_CONTEXT_ID,
168-
createPresentationQuery("org.eclipse.edc.vc.type:TestCredential:read"), List.of("org.eclipse.edc.vc.type:TestCredential:read"));
168+
createPresentationQuery("org.eclipse.dspace.dcp.vc.type:TestCredential:read"), List.of("org.eclipse.dspace.dcp.vc.type:TestCredential:read"));
169169

170170
assertThat(res).isSucceeded();
171171
assertThat(res.getContent()).usingRecursiveFieldByFieldElementComparator().containsExactly(credential2.getVerifiableCredential());
@@ -176,7 +176,7 @@ void query_whenParticipantIdMismatch_expectEmptyResult() {
176176
when(storeMock.query(any())).thenAnswer(i -> success(List.of()));
177177

178178
var res = resolver.query("another_participant_context_id",
179-
createPresentationQuery("org.eclipse.edc.vc.type:TestCredential:read"), List.of("org.eclipse.edc.vc.type:TestCredential:read"));
179+
createPresentationQuery("org.eclipse.dspace.dcp.vc.type:TestCredential:read"), List.of("org.eclipse.dspace.dcp.vc.type:TestCredential:read"));
180180
assertThat(res).isSucceeded();
181181
assertThat(res.getContent()).isEmpty();
182182
}
@@ -193,16 +193,16 @@ void query_multipleScopeStrings() {
193193
});
194194

195195
var res = resolver.query(TEST_PARTICIPANT_CONTEXT_ID,
196-
createPresentationQuery("org.eclipse.edc.vc.type:TestCredential:read",
197-
"org.eclipse.edc.vc.type:AnotherCredential:read"), List.of("org.eclipse.edc.vc.type:TestCredential:read", "org.eclipse.edc.vc.type:AnotherCredential:read"));
196+
createPresentationQuery("org.eclipse.dspace.dcp.vc.type:TestCredential:read",
197+
"org.eclipse.dspace.dcp.vc.type:AnotherCredential:read"), List.of("org.eclipse.dspace.dcp.vc.type:TestCredential:read", "org.eclipse.dspace.dcp.vc.type:AnotherCredential:read"));
198198
assertThat(res).isSucceeded();
199199
assertThat(res.getContent()).containsExactlyInAnyOrder(credential1.getVerifiableCredential(), credential2.getVerifiableCredential());
200200
}
201201

202202
@Test
203203
void query_presentationDefinition_unsupported() {
204204
var q = PresentationQueryMessage.Builder.newinstance().presentationDefinition(PresentationDefinition.Builder.newInstance().id("test-pd").build()).build();
205-
assertThatThrownBy(() -> resolver.query(TEST_PARTICIPANT_CONTEXT_ID, q, List.of("org.eclipse.edc.vc.type:SomeCredential:read")))
205+
assertThatThrownBy(() -> resolver.query(TEST_PARTICIPANT_CONTEXT_ID, q, List.of("org.eclipse.dspace.dcp.vc.type:SomeCredential:read")))
206206
.isInstanceOf(UnsupportedOperationException.class)
207207
.hasMessage("Querying with a DIF Presentation Exchange definition is not yet supported.");
208208
}
@@ -217,8 +217,8 @@ void query_requestsTooManyCredentials_shouldReturnFailure() {
217217
.thenReturn(success(List.of(credential1)));
218218

219219
var res = resolver.query(TEST_PARTICIPANT_CONTEXT_ID,
220-
createPresentationQuery("org.eclipse.edc.vc.type:TestCredential:read",
221-
"org.eclipse.edc.vc.type:AnotherCredential:read"), List.of("org.eclipse.edc.vc.type:TestCredential:read"));
220+
createPresentationQuery("org.eclipse.dspace.dcp.vc.type:TestCredential:read",
221+
"org.eclipse.dspace.dcp.vc.type:AnotherCredential:read"), List.of("org.eclipse.dspace.dcp.vc.type:TestCredential:read"));
222222

223223
assertThat(res).isFailed();
224224
assertThat(res.reason()).isEqualTo(QueryFailure.Reason.UNAUTHORIZED_SCOPE);
@@ -231,7 +231,7 @@ void query_moreCredentialsAllowed_shouldReturnOnlyRequested() {
231231
when(storeMock.query(any())).thenAnswer(i -> success(List.of(credential1)));
232232

233233
var res = resolver.query(TEST_PARTICIPANT_CONTEXT_ID,
234-
createPresentationQuery("org.eclipse.edc.vc.type:TestCredential:read"), List.of("org.eclipse.edc.vc.type:TestCredential:read", "org.eclipse.edc.vc.type:AnotherCredential:read"));
234+
createPresentationQuery("org.eclipse.dspace.dcp.vc.type:TestCredential:read"), List.of("org.eclipse.dspace.dcp.vc.type:TestCredential:read", "org.eclipse.dspace.dcp.vc.type:AnotherCredential:read"));
235235

236236
assertThat(res).isSucceeded();
237237
assertThat(res.getContent()).containsOnly(credential1.getVerifiableCredential());
@@ -243,7 +243,7 @@ void query_exactMatchAllowedAndRequestedCredentials() {
243243
when(storeMock.query(any())).thenAnswer(i -> success(List.of(credential1)));
244244

245245
var res = resolver.query(TEST_PARTICIPANT_CONTEXT_ID,
246-
createPresentationQuery("org.eclipse.edc.vc.type:TestCredential:read"), List.of("org.eclipse.edc.vc.type:TestCredential:read"));
246+
createPresentationQuery("org.eclipse.dspace.dcp.vc.type:TestCredential:read"), List.of("org.eclipse.dspace.dcp.vc.type:TestCredential:read"));
247247

248248
assertThat(res).isSucceeded();
249249
assertThat(res.getContent()).containsOnly(credential1.getVerifiableCredential());
@@ -257,7 +257,7 @@ void query_requestedCredentialNotAllowed() {
257257
.thenAnswer(i -> success(List.of(credential2)));
258258

259259
var res = resolver.query(TEST_PARTICIPANT_CONTEXT_ID,
260-
createPresentationQuery("org.eclipse.edc.vc.type:TestCredential:read"), List.of("org.eclipse.edc.vc.type:AnotherCredential:read"));
260+
createPresentationQuery("org.eclipse.dspace.dcp.vc.type:TestCredential:read"), List.of("org.eclipse.dspace.dcp.vc.type:AnotherCredential:read"));
261261

262262
assertThat(res.failed()).isTrue();
263263
assertThat(res.reason()).isEqualTo(QueryFailure.Reason.UNAUTHORIZED_SCOPE);
@@ -277,8 +277,8 @@ void query_sameSizeDifferentScope() {
277277
.thenReturn(success(List.of(credential4)));
278278

279279
var res = resolver.query(TEST_PARTICIPANT_CONTEXT_ID,
280-
createPresentationQuery("org.eclipse.edc.vc.type:TestCredential:read", "org.eclipse.edc.vc.type:AnotherCredential:read"),
281-
List.of("org.eclipse.edc.vc.type:FooCredential:read", "org.eclipse.edc.vc.type:BarCredential:read"));
280+
createPresentationQuery("org.eclipse.dspace.dcp.vc.type:TestCredential:read", "org.eclipse.dspace.dcp.vc.type:AnotherCredential:read"),
281+
List.of("org.eclipse.dspace.dcp.vc.type:FooCredential:read", "org.eclipse.dspace.dcp.vc.type:BarCredential:read"));
282282

283283
assertThat(res).isFailed();
284284
assertThat(res.reason()).isEqualTo(QueryFailure.Reason.UNAUTHORIZED_SCOPE);
@@ -291,7 +291,7 @@ void query_storeReturnsFailure() {
291291
when(storeMock.query(any())).thenReturn(StoreResult.notFound("test-failure"));
292292

293293
var res = resolver.query(TEST_PARTICIPANT_CONTEXT_ID,
294-
createPresentationQuery("org.eclipse.edc.vc.type:TestCredential:read"), List.of("org.eclipse.edc.vc.type:AnotherCredential:read"));
294+
createPresentationQuery("org.eclipse.dspace.dcp.vc.type:TestCredential:read"), List.of("org.eclipse.dspace.dcp.vc.type:AnotherCredential:read"));
295295

296296
assertThat(res.failed()).isTrue();
297297
assertThat(res.reason()).isEqualTo(QueryFailure.Reason.STORAGE_FAILURE);
@@ -307,7 +307,7 @@ void query_whenExpiredCredential_doesNotInclude() {
307307

308308
when(storeMock.query(any())).thenAnswer(i -> success(List.of(resource)));
309309
var res = resolver.query(TEST_PARTICIPANT_CONTEXT_ID,
310-
createPresentationQuery("org.eclipse.edc.vc.type:TestCredential:read"), List.of("org.eclipse.edc.vc.type:TestCredential:read"));
310+
createPresentationQuery("org.eclipse.dspace.dcp.vc.type:TestCredential:read"), List.of("org.eclipse.dspace.dcp.vc.type:TestCredential:read"));
311311

312312
assertThat(res).isSucceeded();
313313
assertThat(res.getContent()).isEmpty();
@@ -323,7 +323,7 @@ void query_whenNotYetValidCredential_doesNotInclude() {
323323

324324
when(storeMock.query(any())).thenAnswer(i -> success(List.of(resource)));
325325
var res = resolver.query(TEST_PARTICIPANT_CONTEXT_ID,
326-
createPresentationQuery("org.eclipse.edc.vc.type:TestCredential:read"), List.of("org.eclipse.edc.vc.type:TestCredential:read"));
326+
createPresentationQuery("org.eclipse.dspace.dcp.vc.type:TestCredential:read"), List.of("org.eclipse.dspace.dcp.vc.type:TestCredential:read"));
327327

328328
assertThat(res).isSucceeded();
329329
assertThat(res.getContent()).isEmpty();
@@ -342,7 +342,7 @@ void query_whenRevokedCredential_doesNotInclude() {
342342
var resource = createCredentialResource(credential).build();
343343
when(storeMock.query(any())).thenAnswer(i -> success(List.of(resource)));
344344
var res = resolver.query(TEST_PARTICIPANT_CONTEXT_ID,
345-
createPresentationQuery("org.eclipse.edc.vc.type:TestCredential:read"), List.of("org.eclipse.edc.vc.type:TestCredential:read"));
345+
createPresentationQuery("org.eclipse.dspace.dcp.vc.type:TestCredential:read"), List.of("org.eclipse.dspace.dcp.vc.type:TestCredential:read"));
346346

347347
assertThat(res).isSucceeded();
348348
assertThat(res.getContent()).isEmpty();

core/identity-hub-core/src/test/java/org/eclipse/edc/identityhub/core/services/verification/SelfIssuedTokenVerifierImplTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ class SelfIssuedTokenVerifierImplTest {
4949
private final PublicKeyResolver pkResolver = mock();
5050
private final ClaimToken idToken = ClaimToken.Builder.newInstance()
5151
.claim("token", "test-at")
52-
.claim("scope", "org.eclipse.edc.vc.type:AlumniCredential:read")
52+
.claim("scope", "org.eclipse.dspace.dcp.vc.type:AlumniCredential:read")
5353
.build();
5454
private final KeyPairResourcePublicKeyResolver localPublicKeyResolver = mock();
5555
private final IdentityHubParticipantContextService participantContextService = mock();

e2e-tests/dcp-issuance-tests/src/test/java/org/eclipse/edc/identityhub/tests/dcp/flow/DcpIssuanceFlowAllInOneTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,7 @@ void testPresentationQuery(IssuerService issuer, IdentityHub identityHub) throws
422422
// create token, for that we need the provider's private key
423423
var providerJwk = issuer.getService(Vault.class).resolveSecret("issuer", PARTICIPANT_ID + "-alias");
424424
assertThat(providerJwk).isNotNull();
425-
var accessToken = generateJwt(participantDid, participantDid, consumerDid, Map.of("scope", "org.eclipse.edc.vc.type:MembershipCredential:read"), ECKey.parse(providerJwk));
425+
var accessToken = generateJwt(participantDid, participantDid, consumerDid, Map.of("scope", "org.eclipse.dspace.dcp.vc.type:MembershipCredential:read"), ECKey.parse(providerJwk));
426426
var token = generateJwt(participantDid, consumerDid, consumerDid, Map.of("client_id", consumerDid, "token", accessToken), consumerKey);
427427

428428
var response = identityHub.getCredentialsEndpoint().baseRequest()
@@ -436,7 +436,7 @@ void testPresentationQuery(IssuerService issuer, IdentityHub identityHub) throws
436436
],
437437
"@type": "PresentationQueryMessage",
438438
"scope":[
439-
"org.eclipse.edc.vc.type:MembershipCredential:read"
439+
"org.eclipse.dspace.dcp.vc.type:MembershipCredential:read"
440440
]
441441
}
442442
""")

0 commit comments

Comments
 (0)