use of io.pivotal.cla.service.github.CurrentUserRequest in project pivotal-cla by pivotalsoftware.
the class AuthenticationTests method authenticateAdmin.
@Test
public void authenticateAdmin() throws Exception {
User user = WithAdminUserFactory.create();
when(mockGitHub.getCurrentUser(any(CurrentUserRequest.class))).thenReturn(user);
AdminLinkClaPage admin = AdminLinkClaPage.to(driver);
admin.assertAt();
ArgumentCaptor<CurrentUserRequest> userCaptor = ArgumentCaptor.forClass(CurrentUserRequest.class);
verify(mockGitHub).getCurrentUser(userCaptor.capture());
CurrentUserRequest userRequest = userCaptor.getValue();
OAuthAccessTokenParams oauthParams = userRequest.getOauthParams();
assertThat(userRequest.isRequestAdminAccess()).isTrue();
assertThat(oauthParams.getCallbackUrl()).isEqualTo("https://localhost/login/oauth2/github");
assertThat(oauthParams.getCode()).isEqualTo("abc");
}
use of io.pivotal.cla.service.github.CurrentUserRequest in project pivotal-cla by pivotalsoftware.
the class AuthenticationTests method authenticateUser.
@Test
public void authenticateUser() throws Exception {
User user = WithSigningUserFactory.create();
when(mockClaRepository.findByNameAndPrimaryTrue(cla.getName())).thenReturn(cla);
when(mockGitHub.getCurrentUser(any(CurrentUserRequest.class))).thenReturn(user);
SignClaPage claPage = SignClaPage.go(driver, cla.getName());
claPage.assertAt();
ArgumentCaptor<CurrentUserRequest> userCaptor = ArgumentCaptor.forClass(CurrentUserRequest.class);
verify(mockGitHub).getCurrentUser(userCaptor.capture());
CurrentUserRequest userRequest = userCaptor.getValue();
OAuthAccessTokenParams oauthParams = userRequest.getOauthParams();
assertThat(userRequest.isRequestAdminAccess()).isFalse();
assertThat(oauthParams.getCallbackUrl()).isEqualTo("https://localhost/login/oauth2/github");
assertThat(oauthParams.getCode()).isEqualTo("abc");
}
use of io.pivotal.cla.service.github.CurrentUserRequest in project pivotal-cla by pivotalsoftware.
the class AuthenticationTests method userUrlWithAdminUserThenAdminUrl.
@SuppressWarnings("unchecked")
@Test
public void userUrlWithAdminUserThenAdminUrl() throws Exception {
User currentUser = WithAdminUserFactory.create();
currentUser.setAdmin(false);
when(mockClaRepository.findByNameAndPrimaryTrue(cla.getName())).thenReturn(cla);
when(mockGitHub.getCurrentUser(any(CurrentUserRequest.class))).thenAnswer(new Answer<User>() {
@Override
public User answer(InvocationOnMock invocation) throws Throwable {
CurrentUserRequest request = invocation.getArgumentAt(0, CurrentUserRequest.class);
User currentUser = WithAdminUserFactory.create();
currentUser.setAdmin(request.isRequestAdminAccess());
return currentUser;
}
});
when(mockIndividualSignatureRepository.findByEmailIn(anySet())).thenReturn(Collections.emptyList());
SignClaPage signClaPage = SignClaPage.go(driver, cla.getName());
signClaPage.assertAt();
when(mockClaRepository.findAll()).thenReturn(Arrays.asList(cla));
when(mockGitHub.findRepositoryNamesWithAdminPermission(anyString())).thenReturn(Arrays.asList("test/this"));
AdminLinkClaPage admin = AdminLinkClaPage.to(driver);
admin.assertAt();
ArgumentCaptor<CurrentUserRequest> userCaptor = ArgumentCaptor.forClass(CurrentUserRequest.class);
verify(mockGitHub, times(2)).getCurrentUser(userCaptor.capture());
assertThat(userCaptor.getAllValues()).extracting(CurrentUserRequest::isRequestAdminAccess).containsOnly(false, true);
}
use of io.pivotal.cla.service.github.CurrentUserRequest in project pivotal-cla by pivotalsoftware.
the class OAuthController method oauth.
@RequestMapping("/login/oauth2/github")
public void oauth(ImportedSignaturesSessionAttr importedSignaturesAttr, HttpServletRequest request, HttpServletResponse response, @RequestParam String code, @RequestParam String state) throws Exception {
String actualState = (String) request.getSession().getAttribute("state");
if (actualState == null || !actualState.equals(state)) {
throw new InvalidSecretState();
}
boolean admin = GitHubAuthenticationEntryPoint.isAdmin(state);
OAuthAccessTokenParams params = new OAuthAccessTokenParams();
params.setCallbackUrl(UrlBuilder.fromRequest(request).callbackUrl());
params.setCode(code);
params.setState(actualState);
CurrentUserRequest userRequest = new CurrentUserRequest();
userRequest.setOauthParams(params);
userRequest.setRequestAdminAccess(admin);
User user = gitHub.getCurrentUser(userRequest);
User existingUser = users.findOne(user.getGitHubLogin());
boolean isNewUser = existingUser == null;
users.save(user);
Authentication authentication = Login.loginAs(user);
if (isNewUser) {
List<IndividualSignature> individualSignatures = individual.findSignaturesFor(new PageRequest(0, 1), user);
boolean signed = !individualSignatures.isEmpty();
if (!signed) {
List<String> organizations = gitHub.getOrganizations(user.getGitHubLogin());
signed = !corporate.findSignatures(new PageRequest(0, 1), organizations, user.getEmails()).isEmpty();
}
if (signed) {
importedSignaturesAttr.setValue(true);
}
}
success.onAuthenticationSuccess(request, response, authentication);
}
Aggregations