package sparklr.common;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import org.junit.Test;
import org.springframework.http.HttpHeaders;
import org.springframework.security.oauth2.client.resource.UserRedirectRequiredException;
import org.springframework.security.oauth2.client.test.OAuth2ContextConfiguration;
import org.springframework.security.oauth2.client.token.grant.implicit.ImplicitResourceDetails;
import org.springframework.security.oauth2.common.util.OAuth2Utils;
/**
* @author Ryan Heaton
* @author Dave Syer
*/
public abstract class AbstractImplicitProviderTests extends AbstractIntegrationTests {
@Test
@OAuth2ContextConfiguration(resource = NonAutoApproveImplicit.class, initialize = false)
public void testPostForNonAutomaticApprovalToken() throws Exception {
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", getBasicAuthentication());
context.getAccessTokenRequest().setHeaders(headers);
try {
assertNotNull(context.getAccessToken());
fail("Expected UserRedirectRequiredException");
}
catch (UserRedirectRequiredException e) {
// ignore
}
// add user approval parameter for the second request
context.getAccessTokenRequest().add(OAuth2Utils.USER_OAUTH_APPROVAL, "true");
context.getAccessTokenRequest().add("scope.read", "true");
assertNotNull(context.getAccessToken());
}
static class NonAutoApproveImplicit extends ImplicitResourceDetails {
public NonAutoApproveImplicit(Object target) {
super();
setClientId("my-trusted-client");
setId(getClientId());
setPreEstablishedRedirectUri("http://anywhere");
}
}
}