From 435484cc137b84accc0b0ca55fd91d4bb1ce860a Mon Sep 17 00:00:00 2001 From: dongHyo Date: Wed, 1 Jun 2022 00:26:27 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20SecurityContextHolder=20Test=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../security/SecurityContextHolderTest.java | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 server/src/test/java/com/ticketing/server/global/security/SecurityContextHolderTest.java diff --git a/server/src/test/java/com/ticketing/server/global/security/SecurityContextHolderTest.java b/server/src/test/java/com/ticketing/server/global/security/SecurityContextHolderTest.java new file mode 100644 index 0000000..e6ee171 --- /dev/null +++ b/server/src/test/java/com/ticketing/server/global/security/SecurityContextHolderTest.java @@ -0,0 +1,66 @@ +package com.ticketing.server.global.security; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertAll; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.security.authentication.TestingAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.context.SecurityContext; +import org.springframework.security.core.context.SecurityContextHolder; + +@ExtendWith(MockitoExtension.class) +class SecurityContextHolderTest { + + private static final String ANY_USER = "ticketing"; + private static final String ANY_PASSWORD = "password"; + private static final String ROLE_GUEST = "ROLE_GUEST"; + + @BeforeEach + void init() { + SecurityContextHolder.setStrategyName(SecurityContextHolder.MODE_THREADLOCAL); + setMockAuthentication(); + } + + @AfterEach + void clear() { + SecurityContextHolder.clearContext(); + } + + @Test + @DisplayName("SecurityContextHolder 에 현재 인증된 사용자 정보를 확인한다.") + void SecurityContextHolder() { + // given + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + + // when + // then + assertAll( + () -> assertThat(authentication.isAuthenticated()).isTrue() + , () -> assertThat(authentication.getName()).isEqualTo(ANY_USER) + , () -> assertThat(authentication.getCredentials()).isEqualTo(ANY_PASSWORD) + , () -> assertThat(authentication.getAuthorities()) + .extracting(GrantedAuthority::getAuthority) + .contains(ROLE_GUEST) + ); + + } + + + private void setMockAuthentication() { + SecurityContext context = SecurityContextHolder.createEmptyContext(); + + TestingAuthenticationToken mockAuthentication + = new TestingAuthenticationToken(SecurityContextHolderTest.ANY_USER, SecurityContextHolderTest.ANY_PASSWORD, SecurityContextHolderTest.ROLE_GUEST); + context.setAuthentication(mockAuthentication); + + SecurityContextHolder.setContext(context); + } + +}