KEEP ๊ตณ์ด ๋ง์ ํ์ง ์์๋ ์ ํด์ง ๋ฒ์๊น์ง ์์์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ณ ํ
์คํธํ์๋ค. ์ด๋ฒํ๋ก์ ํ์์ GIT์ ๋ค๋ฅธ ํ๋ก์ ํธ๋๋ณด๋ค ๋ง์ด์จ๋ด์ ๋งค์ฐ์ข์๊ณ ์ค๋ ฅ์๋ ํ์๋ค ๋๋ถ์ ๋ฐฐ์๊ฐ๊ฒ ๋ง๋ค. ์ค๊ณ๋จ๊ณ์์ ERD์ API๋ช
์ธ๋ฅผ ์์ฑํ ๋ ํ์ํ API๊ธฐ๋ฅ๋ค๊ณผ Entitiy์ ํด๋น Entity๊ฐ์ ๊ด๊ณ๋ฅผ ๋ฉด๋ฐํ๊ฒ ์์ฑํ์ฌ ์ค ์๋ฒ ๊ตฌ์ถ๋จ๊ณ์์ ๋น ๋ฅด๊ฒ ๋ชฉํํ๋ ๊ธฐ๋ฅ์ ๊ตฌํ ํ ์์๋ ์ ํ์๊ณผ์ ์ํํ ์ํต์ผ๋ก ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ๋น ๋ฅด๊ฒ ํด๊ฒฐํ ์ ์์๋ค. ์งํ๋ ๋ฐ ๋ฌธ์ ์ ๊ณต์ ๋ฅผ ํตํด ๋น ๋ฅธ ๊ฐ๋ฐ ๊ฐ๋ฅ PROBLEM ๋ฌธ์ ๋ฐ์์ ํ๋ฉด๊ณต์ ๋ฅผ ํตํ ํด๊ฒฐ๋ฐฉํ ๋
ผ์ @Valid๋ฅผ ์ด์ฉํ ์ ํจ์ฑ ๊ฒ์ฆ์ ๊ธ๋ก๋ฒ์์ธ์ฒ๋ฆฌ๋ก ๋์ค๊ฒ ํ๊ณ ์ถ์์ง๋ง ์์ง ์ดํด๋๊ฐ ๋ถ์กฑํด์ ํ์ง๋ชปํ๋ค. ์ค๊ณ ๋จ๊ณ์์ ๋ฐฑ์คํผ์ค์ ๊ด๋ฆฌ์ ๊ธฐ๋ฅ์ ๊น๊ฒ ์๊ฐ ..
์ ์ฒด ๊ธ
์ค๋๋ก 4๋ฒ์งธ ํํ๋ก์ ํธ, ๋ฐฐ๋ฌ์ฑ ๊ตฌํ ํ๋ก์ ํธ๊ฐ ๋๋ฌ๋ค. ์ฒ์ ๊ธฐํํ๋ ๊ธฐ๋ฅ์ด ์ผ์ฐ ๋๋์ ์ค๊ฐ์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์๋ค. ์ฒ์์๋ ๊ทธ๋ฅ ํ๋์ ๊ฐ๊ฒ์ ๋ฐฐ๋ฌ ์ฑ์ด๋ค๊ฐ, ์ดํ ๊ฐ๊ฒ ๋ณ๋ก ๋๋๊ณ ์ข์์ ๊ธฐ๋ฅ๊น์ง ๊ตฌํํ๋ค. ํ์๋ค๊ณผ ์ํต๋ ์๋๊ณ ์๋ง์์ ์ฌ๋ฐ๊ฒ ์งํํ๋ค.!! ๊ทธ๋ฆฌ๊ณ ๋ค๋ค ์ด๊ฑฐ ํด์ฃผ์ธ์ ํ๋ฉด ๋๋ฑ๋๋ฑ ๊ณต์ฅ๋ง๋ฅ ์ฐ์ด๋ด์
์ ์ง๋๋ ์ฐธ ๋น ๋ฅด๊ฒ ๋๊ฐ๋ฏ!!!!! ์ธ๊ป ์๋ค์....ใ
ใ
์! ์ฌ๊ธฐ์ ๋ฐฐ์ฐ๊ณ ์ฌ์ฉํด๋ณธ jwt, refreshtoken๊ณผ ๋ค๋ฅธ ํ๋ค์ด ์ฌ์ฉํ์ ํ์ฌ ์ฌ์ฉ์ ์ ๋
ธํ
์ด์
๊ตฌํ๋ฑ์ ์ด์ฉํด์ ๊ธฐ์กด์ ํ๋ ํ๋ก์ ํธ๋ฅผ ์
๊ทธ๋ ์ด๋๋ฅผ ๋ชฉํ๋ก ์งํํด์ผ๊ฒ ๋ค. ๋ง๊ตฌ์ก์ด๋ก ํ์ง๋ง๊ณ ๋๋ฑ๋๋ฑ S.A ๋ถํฐ ์ฒ์ฒํ ๋ค ์์ฑํด์ผ์ง~!
ํ๋ก์ ํธ ์ค ๋ด๋น ๊ธฐ๋ฅ์ ์๋์ง๋ง JWT ๊ฐ ์/์ด๋ป๊ฒ ๋๋์ง ๊ถ๊ธํด์ ๊ณต๋ถํด๋ณด์ JWT๋ ๋น๋ฐํค๋ฅผ ์ด์ฉํ์ฌ ์๋ช
๋ JSON ํํ์ ๋ฐ์ดํฐ์ด๋ค. ์ฌ๊ธฐ์ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ๋ฃ์ด์ ํ ํฐ์ ๋ฐ๊ธํด์ฃผ๋ฉด ์ถํ ์ธ์ฆ์ด ํ์ํ ๋ฆฌ์์ค์ ์ ๊ทผ ์ ์ฌ์ฉ์๊ฐ ์๋ฒ์ ์๋ฒ์ ํ ํฐ์ ํฌํจํด์ ์ ์กํ์ฌ ์๋ฒ์ ํ ํฐ์ ํฌํจํด์ ์ ์กํ์ฌ ์๋ฒ์ธก์์๋ ๋ณต์กํ ์ธ์ฆ ๊ณผ์ ์์ด ํ ํฐ๋ง์ผ๋ก ์ฌ์ฉ์๋ฅผ ์ธ์ฆ ๋ฐ ์ธ๊ฐํ ์ ์๋ ๊ฒ์ด๋ค. JWT๋ ํค๋, ํ์ด๋ก๋, ์๋ช
์ธ ๊ฐ์ง ์ ๋ณด๋ฅผ base64๋ก ์ธ์ฝ๋ฉํ ๊ฐ์ ์ฝค๋ง('.')๋ฅผ ์ฌ์ด์ ๋๊ณ ์ด์ด๋ถ์ธ ํํ๋ก ์์ฑ๋๋ค. ํค๋ : JWT ์๋ช
์ ์ฌ์ฉ๋ ์๊ณ ๋ฆฌ์ฆ ์ ๋ณด ํ์ด๋ก๋ : ํ ํฐ์ ๋ด๊ธด ์ฃผ์ฒด, ๋ง๋ฃ์ผ, ์์ฑ์ ๋ฑ ์๊ทธ๋์ฒ : ํค๋์ ํ์ด๋ก๋๋ฅผ ๊ฐ๊ฐ base64๋ก ์ธ์ฝ๋ฉํ ํ ์ฝค..
์ค๋์ ์๋ฌ ๐ฅ ์ฒ์์ Order์ User๋ฅผ Lazy ์ ๋ต์ผ๋ก ์ค์ ํ์๋ค ๊ทธ๋ฐ๋ฐ @Transactional public void updateInCart(Long orderId, BasketRequestDto requestDto, User user) { Order order = orderRepository.findByIdAndIsOrdered(orderId, false).orElseThrow( () -> new ApiException(ErrorCode.INVALID_CART) ); checkUserOrRole(user, order); menuService.findMenu(requestDto.getMenu_id()); for (Basket basket : order.getBaskets()) { if (Ob..
์ค๋์ ์๋ฌ ๐ฅ ๋ด ๋ด๋น ๊ธฐ๋ฅ ์ฝ๋๋ฅผ ์ง๋ ๊ฒ์๋ง ์ง์คํ ๋๋จธ์ง,,,,,, pull ์ ๋ฐ์ง ์๊ณ commit -> push ๋ฅผ ํด๋ฒ๋ ค์ ๋ค๋ฅธ ๋ถ๋ค์ ์ฝ๋๊ฐ ์ธ์์์์์์ใฑ ๋ ๋ผ๊ฐ๋ฒ๋ฆผ.//ใ
๋ค๋ค ๋๋ฌด ์ด์ฌํ ํ์
์, ๋ญ๊ฐ ๋ง์๋๋ฆฌ๊ธฐ ์ฃ์กํด์ ๊ทธ๋ฅ merge ๋ฅผ revert ํด๋ฒ๋ ธ๋ค. ๊ทธ ํ, ๋ค์ pull ์ ํ๋๊น ์ค๋ง๋ ์ธ์์ ๋ง์์ ๐ญ ์ด๋ฒ์๋ ๋ด ์ฝ๋๊ฐ ์ธ์์์์์์
๋ ๋ผ๊ฐ๋ค ๐ช๏ธ ๋ด๊ฐ pull ์ ์ค์์ฑ์ ์์ด๋ฒ๋ฆฐ ๊ฒ์ด๊ธฐ์ ๋ด ์๋ชป์ด๊ธฐ์,, ๋ฐ์ฑํ๋ ๋ง์๊ฐ์ง์ผ๋ก ๋ค์ ์งฐ๋ค.ใ
๊ตํ ๐ PULL ์ ์ํ์ 2. git pull ์ ํ๋๊น, ๋ ์ค๋ฅ pull ๋ฐฉ์์ ๋ช
์ํ๋ผ๋ ๊ฒ git pull ์ git fetch์ merge๋ฅผ ํฉ์น ๋ช
๋ น์ด์ธ๋ฐ, ๊ทธ ์ค merge ์ ๋ฐฉ์์ ๋ช
์ํ๋ผ๋ ์๋ฌ์ด๋ค. ..
์คํ๋ง ์ฌํ ํํ๋ก์ ํธ ์์ ์ค๋์ ํ๋ก์ ํธ ํ ์ง๊ธฐ ERD ์์ฑ์ด ๊ฐ์ฅ ๋ฌธ์ ์๋
ERD๋ฅผ ์๋ง๋ค์ด๋์ผ ์ฝ๋๋ฅผ ์งค ๋, ๋ช
ํํ๊ฒ ๊ตฌํํ ์ ์๊ธฐ ๋๋ฌธ์ ํ์๋ค๊ณผ ๊ฐ์ฅ ์ค๋ซ๋์ ๊ณ ๋ฏผํด์ ๋ง๋ค์๋ค. ์๋ฐ ์ฝ๋๋ก๋ ํ๋ ๋ฐ ๋ค๋ฅธ ์ํฐํฐ์์ ๊ด๊ณ๋ฅผ ๊ทธ๋ ค๋ผ ์ ์์๋๋ฐ, ๊ทธ๊ฑฐ๋ฅผ ERD๋ก ๊ทธ๋ฆด๋ ค๋๊น ํ๋๋ ๋ชจ๋ฅด๊ฒ ์ด์ ํํฐ๋๊ป Help ์ณค๋ค..ใ
์ฌ์ค ์ค๋ช
ํด์ฃผ์๋๊ฑฐ๋ฅผ 100% ๋ช
ํํ๊ฒ ์ดํดํ๋์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง, ๊ต์ฅํ ๋์์ด ๋์๋ค ์ํฐํฐ์์ ์ค์ํ๊ฒ ๋ด์ผํ ๊ฒ๊ณผ ์ด๋ ๋ถ๋ถ์ ์ข ๋ ์ค์ ์ผ๋ก ๋๊ณ ๊ตฌ์กฐ๋ฅผ ์ง์ผํ ์ง ์๋ ค์ฃผ์
จ๋ค. ํนํ, ์ฃผ๋ฌธ ๋ด์ญ๊ณผ ๋ฉ๋ด์ ๊ด๊ณ๊ฐ ๋ค๋๋ค ์ธ๋ฐ, ๋ฉ๋ด์์๋ ์ฃผ๋ฌธ ๋ด์ญ์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ง ํ์๊ฐ ์์ด์ ์ด์ ๋ํด์ ์ด๋ป๊ฒ ํํํด์ผ ํ ์ง๊ฐ ๐ป์ธ! ํํฐ๋๊ป์๋ ์ฃผ๋ฌธ ๋ด์ญ๊ณผ ๋ฉ๋ด ์ฌ์ด์ Bask..
๋จ์ ํ
์คํธ? ๋จ์ ํ
์คํธ๋ ํ๋์ ๋ชจ๋์ ๊ธฐ์ค์ผ๋ก ๋
๋ฆฝ์ ์ผ๋ก ์งํ๋๋ ๊ฐ์ฅ ์์ ๋จ์์ ํ
์คํธ์
๋๋ค. ์ฌ๊ธฐ์ ๋ชจ๋์ ์ ํ๋ฆฌ์ผ์ด์
์์ ์๋ํ๋ ํ๋์ ๊ธฐ๋ฅ ๋๋ ๋ฉ์๋๋ก ์ดํดํ ์ ์์ต๋๋ค. ์ฆ, ๋จ์ ํ
์คํธ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ฑํ๋ ํ๋์ ๊ธฐ๋ฅ์ด ์ฌ๋ฐ๋ฅด๊ฒ ๋์ํ๋์ง๋ฅผ ๋
๋ฆฝ์ ์ผ๋ก ํ
์คํธํ๋ ๊ฒ์ผ๋ก, ์ด๋ค ๊ธฐ๋ฅ์ด ์คํ๋๋ฉด ์ด๋ค ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค. ์ ๋๋ก ํ
์คํธ๋ฅผ ์งํํฉ๋๋ค. ํตํฉ ํ
์คํธ? ํตํฉ ํ
์คํธ๋ ๋ชจ๋์ ํตํฉํ๋ ๊ณผ์ ์์ ๋ชจ๋ ๊ฐ์ ํธํ์ฑ์ ํ์ธํ๊ธฐ ์ํด ์ํ๋๋ ํ
์คํธ์
๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์
์ ์ฌ๋ฌ ๊ฐ์ ๋ชจ๋๋ค๋ก ๊ตฌ์ฑ์ด ๋๊ณ , ๋ชจ๋๋ค๋ผ๋ฆฌ ๋ฉ์ธ์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉด์(ํจ์ ํธ์ถ) ๊ธฐ๋ฅ์ ์ํํฉ๋๋ค. ๊ทธ๋ ๊ธฐ์ ํตํฉ๋ ๋ชจ๋๋ค์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ฐ๊ณ๋์ด ๋์ํ๋์ง ๊ฒ์ฆ์ด ํ์ํ๋ฐ, ์ด๋ฌํ ๋ชฉ์ ์ผ๋ก ์งํ๋๋ ํ
์คํธ๊ฐ..
@InjectMocks UserService userService; @Mock UserRepository userRepository; @Mock PasswordEncoder passwordEncoder; @Test @DisplayName("์ค๋ณต๋ ์์ด๋ ์
๋ ฅ ์, ํ์ ๊ฐ์
์คํจ") void givenIsExistedUsername_whenSignup_thenFail() { // Given String username = "tester"; String password = "123456789"; SignupRequestDto requestDto = new SignupRequestDto(); requestDto.setUsername(username); requestDto.setPassword(password..