package org.xdi.oxauth.uma.ws.rs;
import static org.testng.Assert.assertNotNull;
import java.net.URI;
import java.util.Arrays;
import org.jboss.arquillian.test.api.ArquillianResource;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import org.xdi.oxauth.BaseTest;
import org.xdi.oxauth.model.uma.ClaimToken;
import org.xdi.oxauth.model.uma.ClaimTokenList;
import org.xdi.oxauth.model.uma.PermissionTicket;
import org.xdi.oxauth.model.uma.RPTResponse;
import org.xdi.oxauth.model.uma.ResourceSetResponse;
import org.xdi.oxauth.model.uma.RptAuthorizationRequest;
import org.xdi.oxauth.model.uma.RptAuthorizationResponse;
import org.xdi.oxauth.model.uma.TUma;
import org.xdi.oxauth.model.uma.UmaPermission;
import org.xdi.oxauth.model.uma.UmaTestUtil;
import org.xdi.oxauth.model.uma.wrapper.Token;
/**
* @author Yuriy Zabrovarnyy
* @version 0.9, 14/04/2015
*/
public class TrustElevationWSTest extends BaseTest {
@ArquillianResource
private URI url;
private static Token pat;
private static Token aat;
private static RPTResponse rpt;
private static ResourceSetResponse resourceSet;
private static PermissionTicket ticket;
@Test
@Parameters({ "authorizePath", "tokenPath", "umaUserId", "umaUserSecret", "umaPatClientId", "umaPatClientSecret",
"umaAatClientId", "umaAatClientSecret", "umaRedirectUri", "umaRptPath", "umaAmHost",
"umaRegisterResourcePath" })
public void init(String authorizePath, String tokenPath, String umaUserId, String umaUserSecret,
String umaPatClientId, String umaPatClientSecret, String umaAatClientId, String umaAatClientSecret,
String umaRedirectUri, String umaRptPath, String umaAmHost, String umaRegisterResourcePath) {
pat = TUma.requestPat(url, authorizePath, tokenPath, umaUserId, umaUserSecret, umaPatClientId,
umaPatClientSecret, umaRedirectUri);
aat = TUma.requestAat(url, authorizePath, tokenPath, umaUserId, umaUserSecret, umaAatClientId,
umaAatClientSecret, umaRedirectUri);
rpt = TUma.requestRpt(url, aat, umaRptPath, umaAmHost);
UmaTestUtil.assert_(pat);
UmaTestUtil.assert_(aat);
UmaTestUtil.assert_(rpt);
resourceSet = TUma.registerResourceSet(url, pat, umaRegisterResourcePath, UmaTestUtil.createResourceSet());
UmaTestUtil.assert_(resourceSet);
}
@Test(dependsOnMethods = { "init" })
@Parameters({ "umaAmHost", "umaHost", "umaPermissionPath" })
public void registerPermissionForRpt(final String umaAmHost, String umaHost, String umaPermissionPath)
throws Exception {
final UmaPermission r = new UmaPermission();
r.setResourceSetId(resourceSet.getId());
r.setScopes(Arrays.asList("http://photoz.example.com/dev/scopes/view"));
ticket = TUma.registerPermission(url, pat, umaAmHost, umaHost, r, umaPermissionPath);
UmaTestUtil.assert_(ticket);
}
@Test(dependsOnMethods = { "registerPermissionForRpt" })
@Parameters({ "umaPermissionAuthorizationPath", "umaAmHost" })
public void authorizePermission(String umaPermissionAuthorizationPath, String umaAmHost) {
final RptAuthorizationRequest request = new RptAuthorizationRequest();
request.setRpt(rpt.getRpt());
request.setTicket(ticket.getTicket());
request.setClaims(new ClaimTokenList().addToken(new ClaimToken("clientClaim", "clientValue")));
final RptAuthorizationResponse response = TUma.requestAuthorization(url, umaPermissionAuthorizationPath,
umaAmHost, aat, request);
assertNotNull(response, "Token response status is null");
// final RptIntrospectionResponse status = TUma.requestRptStatus(this,
// umaRptStatusPath, umaAmHost, m_pat, m_rpt.getRpt());
// UmaTestUtil.assert_(status);
}
// use normal test method instead of @AfterClass because it will not work
// with ResourceRequestEnvironment seam class which is used
// behind TUma wrapper.
@Test(dependsOnMethods = { "authorizePermission" })
@Parameters({ "umaRegisterResourcePath" })
public void cleanUp(String umaRegisterResourcePath) {
if (resourceSet != null) {
TUma.deleteResourceSet(url, pat, umaRegisterResourcePath, resourceSet.getId());
}
}
}