public void testGettersAndSetters()
throws Exception {
Issuer issuer = new Issuer("https://c2id.com");
List<SubjectType> subjectTypes = new LinkedList<>();
subjectTypes.add(SubjectType.PAIRWISE);
subjectTypes.add(SubjectType.PUBLIC);
URI jwkSetURI = new URI("https://c2id.com/jwks.json");
OIDCProviderMetadata meta = new OIDCProviderMetadata(issuer, subjectTypes, jwkSetURI);
assertEquals(issuer.getValue(), meta.getIssuer().getValue());
assertEquals(SubjectType.PAIRWISE, meta.getSubjectTypes().get(0));
assertEquals(SubjectType.PUBLIC, meta.getSubjectTypes().get(1));
assertEquals(jwkSetURI.toString(), meta.getJWKSetURI().toString());
meta.setAuthorizationEndpointURI(new URI("https://c2id.com/authz"));
assertEquals("https://c2id.com/authz", meta.getAuthorizationEndpointURI().toString());
meta.setTokenEndpointURI(new URI("https://c2id.com/token"));
assertEquals("https://c2id.com/token", meta.getTokenEndpointURI().toString());
meta.setUserInfoEndpointURI(new URI("https://c2id.com/userinfo"));
assertEquals("https://c2id.com/userinfo", meta.getUserInfoEndpointURI().toString());
meta.setRegistrationEndpointURI(new URI("https://c2id.com/reg"));
assertEquals("https://c2id.com/reg", meta.getRegistrationEndpointURI().toString());
meta.setCheckSessionIframeURI(new URI("https://c2id.com/session"));
assertEquals("https://c2id.com/session", meta.getCheckSessionIframeURI().toString());
meta.setEndSessionEndpointURI(new URI("https://c2id.com/logout"));
assertEquals("https://c2id.com/logout", meta.getEndSessionEndpointURI().toString());
meta.setScopes(Scope.parse("openid email profile"));
assertTrue(Scope.parse("openid email profile").containsAll(meta.getScopes()));
List<ResponseType> responseTypes = new LinkedList<>();
ResponseType rt1 = new ResponseType();
rt1.add(ResponseType.Value.CODE);
responseTypes.add(rt1);
meta.setResponseTypes(responseTypes);
responseTypes = meta.getResponseTypes();
assertEquals(ResponseType.Value.CODE, responseTypes.iterator().next().iterator().next());
assertEquals(1, responseTypes.size());
List<ResponseMode> responseModes = new LinkedList<>();
responseModes.add(ResponseMode.QUERY);
responseModes.add(ResponseMode.FRAGMENT);
meta.setResponseModes(responseModes);
assertTrue(meta.getResponseModes().contains(ResponseMode.QUERY));
assertTrue(meta.getResponseModes().contains(ResponseMode.FRAGMENT));
assertEquals(2, meta.getResponseModes().size());
List<GrantType> grantTypes = new LinkedList<>();
grantTypes.add(GrantType.AUTHORIZATION_CODE);
grantTypes.add(GrantType.REFRESH_TOKEN);
meta.setGrantTypes(grantTypes);
assertTrue(meta.getGrantTypes().contains(GrantType.AUTHORIZATION_CODE));
assertTrue(meta.getGrantTypes().contains(GrantType.REFRESH_TOKEN));
assertEquals(2, meta.getGrantTypes().size());
List<ACR> acrList = new LinkedList<>();
acrList.add(new ACR("1"));
meta.setACRs(acrList);
assertEquals("1", meta.getACRs().get(0).getValue());
List<ClientAuthenticationMethod> authMethods = new LinkedList<>();
authMethods.add(ClientAuthenticationMethod.CLIENT_SECRET_BASIC);
meta.setTokenEndpointAuthMethods(authMethods);
assertEquals(ClientAuthenticationMethod.CLIENT_SECRET_BASIC, meta.getTokenEndpointAuthMethods().get(0));
List<JWSAlgorithm> tokenEndpointJWSAlgs = new LinkedList<>();
tokenEndpointJWSAlgs.add(JWSAlgorithm.HS256);
tokenEndpointJWSAlgs.add(JWSAlgorithm.HS384);
tokenEndpointJWSAlgs.add(JWSAlgorithm.HS512);
meta.setTokenEndpointJWSAlgs(tokenEndpointJWSAlgs);
assertEquals(JWSAlgorithm.HS256, meta.getTokenEndpointJWSAlgs().get(0));
assertEquals(JWSAlgorithm.HS384, meta.getTokenEndpointJWSAlgs().get(1));
assertEquals(JWSAlgorithm.HS512, meta.getTokenEndpointJWSAlgs().get(2));
List<JWSAlgorithm> requestObjectJWSAlgs = new LinkedList<>();
requestObjectJWSAlgs.add(JWSAlgorithm.HS256);
meta.setRequestObjectJWSAlgs(requestObjectJWSAlgs);
assertEquals(JWSAlgorithm.HS256, meta.getRequestObjectJWSAlgs().get(0));
List<JWEAlgorithm> requestObjectJWEAlgs = new LinkedList<>();
requestObjectJWEAlgs.add(JWEAlgorithm.A128KW);
meta.setRequestObjectJWEAlgs(requestObjectJWEAlgs);
assertEquals(JWEAlgorithm.A128KW, meta.getRequestObjectJWEAlgs().get(0));
List<EncryptionMethod> requestObjectEncs = new LinkedList<>();
requestObjectEncs.add(EncryptionMethod.A128GCM);
meta.setRequestObjectJWEEncs(requestObjectEncs);
assertEquals(EncryptionMethod.A128GCM, meta.getRequestObjectJWEEncs().get(0));
List<JWSAlgorithm> idTokenJWSAlgs = new LinkedList<>();
idTokenJWSAlgs.add(JWSAlgorithm.RS256);
meta.setIdTokenJWSAlgs(idTokenJWSAlgs);
assertEquals(JWSAlgorithm.RS256, meta.getIDTokenJWSAlgs().get(0));
List<JWEAlgorithm> idTokenJWEalgs = new LinkedList<>();
idTokenJWEalgs.add(JWEAlgorithm.A256KW);
meta.setIDTokenJWEAlgs(idTokenJWEalgs);
List<EncryptionMethod> idTokenEncs = new LinkedList<>();
idTokenEncs.add(EncryptionMethod.A128GCM);
meta.setIdTokenJWEEncs(idTokenEncs);
assertEquals(EncryptionMethod.A128GCM, meta.getIDTokenJWEEncs().get(0));
List<JWSAlgorithm> userInfoJWSAlgs = new LinkedList<>();
userInfoJWSAlgs.add(JWSAlgorithm.RS256);
meta.setUserInfoJWSAlgs(userInfoJWSAlgs);
assertEquals(JWSAlgorithm.RS256, meta.getUserInfoJWSAlgs().get(0));
List<JWEAlgorithm> userInfoJWEAlgs = new LinkedList<>();
userInfoJWEAlgs.add(JWEAlgorithm.RSA1_5);
meta.setUserInfoJWEAlgs(userInfoJWEAlgs);
assertEquals(JWEAlgorithm.RSA1_5, meta.getUserInfoJWEAlgs().get(0));
List<EncryptionMethod> userInfoEncs = new LinkedList<>();
userInfoEncs.add(EncryptionMethod.A128CBC_HS256);
meta.setUserInfoJWEEncs(userInfoEncs);
assertEquals(EncryptionMethod.A128CBC_HS256, meta.getUserInfoJWEEncs().get(0));
List<Display> displays = new LinkedList<>();
displays.add(Display.PAGE);
displays.add(Display.POPUP);
meta.setDisplays(displays);
assertEquals(Display.PAGE, meta.getDisplays().get(0));
assertEquals(Display.POPUP, meta.getDisplays().get(1));
assertEquals(2, meta.getDisplays().size());
List<ClaimType> claimTypes = new LinkedList<>();
claimTypes.add(ClaimType.NORMAL);
meta.setClaimTypes(claimTypes);
assertEquals(ClaimType.NORMAL, meta.getClaimTypes().get(0));
List<String> claims = new LinkedList<>();
claims.add("name");
claims.add("email");
meta.setClaims(claims);
assertEquals("name", meta.getClaims().get(0));
assertEquals("email", meta.getClaims().get(1));
assertEquals(2, meta.getClaims().size());
List<LangTag> claimLocales = new LinkedList<>();
claimLocales.add(LangTag.parse("en-GB"));
meta.setClaimLocales(claimLocales);
assertEquals("en-GB", meta.getClaimsLocales().get(0).toString());
List<LangTag> uiLocales = new LinkedList<>();
uiLocales.add(LangTag.parse("bg-BG"));
meta.setUILocales(uiLocales);
assertEquals("bg-BG", meta.getUILocales().get(0).toString());
meta.setServiceDocsURI(new URI("https://c2id.com/docs"));
assertEquals("https://c2id.com/docs", meta.getServiceDocsURI().toString());
meta.setPolicyURI(new URI("https://c2id.com/policy"));
assertEquals("https://c2id.com/policy", meta.getPolicyURI().toString());
meta.setTermsOfServiceURI(new URI("https://c2id.com/tos"));
assertEquals("https://c2id.com/tos", meta.getTermsOfServiceURI().toString());
meta.setSupportsClaimsParams(true);
assertTrue(meta.supportsClaimsParam());
meta.setSupportsRequestParam(true);
assertTrue(meta.supportsRequestParam());
meta.setSupportsRequestURIParam(true);
assertTrue(meta.supportsRequestURIParam());
meta.setRequiresRequestURIRegistration(true);
assertTrue(meta.requiresRequestURIRegistration());
String json = meta.toJSONObject().toJSONString();
meta = OIDCProviderMetadata.parse(JSONObjectUtils.parseJSONObject(json));
assertEquals(issuer.getValue(), meta.getIssuer().getValue());
assertEquals(SubjectType.PAIRWISE, meta.getSubjectTypes().get(0));
assertEquals(SubjectType.PUBLIC, meta.getSubjectTypes().get(1));
assertEquals(jwkSetURI.toString(), meta.getJWKSetURI().toString());
assertEquals("https://c2id.com/authz", meta.getAuthorizationEndpointURI().toString());