1. ์ด์ ์ค๊ณ์ปจํธ๋กค๋ฌ์์ memberId๋ฅผ ๋ฐ์์์ผ ํ ๊ฒฝ์ฐ, ๋ฉ์๋ ํ๋ผ๋ฏธํฐ ์์ @Auth ์ด๋
ธํ
์ด์
์ถ๊ฐArgumentResolver๊ฐ ์์ฒญ ํค๋์ Authorization ๊ฐ์ ์ถ์ถAuthorization ํค๋ ๊ฐ์ด null์ธ ๊ฒฝ์ฐ@Auth(required=true)์ด๋ฉด ์์ธ ๋ฐํ@Auth(required=false)์ด๋ฉด ์ปจํธ๋กค๋ฌ ํ๋ผ๋ฏธํฐ์ null๊ฐ์ ๋๊ฒจ์คArgumentResolver๊ฐ ํค๋์ ๋ด๊ธด JWT๋ฅผ ๊ฒ์ฆํ๊ณ , ์ ํจํ์ง ์์ผ๋ฉด ์์ธ ๋ฐํ ๊ตณ์ด ์ด๋ ๊ฒ ์ค๊ณํ ๊ฑด ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ํ์ ์ฌ๋ถ์ ๋ฐ๋ผ ๋ค๋ฅธ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ณต์ฉ API๊ฐ ์์๊ธฐ ๋๋ฌธ์ด๋ค. ์ผ๋ฐ์ ์ด์ง ์๊ณ ์ดํดํ๊ธฐ ์ด๋ ค์ด ์ค๊ณ๋ผ 1๋
๋์ ๊ณ ์น๊ณ ์ถ๋ค๊ณ ์๊ฐํ๋๋ฐ... ๋คํํ๋ ์ฌํด๊ฐ ๊ฐ๊ธฐ ์ ์ ๋
ธํธ๋ถ ์์ ๋ค์ ์์๋ค๐ 2. ..
1. ์คํ๋ง ์ํ๋ฆฌํฐ๋ฅผ ์ฐ์ง ์์ ์ด์ ํ๋ง๋๋ก ๋งํ์๋ฉด ๊ณผ๋ํ ์์กด์ฑ ์ถ๊ฐ๋ผ๊ณ ์๊ฐํ๋ค. ํ๋ก์ ํธ์ ๊ท๋ชจ๊ฐ ์๊ณ ์งํ ๊ธฐ๊ฐ๋ ์งง์ ์ํฉ์์, JWT ๊ฒ์ฆ๋ง์ ์ํด Spring Security๋ฅผ ์ถ๊ฐํ๋ ๊ฑด ๊ณผํ๋ค๊ณ ์๊ฐํ๋ค. ๊ทธ๋์ ์คํ๋ง ์ํ๋ฆฌํฐ ์์ด ArgumentResolver๋ฅผ ์ด์ฉํด JWT ๊ฒ์ฆ์ ๊ตฌํํ๊ธฐ๋ก ํ๋ค. 2. ๋ฌด์์ ๊ตฌํํ ๊ฑด๊ฐ์? ์ฐ๋ฆฌ ์๋น์ค์ API๋ ํฌ๊ฒ 2๊ฐ์ง๋ก ๋๋๋ค. ํ์ ์ ์ฉ API ๋นํ์๋ ํธ์ถ ๊ฐ๋ฅํ์ง๋ง, ํ์๊ณผ ๋นํ์์๊ฒ ๋ค๋ฅธ ๋ด์ฉ์ ๋ณด์ฌ์ฃผ๋ API ํ์ ์ ์ฉ API์์๋ Authorization ํค๋๊ฐ ํ์์ ์ด์ง๋ง, ๋นํ์๋ ์ฌ์ฉ ๊ฐ๋ฅํ API์์๋ Authorization ํค๋๊ฐ ํ์์ ์ด์ง๋ ์๋ค. ๋ฐ๋ผ์ ์ด๋
ธํ
์ด์
์ required ์์ฑ์ ์ถ๊ฐํ์ฌ, ๋นํ์๋ ..
7์ฃผ์ฐจ๋ ๋ฆฌํ๋ ์ ๊ธฐ๊ฐ์ด์๊ธฐ ๋๋ฌธ์ 8์ฃผ์ฐจ๋ถํฐ ์์ํ๋ ํ๊ณ ! 2023๋
์ด๋ผ๊ณ ์ผ๋ค๊ฐ ๋ถ๋ด๋ถ๋ด 2024๋ก ๋ฐ๊ฟจ๋ค๐๐ 1. ๋ฌด์จ ์ผ์ด ์์๋์? (1) ํ๋กํ ์ด๋ฏธ์ง ๊ธฐ๋ฅ ๊ตฌํ ํ๋กํ ์ด๋ฏธ์ง ์
๋ก๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค. ์ด๋ฏธ์ง ์
๋ก๋๋ ์ด์ ์๋ ๊ตฌํํด๋ณธ ์ ์๋ ๊ธฐ๋ฅ์ด์ง๋ง, ๊ทธ ๋๋ ์ฝ๋๊ฐ ์์ฒญ ๋๋ฌ์ ๋ค. ๊ทธ๋์ ์ด๋ฒ์๋ ๊ฐ๋
์ฑ ์ข์ ์ฝ๋๋ฅผ ๋ง๋ค๊ธฐ ์ํด ๋
ธ๋ ฅํ๋ค. ImageUtil๊ณผ Image๊ฐ์ฒด๋ฅผ ๋ถ๋ฆฌํ ๋ค์, ์ด๋ฏธ์ง ์
๋ก๋ ๋ฐ ์ญ์ ๋ ์ ํธ์์, ๊ธฐํ ํ์ผ ํ์ฅ์ ๋ฑ์ ๋ฐํ์ ์ด๋ฏธ์ง ๊ฐ์ฒด์์ ์ฒ๋ฆฌํ๋๋ก ๋ง๋ค์๋ค. (2) REST Assured๋ฅผ ์ด์ฉํ E2E ํ
์คํธ ์งํ MockMvc๋ก๋ง ํ
์คํธ๋ฅผ ์งํํ๋ค๊ฐ, ์๋ธ๋ฆฟ ์ปจํ
์ด๋๊ฐ ํ์ํด์ ธ์ REST Assured๋ฅผ ์ด์ฉํ ํตํฉ ํ
์คํธ๋ฅผ ์งํํ๋ค. MockMvc..
1. ๋์
๊ณ๊ธฐ spring: servlet: multipart: max-file-size: 5MB spring.servlet.multipart.max-file-size ์ค์ ์ด ์ ๋๋ก ์ ์ฉ๋๋์ง, 6MB์ง๋ฆฌ ํ์ผ์ ์
๋ก๋ํ์ ๋ ์ ์์ ์ผ๋ก ์์ธ๊ฐ ๋ฐ์ํ๋์ง๋ฅผ ํ
์คํธํ๊ณ ์ถ์๋ค. ์ด๋ฅผ ์ํด์๋ ์๋ธ๋ฆฟ ์ปจํ
์ด๋๋ฅผ ๋์์ผ ํ์ง๋ง, ๊ธฐ์กด์ MockMvc๋ ๊ฐ์ง ์๋ธ๋ฆฟ ์ปจํ
์ด๋๋ฅผ ๋์์ฃผ๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ์ค์ ์ ๋ํ ํ
์คํธ๋ ๋ถ๊ฐ๋ฅํ๋ค. ๊ทธ๋์ RestAssured๋ก End-to-End ํ
์คํธ๋ฅผ ์์ฑํด๋ณด๊ธฐ๋ก ํ๋ค. 2. REST Assured๋? REST Assured๋ Java ๊ธฐ๋ฐ์ ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, REST API ํ
์คํธ๋ฅผ ํธํ๊ฒ ์์ฑํ ์ ์๊ฒ ํด์ค๋ค. REST Assured๋ ์๋์ ๊ฐ์ ์ฅ์ ์ด ์๋ค...
1. ๋ฌด์จ ์ผ์ด ์์๋์?(1) ๋ก๊ทธ์์ ๊ธฐ๋ฅ ๊ตฌํ๋ก๊ทธ์ธ์ ๋ก๊ทธ์์๋ง์ ๊ตฌํ ๋ฐฉ๋ฒ์ด ๋ค์ํ ์ค์ ๋ชฐ๋๋ค๐ฅฒ ์ฐ๋ฆฌ ์๋น์ค๋ ์ก์ธ์ค ํ ํฐ์ผ๋ก JWT๋ฅผ ์ฌ์ฉํ๊ณ , ๋ฆฌํ๋ ์ ํ ํฐ์ DB(๋ ๋์ค)์ ์ ์ฅํ๋ ๋ฐฉ์์ ์ฌ์ฉ์ค์ด์๋ค. ์ฌ๊ธฐ์ ๋ก๊ทธ์์์ ์งํํ๋ฉด ํ ํฐ์ ๋ฌดํจํํ ํ์๊ฐ ์์๋ค. ๋ฆฌํ๋ ์ ํ ํฐ์ ๋ฌดํจํํ๋ ๊ฑด DB์์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ฉด ๋๋๋ฐ, ์ก์ธ์ค ํ ํฐ์ JWT๋ฅผ ์ฌ์ฉ์ค์ด๋ผ ์๋ฒ์์ ํ ํฐ์ ์ ์ดํ ์ ์๋ค๋ ๋ฌธ์ ๊ฐ ์์๋ค. ๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด ๋ฆฌํ๋ ์ ํ ํฐ๋ง ์ญ์ ํ๊ณ , ์ก์ธ์ค ํ ํฐ์ ์ญ์ ๋ ํด๋ผ์ด์ธํธ ์ธก์์ ์งํํ๋๋ก ํ๋ค. ๋ฌผ๋ก ๋ก๊ทธ์์ ์ ์ก์ธ์ค ํ ํฐ์ ๋ธ๋๋ฆฌ์คํธ์ ์ ์ฅํ์ฌ, ์์ฒญ์ด ๋ค์ด์ค๋ฉด ๋ธ๋๋ฆฌ์คํธ ๋ฑ์ฌ ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํ๋ ๋ฐฉ์์ ์ฌ์ฉํ ์๋ ์์๋ค. ํ์ง๋ง ์ด๋ ๊ฒ ๋๋ฉด ์์ฒญ์ด ๋ค์ด์ฌ ๋๋ง๋ค ์ก์ธ์ค ..