@Test public void removeConnection() throws Exception { ConnectionFactoryRegistry connectionFactoryLocator = new ConnectionFactoryRegistry(); ConnectionFactory<TestApi2> connectionFactory = new StubOAuth2ConnectionFactory("clientId", "clientSecret", THROW_EXCEPTION); connectionFactoryLocator.addConnectionFactory(connectionFactory); StubConnectionRepository connectionRepository = new StubConnectionRepository(); connectionRepository.addConnection( connectionFactory.createConnection( new ConnectionData( "oauth2Provider", "provider1User1", null, null, null, null, null, null, null))); connectionRepository.addConnection( connectionFactory.createConnection( new ConnectionData( "oauth2Provider", "provider1User2", null, null, null, null, null, null, null))); assertEquals(2, connectionRepository.findConnections("oauth2Provider").size()); ConnectController connectController = new ConnectController(connectionFactoryLocator, connectionRepository); List<DisconnectInterceptor<?>> interceptors = getDisconnectInterceptor(); connectController.setDisconnectInterceptors(interceptors); MockMvc mockMvc = standaloneSetup(connectController).build(); mockMvc .perform(delete("/connect/oauth2Provider/provider1User1")) .andExpect(redirectedUrl("/connect/oauth2Provider")); assertEquals(1, connectionRepository.findConnections("oauth2Provider").size()); assertFalse(((TestConnectInterceptor<?>) (interceptors.get(0))).preDisconnectInvoked); assertFalse(((TestConnectInterceptor<?>) (interceptors.get(0))).postDisconnectInvoked); assertNull(((TestConnectInterceptor<?>) (interceptors.get(0))).connectionFactory); assertTrue(((TestConnectInterceptor<?>) (interceptors.get(1))).preDisconnectInvoked); assertTrue(((TestConnectInterceptor<?>) (interceptors.get(1))).postDisconnectInvoked); assertSame( connectionFactory, ((TestConnectInterceptor<?>) (interceptors.get(1))).connectionFactory); }
@Test public void oauth2Callback() throws Exception { ConnectionFactoryRegistry connectionFactoryLocator = new ConnectionFactoryRegistry(); ConnectionFactory<TestApi2> connectionFactory = new StubOAuth2ConnectionFactory("clientId", "clientSecret"); connectionFactoryLocator.addConnectionFactory(connectionFactory); StubConnectionRepository connectionRepository = new StubConnectionRepository(); ConnectController connectController = new ConnectController(connectionFactoryLocator, connectionRepository); List<ConnectInterceptor<?>> interceptors = getConnectInterceptor(); connectController.setConnectInterceptors(interceptors); connectController.afterPropertiesSet(); MockMvc mockMvc = standaloneSetup(connectController).build(); assertEquals(0, connectionRepository.findConnections("oauth2Provider").size()); mockMvc .perform(get("/connect/oauth2Provider").param("code", "oauth2Code")) .andExpect(redirectedUrl("/connect/oauth2Provider")); List<Connection<?>> connections = connectionRepository.findConnections("oauth2Provider"); assertEquals(1, connections.size()); assertEquals("oauth2Provider", connections.get(0).getKey().getProviderId()); // Check for postConnect() only. The preConnect() is only invoked during the initial portion of // the flow assertFalse(((TestConnectInterceptor<?>) (interceptors.get(0))).postConnectInvoked); TestConnectInterceptor<?> testInterceptor2 = (TestConnectInterceptor<?>) (interceptors.get(1)); assertTrue(testInterceptor2.postConnectInvoked); }
@Test public void oauth2ErrorCallback() throws Exception { ConnectionFactoryRegistry connectionFactoryLocator = new ConnectionFactoryRegistry(); ConnectionFactory<TestApi2> connectionFactory = new StubOAuth2ConnectionFactory("clientId", "clientSecret", THROW_EXCEPTION); connectionFactoryLocator.addConnectionFactory(connectionFactory); StubConnectionRepository connectionRepository = new StubConnectionRepository(); MockMvc mockMvc = standaloneSetup(new ConnectController(connectionFactoryLocator, connectionRepository)) .build(); assertEquals(0, connectionRepository.findConnections("oauth2Provider").size()); HashMap<String, String> expectedError = new HashMap<String, String>(); expectedError.put("error", "access_denied"); expectedError.put("errorDescription", "The user said no."); expectedError.put("errorUri", "http://provider.com/user/said/no"); mockMvc .perform( get("/connect/oauth2Provider") .param("error", "access_denied") .param("error_description", "The user said no.") .param("error_uri", "http://provider.com/user/said/no")) .andExpect(redirectedUrl("/connect/oauth2Provider")) .andExpect(request().sessionAttribute("social_authorization_error", notNullValue())) .andExpect(request().sessionAttribute("social_authorization_error", expectedError)); }
@Test public void oauth2Callback_exceptionWhileFetchingAccessToken() throws Exception { ConnectionFactoryRegistry connectionFactoryLocator = new ConnectionFactoryRegistry(); ConnectionFactory<TestApi2> connectionFactory = new StubOAuth2ConnectionFactory("clientId", "clientSecret", THROW_EXCEPTION); connectionFactoryLocator.addConnectionFactory(connectionFactory); StubConnectionRepository connectionRepository = new StubConnectionRepository(); MockMvc mockMvc = standaloneSetup(new ConnectController(connectionFactoryLocator, connectionRepository)) .build(); assertEquals(0, connectionRepository.findConnections("oauth2Provider").size()); mockMvc .perform(get("/connect/oauth2Provider").param("code", "oauth2Code")) .andExpect(redirectedUrl("/connect/oauth2Provider")) .andExpect(request().sessionAttribute("social_provider_error", notNullValue())); assertEquals(0, connectionRepository.findConnections("oauth2Provider").size()); }