Skip to content

Commit

Permalink
test: add unit tests for auth feature
Browse files Browse the repository at this point in the history
  • Loading branch information
m-rudyk committed Oct 23, 2023
1 parent 3de5d12 commit f557aa8
Show file tree
Hide file tree
Showing 3 changed files with 142 additions and 0 deletions.
39 changes: 39 additions & 0 deletions src/test/java/com/lpvs/entity/auth/MemberProfileTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/**
* Copyright (c) 2023, Samsung Electronics Co., Ltd. All rights reserved.
* <p>
* Use of this source code is governed by a MIT license that can be
* found in the LICENSE file.
*/

package com.lpvs.entity.auth;

import org.junit.jupiter.api.Test;

import com.lpvs.entity.LPVSMember;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class MemberProfileTest {

@Test
public void testConstructor() {
MemberProfile profile = new MemberProfile();
assertEquals(null, profile.getName());
assertEquals(null, profile.getEmail());
assertEquals(null, profile.getProvider());
assertEquals(null, profile.getNickname());
}

@Test
public void testToMember() {
MemberProfile profile = new MemberProfile();
profile.setName("John");
profile.setEmail("[email protected]");
profile.setProvider("OAuth2");
LPVSMember member = profile.toMember();

assertEquals("John", member.getName());
assertEquals("[email protected]", member.getEmail());
assertEquals("OAuth2", member.getProvider());
}
}
40 changes: 40 additions & 0 deletions src/test/java/com/lpvs/entity/auth/OAuthAttributesTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/**
* Copyright (c) 2023, Samsung Electronics Co., Ltd. All rights reserved.
* <p>
* Use of this source code is governed by a MIT license that can be
* found in the LICENSE file.
*/

package com.lpvs.entity.auth;

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;

import java.util.HashMap;
import java.util.Map;

public class OAuthAttributesTest {

@Test
public void testExtractOAuthAttributes() {
Map<String, Object> attributes = new HashMap<String, Object>() {{
put("name", "testName");
put("email", "testEmail");
}};;
MemberProfile profile = OAuthAttributes.extract("google", attributes);
assertEquals("testName", profile.getName());
assertEquals("testEmail", profile.getEmail());
}

@Test
public void testExtractOAuthAttributesUnknownProvider() {
Map<String, Object> attributes = new HashMap<String, Object>() {{
put("name", "testName");
put("email", "testEmail");
}};;
assertThrows(IllegalArgumentException.class, () -> {
OAuthAttributes.extract("unknown", attributes);
});
}
}
63 changes: 63 additions & 0 deletions src/test/java/com/lpvs/entity/auth/OAuthServiceTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package com.lpvs.entity.auth;

import com.lpvs.repository.LPVSMemberRepository;

import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.oauth2.client.registration.ClientRegistration;
import org.springframework.security.oauth2.client.userinfo.DefaultOAuth2UserService;
import org.springframework.security.oauth2.client.userinfo.OAuth2UserService;
import org.springframework.security.oauth2.client.userinfo.OAuth2UserRequest;
import org.springframework.security.oauth2.core.AuthorizationGrantType;
import org.springframework.security.oauth2.core.OAuth2AccessToken;
import org.springframework.security.oauth2.core.OAuth2AuthenticationException;
import org.springframework.security.oauth2.core.user.DefaultOAuth2User;
import org.springframework.security.oauth2.core.user.OAuth2User;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
import static org.mockito.Mockito.*;
import static org.junit.jupiter.api.Assertions.assertEquals;

public class OAuthServiceTest {

@Test
public void testLoadUser() throws OAuth2AuthenticationException {

// Create a mock OAuth2UserService and LPVSMemberRepository
OAuth2UserService delegate = mock(DefaultOAuth2UserService.class);
LPVSMemberRepository lpvsMemberRepository = mock(LPVSMemberRepository.class);

// Create a sample OAuth2UserRequest
ClientRegistration clientRegistration = ClientRegistration
.withRegistrationId("google")
.userInfoUri("https://example.com/userinfo")
.userNameAttributeName("email")
.authorizationGrantType(AuthorizationGrantType.PASSWORD)
.clientId("id")
.tokenUri("https://example.com/tokenuri")
.build();
OAuth2UserRequest userRequest = new OAuth2UserRequest(
clientRegistration,
new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER, "access-token", null, null));

Map<String, Object> attributes = new LinkedHashMap<>();
attributes.put("email", "testEmail");
attributes.put("name", "testName");
OAuth2User oAuth2User = new DefaultOAuth2User(Collections.singleton(new SimpleGrantedAuthority("USER")), attributes, "email");

// Mock the behavior of DefaultOAuth2UserService
DefaultOAuth2UserService defaultUserService = Mockito.mock(DefaultOAuth2UserService.class);
when(defaultUserService.loadUser(userRequest)).thenReturn(oAuth2User);

// Create an instance of your OAuthService with the mocked DefaultOAuth2UserService
OAuthService oAuthService = new OAuthService(lpvsMemberRepository, defaultUserService);

OAuth2User loadedUser = oAuthService.loadUser(userRequest);

assertEquals("testEmail", loadedUser.getAttribute("email"));
assertEquals("testName", loadedUser.getAttribute("name"));
assertEquals("google", loadedUser.getAttribute("provider"));
}
}

0 comments on commit f557aa8

Please sign in to comment.