비버놀로지

[Spring JPA] 1-3. 회원 가입 : 컨트롤러 본문

LANGUAGE STUDY/Spring

[Spring JPA] 1-3. 회원 가입 : 컨트롤러

KUNDUZ 2021. 4. 27. 12:13
728x90

GET "/sign-up" 요청을 받아서  account/sign-up.html 페이지 보여줍니다.

 

아래와 같이 컨트롤러를 만들어 줍니다.

package com.studyolle.account.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class AccountController {
	
	@GetMapping("sign-up")
	public String signUpForm(Model model) {
		return "account/sign-up";
	}
}

 

 

그리고 그냥 컨트롤러를 사용할 것이기 때문에 들어가게 될 sign-up.html을 만들어 줍니다.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Sign-up Page</title>
</head>
<body>
	<h2>Sign-up Page</h2>
</body>
</html>

 

 

그 후, 실행을 하게 되면

 

 

위와 같이 SpringSecurity가 나오는 것을 확인할 수 있습니다.

 

그래서 회원가입과 로그인 같은 곳에서 에러가 나지 않도록 해줘야 합니다.

 

그런문제를 해결하기 위해 SecurityConfig를 만들어 줍니다.

 

package com.studyolle.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

	@Override
	protected void configure(HttpSecurity http) throws Exception {
		http.authorizeRequests()
				.mvcMatchers("/", "/login", "/sign-up", "/check-email", "check-email-token", "email-login",
						"check-email-login", "/login-link").permitAll()
				.mvcMatchers(HttpMethod.GET, "/profile/*").permitAll().anyRequest().authenticated();
	}
}

 

위와 같이 sign-up 페이지로 가는 것을 확인 할 수 있습니다.

 

그리고 controller를 확인 하기 위해 test를 만들어 줍니다.

 

위와 같은 위치에 test를 만들어 줍니다.

 

package com.studyolle.account.controller;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;

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.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.servlet.MockMvc;

@SpringBootTest
@AutoConfigureMockMvc
public class AccountControllerTest {

	@Autowired private MockMvc mockMvc;
	
	@DisplayName("회원 가입 화면 보이는지 테스트")
	@Test
	void signUpForm() throws Exception {
		mockMvc.perform(get("/sign-up"))
		.andDo(print())
		.andExpect(status().isOk())
		.andExpect(view().name("account/sign-up"));
	}
}

 

위와 같은 코드를 작성해 줍니다.

 

방식은 MockMvc를 활용해서 Controller가 동작을 하는지 확인 할 수 있도록 헀습니다.

 

 

 

728x90
Comments