Skip to content

Commit e2f586c

Browse files
ecostanzi-arumposolda
authored andcommitted
Return empty configProperties for CredentialBuilderFactory implementations
Closes #36826 Signed-off-by: Enrico Costanzi <[email protected]>
1 parent 99b15ff commit e2f586c

File tree

4 files changed

+61
-3
lines changed

4 files changed

+61
-3
lines changed

services/src/main/java/org/keycloak/protocol/oid4vc/issuance/credentialbuilder/JwtCredentialBuilderFactory.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
package org.keycloak.protocol.oid4vc.issuance.credentialbuilder;
1919

20+
import java.util.ArrayList;
2021
import org.keycloak.component.ComponentModel;
2122
import org.keycloak.models.KeycloakSession;
2223
import org.keycloak.protocol.oid4vc.issuance.OffsetTimeProvider;
@@ -30,6 +31,8 @@
3031
*/
3132
public class JwtCredentialBuilderFactory implements CredentialBuilderFactory {
3233

34+
protected static final List<ProviderConfigProperty> configProperties = new ArrayList<>();
35+
3336
@Override
3437
public String getSupportedFormat() {
3538
return Format.JWT_VC;
@@ -42,7 +45,7 @@ public String getHelpText() {
4245

4346
@Override
4447
public List<ProviderConfigProperty> getConfigProperties() {
45-
return null;
48+
return configProperties;
4649
}
4750

4851
@Override

services/src/main/java/org/keycloak/protocol/oid4vc/issuance/credentialbuilder/LDCredentialBuilderFactory.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
package org.keycloak.protocol.oid4vc.issuance.credentialbuilder;
1919

20+
import java.util.ArrayList;
2021
import org.keycloak.component.ComponentModel;
2122
import org.keycloak.models.KeycloakSession;
2223
import org.keycloak.protocol.oid4vc.model.Format;
@@ -29,6 +30,8 @@
2930
*/
3031
public class LDCredentialBuilderFactory implements CredentialBuilderFactory {
3132

33+
protected static final List<ProviderConfigProperty> configProperties = new ArrayList<>();
34+
3235
@Override
3336
public String getSupportedFormat() {
3437
return Format.LDP_VC;
@@ -41,7 +44,7 @@ public String getHelpText() {
4144

4245
@Override
4346
public List<ProviderConfigProperty> getConfigProperties() {
44-
return null;
47+
return configProperties;
4548
}
4649

4750
@Override

services/src/main/java/org/keycloak/protocol/oid4vc/issuance/credentialbuilder/SdJwtCredentialBuilderFactory.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
package org.keycloak.protocol.oid4vc.issuance.credentialbuilder;
1919

20+
import java.util.ArrayList;
2021
import org.keycloak.component.ComponentModel;
2122
import org.keycloak.models.KeycloakSession;
2223
import org.keycloak.protocol.oid4vc.issuance.OID4VCIssuerWellKnownProvider;
@@ -30,6 +31,8 @@
3031
*/
3132
public class SdJwtCredentialBuilderFactory implements CredentialBuilderFactory {
3233

34+
protected static final List<ProviderConfigProperty> configProperties = new ArrayList<>();
35+
3336
@Override
3437
public String getSupportedFormat() {
3538
return Format.SD_JWT_VC;
@@ -42,7 +45,7 @@ public String getHelpText() {
4245

4346
@Override
4447
public List<ProviderConfigProperty> getConfigProperties() {
45-
return null;
48+
return configProperties;
4649
}
4750

4851
@Override
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package org.keycloak.protocol.oid4vc.issuance.credentialbuilder;
2+
3+
import static org.hamcrest.MatcherAssert.assertThat;
4+
import static org.hamcrest.Matchers.empty;
5+
import static org.hamcrest.Matchers.is;
6+
import static org.hamcrest.Matchers.not;
7+
import static org.hamcrest.Matchers.notNullValue;
8+
9+
import java.util.List;
10+
import org.junit.BeforeClass;
11+
import org.junit.Test;
12+
import org.keycloak.common.Profile;
13+
import org.keycloak.common.Profile.Feature;
14+
import org.keycloak.common.crypto.CryptoIntegration;
15+
import org.keycloak.common.crypto.CryptoProvider;
16+
import org.keycloak.common.profile.CommaSeparatedListProfileConfigResolver;
17+
import org.keycloak.models.KeycloakSession;
18+
import org.keycloak.services.resteasy.ResteasyKeycloakSession;
19+
import org.keycloak.services.resteasy.ResteasyKeycloakSessionFactory;
20+
21+
public class CredentialBuilderFactoryTest {
22+
23+
private static KeycloakSession session;
24+
25+
@BeforeClass
26+
public static void beforeClass() {
27+
Profile.configure(new CommaSeparatedListProfileConfigResolver(Feature.OID4VC_VCI.getVersionedKey(), ""));
28+
CryptoIntegration.init(CryptoProvider.class.getClassLoader());
29+
ResteasyKeycloakSessionFactory factory = new ResteasyKeycloakSessionFactory();
30+
factory.init();
31+
session = new ResteasyKeycloakSession(factory);
32+
}
33+
34+
@Test
35+
public void testVerifyNonNullConfigProperties() {
36+
List<CredentialBuilderFactory> credentialBuilderFactories = session
37+
.getKeycloakSessionFactory()
38+
.getProviderFactoriesStream(CredentialBuilder.class)
39+
.filter(CredentialBuilderFactory.class::isInstance)
40+
.map(CredentialBuilderFactory.class::cast)
41+
.toList();
42+
43+
assertThat(credentialBuilderFactories, is(not(empty())));
44+
45+
for (CredentialBuilderFactory credentialBuilderFactory : credentialBuilderFactories) {
46+
assertThat(credentialBuilderFactory.getConfigProperties(), notNullValue());
47+
}
48+
}
49+
}

0 commit comments

Comments
 (0)