스프링 부트와 AWS로 혼자 구현하는 웹 서비스 Chapter10 진행중 ProfileController 추가 및 변동사항 반영
This commit is contained in:
@@ -17,7 +17,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
|
|||||||
http.csrf().disable().headers().frameOptions().disable()
|
http.csrf().disable().headers().frameOptions().disable()
|
||||||
.and()
|
.and()
|
||||||
.authorizeRequests()
|
.authorizeRequests()
|
||||||
.antMatchers("/", "/css/**", "/images/**", "/js/**", "/h2-console/**").permitAll()
|
.antMatchers("/", "/css/**", "/images/**", "/js/**", "/h2-console/**", "/profile").permitAll()
|
||||||
.antMatchers("/api/v1/**").hasRole(Role.USER.name())
|
.antMatchers("/api/v1/**").hasRole(Role.USER.name())
|
||||||
.anyRequest().authenticated()
|
.anyRequest().authenticated()
|
||||||
.and()
|
.and()
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package com.banjjoknim.book.springboot.web;
|
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.core.env.Environment;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@RestController
|
||||||
|
public class ProfileController {
|
||||||
|
private final Environment env;
|
||||||
|
|
||||||
|
@GetMapping("/profile")
|
||||||
|
public String profile() {
|
||||||
|
List<String> profiles = Arrays.asList(env.getActiveProfiles());
|
||||||
|
|
||||||
|
List<String> realProfiles = Arrays.asList("real", "real1", "real2");
|
||||||
|
|
||||||
|
String defaultProfile = profiles.isEmpty() ? "default" : profiles.get(0);
|
||||||
|
|
||||||
|
return profiles.stream()
|
||||||
|
.filter(realProfiles::contains)
|
||||||
|
.findAny()
|
||||||
|
.orElse(defaultProfile);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
package com.banjjoknim.book.springboot.web;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.boot.test.web.client.TestRestTemplate;
|
||||||
|
import org.springframework.boot.web.server.LocalServerPort;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
||||||
|
public class ProfileControllerTest {
|
||||||
|
|
||||||
|
@LocalServerPort
|
||||||
|
private int port;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private TestRestTemplate restTemplate;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void profile은_인증없이_호출된다() {
|
||||||
|
String expected = "default";
|
||||||
|
|
||||||
|
ResponseEntity<String> response = restTemplate.getForEntity("/profile", String.class);
|
||||||
|
|
||||||
|
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||||
|
assertThat(response.getBody()).isEqualTo(expected);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
package com.banjjoknim.book.springboot.web;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.springframework.mock.env.MockEnvironment;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
public class ProfileControllerUnitTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void real_profile이_조회된다() {
|
||||||
|
//given
|
||||||
|
String expectedProfile = "real";
|
||||||
|
MockEnvironment env = new MockEnvironment();
|
||||||
|
env.addActiveProfile(expectedProfile);
|
||||||
|
env.addActiveProfile("oauth");
|
||||||
|
env.addActiveProfile("real-db");
|
||||||
|
|
||||||
|
ProfileController controller = new ProfileController(env);
|
||||||
|
|
||||||
|
//when
|
||||||
|
String profile = controller.profile();
|
||||||
|
|
||||||
|
//then
|
||||||
|
assertThat(profile).isEqualTo(expectedProfile);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void real_profile이_없으면_첫_번째가_조회된다() {
|
||||||
|
//given
|
||||||
|
String expectedProfile = "oauth";
|
||||||
|
MockEnvironment env = new MockEnvironment();
|
||||||
|
env.addActiveProfile(expectedProfile);
|
||||||
|
env.addActiveProfile("real-db");
|
||||||
|
|
||||||
|
ProfileController controller = new ProfileController(env);
|
||||||
|
|
||||||
|
//when
|
||||||
|
String profile = controller.profile();
|
||||||
|
|
||||||
|
//then
|
||||||
|
assertThat(profile).isEqualTo(expectedProfile);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void active_profile이_없으면_default가_조회된다() {
|
||||||
|
//given
|
||||||
|
String expectedProfile = "default";
|
||||||
|
MockEnvironment env = new MockEnvironment();
|
||||||
|
|
||||||
|
ProfileController controller = new ProfileController(env);
|
||||||
|
|
||||||
|
//when
|
||||||
|
String profile = controller.profile();
|
||||||
|
|
||||||
|
//then
|
||||||
|
assertThat(profile).isEqualTo(expectedProfile);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user