From 1496aa27404b8decb1d52e6e77cbb8d39f09ecf6 Mon Sep 17 00:00:00 2001 From: potados99 Date: Tue, 18 Feb 2025 12:41:11 +0900 Subject: [PATCH] =?UTF-8?q?chore(test):=20JWT=20=EB=8B=A4=EB=A3=A8?= =?UTF-8?q?=EB=8A=94=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BC=80=EC=9D=B4?= =?UTF-8?q?=EC=8A=A4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1)Base64URL 인코드된 결과인 JWT payload에 하이픈이 들어가는 경우와, 2)그냥 Base64 인코드된 스트링이 들어가는 경우를 추가했어요 --- .../boolti/presentation/util/JwtUtilTest.kt | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/presentation/src/test/java/com/nexters/boolti/presentation/util/JwtUtilTest.kt b/presentation/src/test/java/com/nexters/boolti/presentation/util/JwtUtilTest.kt index 72d7094c7..3aa96714b 100644 --- a/presentation/src/test/java/com/nexters/boolti/presentation/util/JwtUtilTest.kt +++ b/presentation/src/test/java/com/nexters/boolti/presentation/util/JwtUtilTest.kt @@ -1,5 +1,6 @@ package com.nexters.boolti.presentation.util +import io.kotest.assertions.throwables.shouldThrow import io.kotest.core.spec.style.BehaviorSpec import io.kotest.matchers.shouldBe @@ -16,6 +17,24 @@ class JwtUtilTest : BehaviorSpec() { payloadMap["sub"] shouldBe "3320565564" } } + + `when`("이 하이픈 들어간 jwt를 디코드 했을 때") { + then("payload의 key value 쌍을 반환한다.") { + val payloadMap = + sut.decodePayload("eyJraWQiOiI5ZjI1MmRhZGQ1ZjIzM2Y5M2QyZmE1MjhkMTJmZWEiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.ewogICJhdWQiOiAiMmQ1Y2JlMGI0YmFjYzI1MzJmODcxNjZlMmE3ZTUzYjHvuqoiLAogICJzdWIiOiAiMzMyMDU2NTU2NCIsCiAgImF1dGhfdGltZSI6IDE3MDY2MTg0MTgsCiAgImlzcyI6ICJodHRwczovL2thdXRoLmtha2FvLmNvbSIsCiAgIm5pY2tuYW1lIjogIu2Zjeq4uOuPme-6kiIsCiAgImV4cCI6IDE3MDY2NjE2MTgsCiAgImlhdCI6IDE3MDY2MTg0MTgsCiAgInBpY3R1cmUiOiAiaHR0cDovL2sua2FrYW9jZG4ubmV0L2RuLzFHOWtwL2J0c0FvdDhsaU9uLzhDV3VkaTN1eTA3cnZGTlVrazNFUjAvaW1nXzExMHgxMTAuanBnIgp9.f-pvLKlSly9KCDBHc0d_-ccKlwr48ezCrLuwxiD5VCjLoEJRACCDnB49K3ygCTzLKZZHG5KNJNheVci5v7kdqegsxRa3xLcRLQ7Vz-NluSwFHiSe6Ska9QRXEDY1lOPRSh103b2fEEAykVUH6VqRwnal6S1-X3d9C3QMSvz1mXIUbqkFL5sCygbvszQY1cERC0NLQ55qIhD8AWTyeWKp_wQwvBpSW3WQEhjyWaTJZqrb9i7s5ZouqsK6B9rKmml3bM18qmLydh8ruV48yUbcI-Zm3ugwLI-8KZbfWASwCgEdyQYROq8fspziPdNXlSGnEnFRziwitP4ZFA5UVbt_FQ") + payloadMap["nickname"] shouldBe "홍길동ﺒ" + payloadMap["picture"] shouldBe "http://k.kakaocdn.net/dn/1G9kp/btsAot8liOn/8CWudi3uy07rvFNUkk3ER0/img_110x110.jpg" + payloadMap["sub"] shouldBe "3320565564" + } + } + + `when`("그런데 만약 JWT의 payload 부분이 표준대로 Base64 URL 인코드된 스트링이 아니라 그냥 Base64 인코딩된 스트링이라면") { + then("IllegalArgumentException을 터뜨린다.") { + shouldThrow { + sut.decodePayload("eyJraWQiOiI5ZjI1MmRhZGQ1ZjIzM2Y5M2QyZmE1MjhkMTJmZWEiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.ewogICJhdWQiOiAiMmQ1Y2JlMGI0YmFjYzI1MzJmODcxNjZlMmE3ZTUzYjHvuqoiLAogICJzdWIiOiAiMzMyMDU2NTU2NCIsCiAgImF1dGhfdGltZSI6IDE3MDY2MTg0MTgsCiAgImlzcyI6ICJodHRwczovL2thdXRoLmtha2FvLmNvbSIsCiAgIm5pY2tuYW1lIjogIu2Zjeq4uOuPme+6kiIsCiAgImV4cCI6IDE3MDY2NjE2MTgsCiAgImlhdCI6IDE3MDY2MTg0MTgsCiAgInBpY3R1cmUiOiAiaHR0cDovL2sua2FrYW9jZG4ubmV0L2RuLzFHOWtwL2J0c0FvdDhsaU9uLzhDV3VkaTN1eTA3cnZGTlVrazNFUjAvaW1nXzExMHgxMTAuanBnIgp9.f-pvLKlSly9KCDBHc0d_-ccKlwr48ezCrLuwxiD5VCjLoEJRACCDnB49K3ygCTzLKZZHG5KNJNheVci5v7kdqegsxRa3xLcRLQ7Vz-NluSwFHiSe6Ska9QRXEDY1lOPRSh103b2fEEAykVUH6VqRwnal6S1-X3d9C3QMSvz1mXIUbqkFL5sCygbvszQY1cERC0NLQ55qIhD8AWTyeWKp_wQwvBpSW3WQEhjyWaTJZqrb9i7s5ZouqsK6B9rKmml3bM18qmLydh8ruV48yUbcI-Zm3ugwLI-8KZbfWASwCgEdyQYROq8fspziPdNXlSGnEnFRziwitP4ZFA5UVbt_FQ") + } + } + } } } }