Package org.springframework.security.oauth2.provider.vote

Source Code of org.springframework.security.oauth2.provider.vote.ClientScopeVoterTests

package org.springframework.security.oauth2.provider.vote;

import static org.junit.Assert.assertEquals;

import java.util.Arrays;
import java.util.Collections;

import org.junit.Before;
import org.junit.Test;
import org.springframework.security.access.AccessDecisionVoter;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.access.ConfigAttribute;
import org.springframework.security.access.SecurityConfig;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.oauth2.provider.AuthorizationRequest;
import org.springframework.security.oauth2.provider.OAuth2Authentication;
import org.springframework.security.oauth2.provider.client.BaseClientDetails;
import org.springframework.security.oauth2.provider.client.InMemoryClientDetailsService;

public class ClientScopeVoterTests {

  private ClientScopeVoter voter = new ClientScopeVoter();

  private Authentication userAuthentication = new UsernamePasswordAuthenticationToken("user", "password",
      AuthorityUtils.commaSeparatedStringToAuthorityList("read,write"));

  private OAuth2Authentication authentication;

  private BaseClientDetails client;

  @Before
  public void init() {
    AuthorizationRequest authorizationRequest = new AuthorizationRequest();
    authorizationRequest.setClientId("client");
    authorizationRequest.setScope(Arrays.asList("read", "write"));
    authentication = new OAuth2Authentication(authorizationRequest.createOAuth2Request(), userAuthentication);
    InMemoryClientDetailsService clientDetailsService = new InMemoryClientDetailsService();
    client = new BaseClientDetails("client", "source", "read,write", "authorization_code,client_credentials",
        "read");
    clientDetailsService.setClientDetailsStore(Collections.singletonMap("client", client));
    voter.setClientDetailsService(clientDetailsService);
  }

  @Test
  public void testAccessGranted() {
    assertEquals(
        AccessDecisionVoter.ACCESS_GRANTED,
        voter.vote(authentication, null,
            Arrays.<ConfigAttribute> asList(new SecurityConfig("CLIENT_HAS_SCOPE"))));
  }

  @Test(expected=AccessDeniedException.class)
  public void testAccessDenied() {
    client.setScope(Arrays.asList("none"));
    assertEquals(
        AccessDecisionVoter.ACCESS_DENIED,
        voter.vote(authentication, null,
            Arrays.<ConfigAttribute> asList(new SecurityConfig("CLIENT_HAS_SCOPE"))));
  }

  @Test
  public void testAccessDeniedNoException() {
    voter.setThrowException(false);
    client.setScope(Arrays.asList("none"));
    assertEquals(
        AccessDecisionVoter.ACCESS_DENIED,
        voter.vote(authentication, null,
            Arrays.<ConfigAttribute> asList(new SecurityConfig("CLIENT_HAS_SCOPE"))));
  }

}
TOP

Related Classes of org.springframework.security.oauth2.provider.vote.ClientScopeVoterTests

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.