[개발] 로그인 테스트 구현
필기자
2022-11-01 12:09
5,261
0
본문
pom.xml
<!--security-test 의존성 추가-->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
<version>${spring-security.version}</version>
</dependency>
<!--security-test 의존성 추가-->
alt + 엔터 > Create Test
@SpringBootTest
@AutoConfigureMockMvc
@Transactional
@TestPropertySource(locations="classpath:application-test.properties")
class MemberControllerTest {
@Autowired
private MemberService memberService;
@Autowired
private MockMvc mockMvc;
@Autowired
PasswordEncoder passwordEncoder;
public Member createMember(String email, String password){
MemberFormDto memberFormDto = new MemberFormDto();
memberFormDto.setEmail(email);
memberFormDto.setName("홍길동");
memberFormDto.setAddress("서울시 마포구 합정동");
memberFormDto.setPassword(password);
Member member = Member.createMember(memberFormDto, passwordEncoder);
return memberService.saveMember(member);
}
@Test
@DisplayName("로그인 성공 테스트")
public void loginSuccessTest() throws Exception{
String email = "test@email.com";
String password = "1234";
this.createMember(email, password);
mockMvc.perform(formLogin().userParameter("email")
.loginProcessingUrl("/members/login")
.user(email).password(password))
.andExpect(SecurityMockMvcResultMatchers.authenticated());
}
@Test
@DisplayName("로그인 실패 테스트")
public void loginFailTest() throws Exception{
String email = "test@email.com";
String password = "1234";
this.createMember(email, password);
mockMvc.perform(formLogin().userParameter("email")
.loginProcessingUrl("/members/login")
.user(email).password("12345"))
.andExpect(SecurityMockMvcResultMatchers.unauthenticated());
}
}
트랜잭션 (@Transactional : 선언적 트랜젝션)
- 데이터베이스의 상태를 변경하는 작업 또는 한번에 수행되어야 하는 연산들.
- begin, commit 을 자동으로 수행.
- 예외 발생 시 rollback 처리를 자동으로 수행.
- 원자성(Atomicity)
한 트랜잭션 내에서 실행한 작업들은 하나의 단위로 처리함. 모두 성공 또는 모두 실패.
- 일관성(Consistency)
트랜잭션은 일관성 있는 데이타베이스 상태를 유지함. (data integrity 만족 등등)
- 격리성(Isolation)
동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않도록 격리됨.
- 영속성(Durability)
트랜잭션을 성공적으로 마치면 결과가 항상 저장됨.
결과 : 로그인 성공
결과 : 로그인 실패
댓글목록0