package org.molgenis.security.google; import com.google.api.client.googleapis.auth.oauth2.GooglePublicKeysManager; import org.molgenis.auth.GroupMemberFactory; import org.molgenis.auth.UserFactory; import org.molgenis.data.DataService; import org.molgenis.data.settings.AppSettings; import org.molgenis.security.core.token.UnknownTokenException; import org.molgenis.security.user.UserDetailsService; import org.springframework.security.authentication.AuthenticationServiceException; import org.springframework.security.core.AuthenticationException; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class GoogleAuthenticationProcessingFilterTest { private GoogleAuthenticationProcessingFilter googleAuthenticationProcessingFilter; private AppSettings appSettings; private HttpServletRequest request; private HttpServletResponse response; @BeforeMethod public void setUp() { appSettings = mock(AppSettings.class); UserDetailsService userDetailsService = mock(UserDetailsService.class); DataService dataService = mock(DataService.class); GooglePublicKeysManager googlePublicKeysManager = mock(GooglePublicKeysManager.class); UserFactory userFactory = mock(UserFactory.class); GroupMemberFactory groupMemberFactory = mock(GroupMemberFactory.class); googleAuthenticationProcessingFilter = new GoogleAuthenticationProcessingFilter(googlePublicKeysManager, dataService, userDetailsService, appSettings, userFactory, groupMemberFactory); request = mock(HttpServletRequest.class); response = mock(HttpServletResponse.class); } @Test(expectedExceptions = NullPointerException.class) public void GoogleAuthenticationProcessingFilter() { new GoogleAuthenticationProcessingFilter(null, null, null, null, null, null); } @Test(expectedExceptions = AuthenticationServiceException.class) public void attemptAuthenticationGoogleSignInDisabled() throws AuthenticationException, IOException, ServletException { when(appSettings.getGoogleSignIn()).thenReturn(false); googleAuthenticationProcessingFilter.attemptAuthentication(request, response); } @Test(expectedExceptions = UnknownTokenException.class) public void attemptAuthenticationMissingToken() throws AuthenticationException, IOException, ServletException { when(appSettings.getGoogleSignIn()).thenReturn(true); when(request.getParameter(GoogleAuthenticationProcessingFilter.PARAM_ID_TOKEN)).thenReturn(null); googleAuthenticationProcessingFilter.attemptAuthentication(request, response); } }