package org.springframework.security.oauth2.provider.token.store; import static org.junit.Assert.assertEquals; import java.util.Date; import org.junit.Before; import org.junit.Test; import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken; import org.springframework.security.oauth2.provider.OAuth2Authentication; import org.springframework.security.oauth2.provider.RequestTokenFactory; import org.springframework.security.oauth2.provider.token.store.InMemoryTokenStore; /** * @author Dave Syer * */ public class InMemoryTokenStoreTests extends TokenStoreBaseTests { private InMemoryTokenStore tokenStore; @Override public InMemoryTokenStore getTokenStore() { return tokenStore; } @Before public void createStore() { tokenStore = new InMemoryTokenStore(); } @Test public void testTokenCountConsistency() throws Exception { for (int i = 0; i <= 10; i++) { OAuth2Authentication expectedAuthentication = new OAuth2Authentication(RequestTokenFactory.createOAuth2Request("id" + i, false), new TestAuthentication("test", false)); DefaultOAuth2AccessToken expectedOAuth2AccessToken = new DefaultOAuth2AccessToken("testToken" + i); expectedOAuth2AccessToken.setExpiration(new Date(System.currentTimeMillis() - 1000)); if (i > 1) { assertEquals(i, getTokenStore().getAccessTokenCount()); } getTokenStore().storeAccessToken(expectedOAuth2AccessToken, expectedAuthentication); } } @Test public void testTokenCountConsistentWithExpiryQueue() throws Exception { OAuth2Authentication expectedAuthentication = new OAuth2Authentication(RequestTokenFactory.createOAuth2Request("id", false), new TestAuthentication("test", false)); DefaultOAuth2AccessToken expectedOAuth2AccessToken = new DefaultOAuth2AccessToken("testToken"); expectedOAuth2AccessToken.setExpiration(new Date(System.currentTimeMillis()+10000)); for (int i = 0; i <= 10; i++) { getTokenStore().storeAccessToken(expectedOAuth2AccessToken, expectedAuthentication); assertEquals(getTokenStore().getAccessTokenCount(), getTokenStore().getExpiryTokenCount()); } } @Test public void testAutoFlush() throws Exception { getTokenStore().setFlushInterval(3); for (int i = 0; i <= 10; i++) { OAuth2Authentication expectedAuthentication = new OAuth2Authentication(RequestTokenFactory.createOAuth2Request("id" + i, false), new TestAuthentication("test", false)); DefaultOAuth2AccessToken expectedOAuth2AccessToken = new DefaultOAuth2AccessToken("testToken" + i); expectedOAuth2AccessToken.setExpiration(new Date(System.currentTimeMillis() - 1000)); if (i > 2) { assertEquals((i % 3 + 1), getTokenStore().getAccessTokenCount()); } getTokenStore().storeAccessToken(expectedOAuth2AccessToken, expectedAuthentication); } } }