Search in sources :

Example 1 with BaseProtectedResourceDetails

use of org.springframework.security.oauth.consumer.BaseProtectedResourceDetails in project spring-security-oauth by spring-projects.

the class OAuthConsumerContextFilterTests method testDoFilter.

/**
	 * tests the filter.
	 */
@Test
public void testDoFilter() throws Exception {
    final OAuthRememberMeServices rememberMeServices = new NoOpOAuthRememberMeServices();
    final BaseProtectedResourceDetails resource = new BaseProtectedResourceDetails();
    resource.setId("dep1");
    OAuthConsumerContextFilter filter = new OAuthConsumerContextFilter() {

        @Override
        protected String getCallbackURL(HttpServletRequest request) {
            return "urn:callback";
        }

        @Override
        protected String getUserAuthorizationRedirectURL(ProtectedResourceDetails details, OAuthConsumerToken requestToken, String callbackURL) {
            return callbackURL + "&" + requestToken.getResourceId();
        }
    };
    filter.setRedirectStrategy(new RedirectStrategy() {

        public void sendRedirect(HttpServletRequest request, HttpServletResponse response, String url) throws IOException {
            response.sendRedirect(url);
        }
    });
    filter.setTokenServices(tokenServices);
    filter.setConsumerSupport(support);
    filter.setRememberMeServices(rememberMeServices);
    doThrow(new AccessTokenRequiredException(resource)).when(filterChain).doFilter(request, response);
    when(tokenServices.getToken("dep1")).thenReturn(null);
    when(request.getParameter("oauth_verifier")).thenReturn(null);
    when(response.encodeRedirectURL("urn:callback")).thenReturn("urn:callback?query");
    OAuthConsumerToken token = new OAuthConsumerToken();
    token.setAccessToken(false);
    token.setResourceId(resource.getId());
    when(support.getUnauthorizedRequestToken("dep1", "urn:callback?query")).thenReturn(token);
    filter.doFilter(request, response, filterChain);
    verify(filterChain).doFilter(request, response);
    verify(tokenServices).storeToken("dep1", token);
    verify(response).sendRedirect("urn:callback?query&dep1");
    verify(request, times(2)).setAttribute(anyString(), anyObject());
    reset(request, response, filterChain);
    doThrow(new AccessTokenRequiredException(resource)).when(filterChain).doFilter(request, response);
    when(tokenServices.getToken("dep1")).thenReturn(token);
    when(request.getParameter(OAuthProviderParameter.oauth_verifier.toString())).thenReturn("verifier");
    OAuthConsumerToken accessToken = new OAuthConsumerToken();
    when(support.getAccessToken(token, "verifier")).thenReturn(accessToken);
    when(response.isCommitted()).thenReturn(false);
    filter.doFilter(request, response, filterChain);
    verify(filterChain, times(2)).doFilter(request, response);
    verify(tokenServices).removeToken("dep1");
    verify(tokenServices).storeToken("dep1", accessToken);
    verify(request, times(2)).setAttribute(anyString(), anyObject());
}
Also used : HttpServletRequest(javax.servlet.http.HttpServletRequest) OAuthRememberMeServices(org.springframework.security.oauth.consumer.rememberme.OAuthRememberMeServices) NoOpOAuthRememberMeServices(org.springframework.security.oauth.consumer.rememberme.NoOpOAuthRememberMeServices) BaseProtectedResourceDetails(org.springframework.security.oauth.consumer.BaseProtectedResourceDetails) AccessTokenRequiredException(org.springframework.security.oauth.consumer.AccessTokenRequiredException) HttpServletResponse(javax.servlet.http.HttpServletResponse) NoOpOAuthRememberMeServices(org.springframework.security.oauth.consumer.rememberme.NoOpOAuthRememberMeServices) Matchers.anyString(org.mockito.Matchers.anyString) IOException(java.io.IOException) RedirectStrategy(org.springframework.security.web.RedirectStrategy) ProtectedResourceDetails(org.springframework.security.oauth.consumer.ProtectedResourceDetails) BaseProtectedResourceDetails(org.springframework.security.oauth.consumer.BaseProtectedResourceDetails) OAuthConsumerToken(org.springframework.security.oauth.consumer.OAuthConsumerToken) Test(org.junit.Test)

Aggregations

IOException (java.io.IOException)1 HttpServletRequest (javax.servlet.http.HttpServletRequest)1 HttpServletResponse (javax.servlet.http.HttpServletResponse)1 Test (org.junit.Test)1 Matchers.anyString (org.mockito.Matchers.anyString)1 AccessTokenRequiredException (org.springframework.security.oauth.consumer.AccessTokenRequiredException)1 BaseProtectedResourceDetails (org.springframework.security.oauth.consumer.BaseProtectedResourceDetails)1 OAuthConsumerToken (org.springframework.security.oauth.consumer.OAuthConsumerToken)1 ProtectedResourceDetails (org.springframework.security.oauth.consumer.ProtectedResourceDetails)1 NoOpOAuthRememberMeServices (org.springframework.security.oauth.consumer.rememberme.NoOpOAuthRememberMeServices)1 OAuthRememberMeServices (org.springframework.security.oauth.consumer.rememberme.OAuthRememberMeServices)1 RedirectStrategy (org.springframework.security.web.RedirectStrategy)1