From fc04af6a6b93dc38034c8bbbec04f5aec3368f2c Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Mon, 31 Jan 2022 12:36:22 +0100 Subject: [PATCH] [#141] improved tests --- .../nivio/security/CustomOAuth2User.java | 2 +- .../security/CustomOAuth2UserService.java | 10 ++--- .../Oauth2LoginEventAndListenerTest.java | 43 +++++++++++++++++-- 3 files changed, 43 insertions(+), 12 deletions(-) diff --git a/src/main/java/de/bonndan/nivio/security/CustomOAuth2User.java b/src/main/java/de/bonndan/nivio/security/CustomOAuth2User.java index d0b1aaa6e..044c63dc7 100644 --- a/src/main/java/de/bonndan/nivio/security/CustomOAuth2User.java +++ b/src/main/java/de/bonndan/nivio/security/CustomOAuth2User.java @@ -35,7 +35,7 @@ public CustomOAuth2User(@NonNull final String externalId, this.alias = Objects.requireNonNull(alias, "alias must not be null"); this.attributes = Objects.requireNonNull(attributes, "attributes must not be null"); this.authorities = Objects.requireNonNull(authorities, "authorities must not be null"); - this.idProvider = Objects.requireNonNull(idProvider, "idp must not be null"); + this.idProvider = Objects.requireNonNull(idProvider, "idProvider must not be null"); this.name = name; this.avatarUrl = avatarUrl; diff --git a/src/main/java/de/bonndan/nivio/security/CustomOAuth2UserService.java b/src/main/java/de/bonndan/nivio/security/CustomOAuth2UserService.java index d430d6dd4..41421a8ac 100644 --- a/src/main/java/de/bonndan/nivio/security/CustomOAuth2UserService.java +++ b/src/main/java/de/bonndan/nivio/security/CustomOAuth2UserService.java @@ -31,13 +31,9 @@ public CustomOAuth2UserService(AuthConfigProperties authConfigProperties, Applic @Override public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException { OAuth2User user = super.loadUser(userRequest); - try { - CustomOAuth2User customOAuth2User = fromGitHubUser(user, authConfigProperties.getGithubAliasAttribute(), authConfigProperties.getGithubNameAttribute()); - applicationEventPublisher.publishEvent(new OAuth2LoginEvent(customOAuth2User)); - return customOAuth2User; - } catch (NullPointerException e) { - throw new OAuth2AuthenticationException(String.format("Failed to create custom user: %s", e.getMessage())); - } + CustomOAuth2User customOAuth2User = fromGitHubUser(user, authConfigProperties.getGithubAliasAttribute(), authConfigProperties.getGithubNameAttribute()); + applicationEventPublisher.publishEvent(new OAuth2LoginEvent(customOAuth2User)); + return customOAuth2User; } /** diff --git a/src/test/java/de/bonndan/nivio/security/Oauth2LoginEventAndListenerTest.java b/src/test/java/de/bonndan/nivio/security/Oauth2LoginEventAndListenerTest.java index 248e544a7..5f45d62f6 100644 --- a/src/test/java/de/bonndan/nivio/security/Oauth2LoginEventAndListenerTest.java +++ b/src/test/java/de/bonndan/nivio/security/Oauth2LoginEventAndListenerTest.java @@ -1,7 +1,10 @@ package de.bonndan.nivio.security; +import de.bonndan.nivio.appuser.AppUser; import de.bonndan.nivio.appuser.AppUserRepository; +import de.bonndan.nivio.appuser.AppUserRole; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; @@ -12,7 +15,7 @@ import java.util.List; import java.util.Map; -import static org.assertj.core.api.AssertionsForClassTypes.assertThat; +import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.*; @DataJpaTest @@ -53,17 +56,49 @@ public void setup() { } @Test - void onLogin() { + @DisplayName("Test if user is not present before login") + void noExistingUser() { + + // given + var user = appUserRepository.findByExternalIdAndIdProvider(customOAuth2User.getExternalId(), customOAuth2User.getIdProvider()); + + user.ifPresent(user1 -> appUserRepository.delete(user1)); + + // when + oauth2LoginEventListener.onLogin(oAuth2LoginEvent); + user = appUserRepository.findByExternalIdAndIdProvider(customOAuth2User.getExternalId(), customOAuth2User.getIdProvider()); + + // then + assertThat(user).isPresent(); + + } + + @Test + @DisplayName("Test if user is present before login") + void existingUser() { + + // given + var user = appUserRepository.findByExternalIdAndIdProvider(customOAuth2User.getExternalId(), customOAuth2User.getIdProvider()); + + if (user.isEmpty()) { + AppUser appUser = new AppUser(); + appUser.setExternalId(externalId); + appUser.setIdProvider("github"); + appUser.setAlias(login); + appUser.setAppUserRole(AppUserRole.USER); + appUserRepository.save(appUser); + } // when oauth2LoginEventListener.onLogin(oAuth2LoginEvent); + user = appUserRepository.findByExternalIdAndIdProvider(customOAuth2User.getExternalId(), customOAuth2User.getIdProvider()); // then - assertThat(appUserRepository.findByExternalIdAndIdProvider(customOAuth2User.getExternalId(), customOAuth2User.getIdProvider()).isPresent()); - assertThat(appUserRepository.findByExternalIdAndIdProvider(customOAuth2User.getExternalId(), customOAuth2User.getIdProvider()).equals(customOAuth2User)); + assertThat(user).isPresent(); } + @Test void getSource() {