package org.springframework.security.oauth2.provider; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import java.util.Arrays; import java.util.Collections; import org.codehaus.jackson.map.ObjectMapper; import org.junit.Test; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationDetails; import org.springframework.test.annotation.Rollback; import org.springframework.util.SerializationUtils; public class OAuth2AuthenticationTests { private OAuth2Request request = RequestTokenFactory.createOAuth2Request(null, "id", null, false, Collections.singleton("read"), null, null, null, null); private UsernamePasswordAuthenticationToken userAuthentication = new UsernamePasswordAuthenticationToken("foo", "bar", Collections.singleton(new SimpleGrantedAuthority("ROLE_USER"))); @Test @Rollback public void testIsAuthenticated() { request = RequestTokenFactory.createOAuth2Request("id", true, Collections.singleton("read")); OAuth2Authentication authentication = new OAuth2Authentication(request, userAuthentication); assertTrue(authentication.isAuthenticated()); } @Test public void testGetCredentials() { OAuth2Authentication authentication = new OAuth2Authentication(request, userAuthentication); assertEquals("", authentication.getCredentials()); } @Test public void testGetPrincipal() { OAuth2Authentication authentication = new OAuth2Authentication(request, userAuthentication); assertEquals(userAuthentication.getPrincipal(), authentication.getPrincipal()); } @Test public void testIsClientOnly() { OAuth2Authentication authentication = new OAuth2Authentication(request, null); assertTrue(authentication.isClientOnly()); } @Test public void testJsonSerialization() throws Exception { System.err .println(new ObjectMapper().writeValueAsString(new OAuth2Authentication(request, userAuthentication))); } @Test public void testSerialization() { OAuth2Authentication holder = new OAuth2Authentication( new AuthorizationRequest("client", Arrays.asList("read")).createOAuth2Request(), new UsernamePasswordAuthenticationToken("user", "pwd")); OAuth2Authentication other = (OAuth2Authentication) SerializationUtils.deserialize(SerializationUtils .serialize(holder)); assertEquals(holder, other); } @Test public void testSerializationWithDetails() { OAuth2Authentication holder = new OAuth2Authentication( new AuthorizationRequest("client", Arrays.asList("read")).createOAuth2Request(), new UsernamePasswordAuthenticationToken("user", "pwd")); holder.setDetails(new OAuth2AuthenticationDetails(new MockHttpServletRequest())); OAuth2Authentication other = (OAuth2Authentication) SerializationUtils.deserialize(SerializationUtils .serialize(holder)); assertEquals(holder, other); } // gh-573 @Test public void testEraseCredentialsUserAuthentication() { OAuth2Authentication authentication = new OAuth2Authentication(request, userAuthentication); authentication.eraseCredentials(); assertNull(authentication.getUserAuthentication().getCredentials()); } }