package org.xdi.oxauth.ws.rs.uma;
import org.jboss.resteasy.client.ClientResponseFailure;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import org.xdi.oxauth.BaseTest;
import org.xdi.oxauth.client.uma.RptAuthorizationRequestService;
import org.xdi.oxauth.client.uma.RptStatusService;
import org.xdi.oxauth.client.uma.UmaClientFactory;
import org.xdi.oxauth.client.uma.wrapper.UmaClient;
import org.xdi.oxauth.model.uma.RptAuthorizationRequest;
import org.xdi.oxauth.model.uma.RptAuthorizationResponse;
import org.xdi.oxauth.model.uma.RptIntrospectionResponse;
import org.xdi.oxauth.model.uma.UmaConfiguration;
import org.xdi.oxauth.model.uma.UmaTestUtil;
import org.xdi.oxauth.model.uma.wrapper.Token;
import java.util.Arrays;
import java.util.List;
/**
* @author Yuriy Zabrovarnyy
* @version 0.9, 14/04/2015
*/
public class TrustElevationHttpTest extends BaseTest {
protected UmaConfiguration metadataConfiguration;
protected ObtainRptTokenFlowHttpTest umaObtainRptTokenFlowHttpTest;
protected RegisterResourceSetFlowHttpTest umaRegisterResourceSetFlowHttpTest;
protected RegisterResourceSetPermissionFlowHttpTest umaRegisterResourceSetPermissionFlowHttpTest;
protected RptStatusService rptStatusService;
protected RptAuthorizationRequestService rptPermissionAuthorizationService;
protected Token m_aat;
protected Token m_pat;
@Test
@Parameters({"umaMetaDataUrl", "umaAmHost",
"umaPatClientId", "umaPatClientSecret",
"umaAatClientId", "umaAatClientSecret"
})
public void trustElevation(final String umaMetaDataUrl, final String umaAmHost,
final String umaPatClientId, final String umaPatClientSecret,
final String umaAatClientId, final String umaAatClientSecret
) throws Exception {
this.metadataConfiguration = UmaClientFactory.instance().createMetaDataConfigurationService(umaMetaDataUrl).getMetadataConfiguration();
UmaTestUtil.assert_(this.metadataConfiguration);
this.umaObtainRptTokenFlowHttpTest = new ObtainRptTokenFlowHttpTest(this.metadataConfiguration);
this.umaRegisterResourceSetFlowHttpTest = new RegisterResourceSetFlowHttpTest(this.metadataConfiguration);
this.umaRegisterResourceSetPermissionFlowHttpTest = new RegisterResourceSetPermissionFlowHttpTest(this.metadataConfiguration);
this.rptStatusService = UmaClientFactory.instance().createRptStatusService(metadataConfiguration);
this.rptPermissionAuthorizationService = UmaClientFactory.instance().createAuthorizationRequestService(metadataConfiguration);
m_pat = UmaClient.requestPat(tokenEndpoint, umaPatClientId, umaPatClientSecret);
m_aat = UmaClient.requestAat(tokenEndpoint, umaAatClientId, umaAatClientSecret);
UmaTestUtil.assert_(m_pat);
UmaTestUtil.assert_(m_aat);
final List<String> rsScopes = Arrays.asList("http://gluu.example.com/dev/scopes/view", "http://gluu.example.com/dev/scopes/all");
this.umaRegisterResourceSetFlowHttpTest.m_pat = m_pat;
final String resourceId = this.umaRegisterResourceSetFlowHttpTest.registerResourceSet(
rsScopes);
this.umaObtainRptTokenFlowHttpTest.m_aat = this.m_aat;
this.umaObtainRptTokenFlowHttpTest.testObtainRptTokenFlow(umaAmHost);
this.umaRegisterResourceSetPermissionFlowHttpTest.umaRegisterResourceSetFlowHttpTest = umaRegisterResourceSetFlowHttpTest;
this.umaRegisterResourceSetPermissionFlowHttpTest.registerResourceSetPermission(umaAmHost, resourceId, rsScopes);
RptIntrospectionResponse rptStatus = this.rptStatusService.requestRptStatus("Bearer " + m_pat.getAccessToken(),
this.umaObtainRptTokenFlowHttpTest.rptToken, "");
RptAuthorizationRequest rptAuthorizationRequest = new RptAuthorizationRequest(this.umaObtainRptTokenFlowHttpTest.rptToken, umaRegisterResourceSetPermissionFlowHttpTest.ticketForFullAccess);
try {
RptAuthorizationResponse authorizationResponse = this.rptPermissionAuthorizationService.requestRptPermissionAuthorization(
"Bearer " + m_aat.getAccessToken(), umaAmHost, rptAuthorizationRequest);
} catch (ClientResponseFailure ex) {
System.err.println(ex.getResponse().getEntity(String.class));
throw ex;
}
rptStatus = this.rptStatusService.requestRptStatus("Bearer " + m_pat.getAccessToken(),
this.umaObtainRptTokenFlowHttpTest.rptToken, "");
}
}