Skip to content

Commit 15ba7ee

Browse files
authored
Merge pull request #62 from Team-Meal/fix-57-profile-access-permission
[member] 내 프로필 조회 권한 수정
2 parents 336e396 + 8e58fe6 commit 15ba7ee

2 files changed

Lines changed: 33 additions & 10 deletions

File tree

‎src/main/kotlin/team/nongchun/hororog/global/config/SecurityConfig.kt‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ class SecurityConfig(
7474
it.requestMatchers("/auth/logout").authenticated()
7575
it.requestMatchers("/admin/**").hasRole(Role.ADMIN.name)
7676
it.requestMatchers(HttpMethod.POST, "/auth/signup-requests").hasRole(Role.PENDING_NUTRITIONIST.name)
77+
it.requestMatchers(HttpMethod.GET, "/members/me").authenticated()
7778
it.requestMatchers(HttpMethod.GET, "/meals/today").hasAnyRole(Role.STUDENT.name, Role.TEACHER.name, Role.NUTRITIONIST.name)
7879
it.requestMatchers(HttpMethod.POST, "/meals/suggestions").hasAnyRole(Role.STUDENT.name, Role.TEACHER.name)
7980
it.requestMatchers(HttpMethod.GET, "/meals/suggestions").hasRole(Role.NUTRITIONIST.name)

‎src/test/kotlin/team/nongchun/hororog/domain/member/controller/MemberControllerTest.kt‎

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import org.springframework.http.MediaType
99
import org.springframework.security.crypto.password.PasswordEncoder
1010
import org.springframework.test.context.bean.override.mockito.MockitoBean
1111
import org.springframework.test.web.servlet.MockMvc
12+
import org.springframework.test.web.servlet.get
1213
import org.springframework.test.web.servlet.patch
1314
import org.springframework.transaction.annotation.Transactional
1415
import team.nongchun.hororog.domain.member.entity.Member
@@ -32,19 +33,40 @@ class MemberControllerTest
3233
@MockitoBean
3334
lateinit var refreshTokenRepository: RefreshTokenRepository
3435

35-
private fun saveMember() =
36-
memberRepository.save(
37-
Member(
38-
email = "nutritionist@hororog.team",
39-
password = requireNotNull(passwordEncoder.encode("password1234")),
40-
name = "김영양",
41-
schoolName = "농촌초등학교",
42-
role = Role.NUTRITIONIST,
43-
),
44-
)
36+
private fun saveMember(
37+
role: Role = Role.NUTRITIONIST,
38+
email: String = "nutritionist@hororog.team",
39+
) = memberRepository.save(
40+
Member(
41+
email = email,
42+
password = requireNotNull(passwordEncoder.encode("password1234")),
43+
name = "김영양",
44+
schoolName = "농촌초등학교",
45+
role = role,
46+
),
47+
)
4548

4649
private fun accessToken(member: Member) = jwtProvider.createAccessToken(member.id, member.role)
4750

51+
@Test
52+
fun `학생 교사 영양사가 내 프로필을 조회하면 200을 반환한다`() {
53+
listOf(
54+
saveMember(Role.STUDENT, "student@hororog.team"),
55+
saveMember(Role.TEACHER, "teacher@hororog.team"),
56+
saveMember(Role.NUTRITIONIST, "nutritionist@hororog.team"),
57+
).forEach { member ->
58+
mockMvc
59+
.get("/members/me") {
60+
header(HttpHeaders.AUTHORIZATION, "Bearer ${accessToken(member)}")
61+
}.andExpect {
62+
status { isOk() }
63+
jsonPath("$.name") { value("김영양") }
64+
jsonPath("$.role") { value(member.role.name) }
65+
jsonPath("$.schoolName") { value("농촌초등학교") }
66+
}
67+
}
68+
}
69+
4870
@Test
4971
fun `영양사가 학교명을 직접 수정하면 403을 반환하고 학교명은 변경되지 않는다`() {
5072
val member = saveMember()

0 commit comments

Comments
 (0)