/*
* oxAuth is available under the MIT License (2008). See http://opensource.org/licenses/MIT for full text.
*
* Copyright (c) 2014, Gluu
*/
package org.xdi.oxauth.interop;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import static org.xdi.oxauth.model.register.RegisterRequestParam.APPLICATION_TYPE;
import static org.xdi.oxauth.model.register.RegisterRequestParam.CLIENT_NAME;
import static org.xdi.oxauth.model.register.RegisterRequestParam.CONTACTS;
import static org.xdi.oxauth.model.register.RegisterRequestParam.ID_TOKEN_SIGNED_RESPONSE_ALG;
import static org.xdi.oxauth.model.register.RegisterRequestParam.JWKS_URI;
import static org.xdi.oxauth.model.register.RegisterRequestParam.LOGO_URI;
import static org.xdi.oxauth.model.register.RegisterRequestParam.POLICY_URI;
import static org.xdi.oxauth.model.register.RegisterRequestParam.REQUEST_OBJECT_SIGNING_ALG;
import static org.xdi.oxauth.model.register.RegisterRequestParam.REQUEST_URIS;
import static org.xdi.oxauth.model.register.RegisterRequestParam.SCOPES;
import static org.xdi.oxauth.model.register.RegisterRequestParam.SECTOR_IDENTIFIER_URI;
import static org.xdi.oxauth.model.register.RegisterRequestParam.SUBJECT_TYPE;
import java.util.Arrays;
import java.util.List;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import org.xdi.oxauth.BaseTest;
import org.xdi.oxauth.client.RegisterClient;
import org.xdi.oxauth.client.RegisterRequest;
import org.xdi.oxauth.client.RegisterResponse;
import org.xdi.oxauth.model.common.AuthenticationMethod;
import org.xdi.oxauth.model.common.ResponseType;
import org.xdi.oxauth.model.common.SubjectType;
import org.xdi.oxauth.model.crypto.signature.SignatureAlgorithm;
import org.xdi.oxauth.model.register.ApplicationType;
import org.xdi.oxauth.model.util.StringUtils;
/**
* OC5:FeatureTest-Support Registration Read
*
* @author Javier Rojas Blum
* @version 1.0, 07/21/2014
*/
public class SupportRegistrationRead extends BaseTest {
@Parameters({"redirectUris", "redirectUri", "userId", "userSecret", "sectorIdentifierUri"})
@Test
public void supportRegistrationRead(
final String redirectUris, final String redirectUri, final String userId, final String userSecret,
final String sectorIdentifierUri) throws Exception {
showTitle("OC5:FeatureTest-Support Registration Read");
List<ResponseType> responseTypes = Arrays.asList(ResponseType.CODE);
// 1. Register client
RegisterRequest registerRequest1 = new RegisterRequest(ApplicationType.WEB, "oxAuth test app",
StringUtils.spaceSeparatedToList(redirectUris));
registerRequest1.setContacts(Arrays.asList("javier@gluu.org", "javier.rojas.blum@gmail.com"));
registerRequest1.setLogoUri("http://www.gluu.org/wp-content/themes/gluursn/images/logo.png");
registerRequest1.setTokenEndpointAuthMethod(AuthenticationMethod.CLIENT_SECRET_JWT);
registerRequest1.setPolicyUri("http://www.gluu.org/policy");
registerRequest1.setJwksUri("http://www.gluu.org/jwks");
registerRequest1.setSectorIdentifierUri(sectorIdentifierUri);
registerRequest1.setSubjectType(SubjectType.PUBLIC);
registerRequest1.setRequestObjectSigningAlg(SignatureAlgorithm.RS256);
registerRequest1.setRequestUris(Arrays.asList("http://www.gluu.org/request"));
RegisterClient registerClient1 = new RegisterClient(registrationEndpoint);
registerClient1.setRequest(registerRequest1);
RegisterResponse registerResponse1 = registerClient1.exec();
showClient(registerClient1);
assertEquals(registerResponse1.getStatus(), 200, "Unexpected response code: " + registerResponse1.getEntity());
assertNotNull(registerResponse1.getClientId());
assertNotNull(registerResponse1.getClientSecret());
assertNotNull(registerResponse1.getRegistrationAccessToken());
assertNotNull(registerResponse1.getClientSecretExpiresAt());
assertNotNull(registerResponse1.getClaims().get(SCOPES.toString()));
String clientId = registerResponse1.getClientId();
String registrationAccessToken = registerResponse1.getRegistrationAccessToken();
String registrationClientUri = registerResponse1.getRegistrationClientUri();
// 2. Client Read
RegisterRequest registerRequest2 = new RegisterRequest(registrationAccessToken);
RegisterClient registerClient2 = new RegisterClient(registrationClientUri);
registerClient2.setRequest(registerRequest2);
RegisterResponse registerResponse2 = registerClient2.exec();
showClient(registerClient2);
assertEquals(registerResponse2.getStatus(), 200, "Unexpected response code: " + registerResponse2.getEntity());
assertNotNull(registerResponse2.getClientId());
assertNotNull(registerResponse2.getClientSecret());
assertNotNull(registerResponse2.getRegistrationAccessToken());
assertNotNull(registerResponse2.getRegistrationClientUri());
assertNotNull(registerResponse2.getClientSecretExpiresAt());
assertNotNull(registerResponse2.getClaims().get(APPLICATION_TYPE.toString()));
assertNotNull(registerResponse2.getClaims().get(POLICY_URI.toString()));
assertNotNull(registerResponse2.getClaims().get(REQUEST_OBJECT_SIGNING_ALG.toString()));
assertNotNull(registerResponse2.getClaims().get(CONTACTS.toString()));
assertNotNull(registerResponse2.getClaims().get(SECTOR_IDENTIFIER_URI.toString()));
assertNotNull(registerResponse2.getClaims().get(SUBJECT_TYPE.toString()));
assertNotNull(registerResponse2.getClaims().get(ID_TOKEN_SIGNED_RESPONSE_ALG.toString()));
assertNotNull(registerResponse2.getClaims().get(JWKS_URI.toString()));
assertNotNull(registerResponse2.getClaims().get(CLIENT_NAME.toString()));
assertNotNull(registerResponse2.getClaims().get(LOGO_URI.toString()));
assertNotNull(registerResponse2.getClaims().get(REQUEST_URIS.toString()));
assertNotNull(registerResponse2.getClaims().get("scopes"));
}
}