코드 그라데이션
200220 API 테스트해보기 본문
회원가입 통과
로그인 통과
비밀번호 수정은 검증 로직이 이상하다. 검증 로직만 주석처리 하고 다시 해보니까 통과 되더라고.
지역 수정 통과
프로필 ID는 별도의 엔티티가 아닌 User 안에 임베더블이라서 따로 없다.
그래서 별도의 Ip로 봐주기는 무리, 테스트 불가
Product
Api 명세와는 다르게 place는 따로 없어.
어쨌든 상품 등록 통과
단일 상품 조회도 통과
전체 상품 조회
- PagingProductResponseDto가 JSON으로 변환이 될 때, 값이 없다고 나온다.
- 아마 페이징 관련해서 문제가 있는 듯(매핑)
상품 업데이트
- 상품 수정이나 삭제를 하려면 사용자 본인 인증을 해야 하는데, 사용자 본인 인증을 하려면 User 엔티티가 equals가 구현이 되어야 하고, 현재는 equals가 따로 구현이 되어 있지 않기 때문에, 결론은 User에 equals라는 해시코드가 구현되면 좋을 것 같다.
상품 삭제도 마찬가지
게시글 생성 성공
게시글 단건 조회 성공
전체 게시글 조회 역시 페이징 처리 문제 때문에 안 됨.
게시글 수정 역시 문제
게시글 삭제도 문제
댓글 생성 성공
- 그런데 H2 DB 까보니, comment엔 잘 들어갔는데 BoardComment엔 안 들어가 있었다.
(매핑 관계 점검 필요)
댓글 수정 역시 수정이 완료되지 않았습니다(사용자 비교 로직 필요)
댓글 삭제도 400 에러, "댓글 삭제가 불가능합니다"(사용자 비교가 안 되어서)
관심내역, 거래내역, 신고내역, 채팅, 이메일 인증은 못함.
회원탈퇴
- 무결성 깨짐 오류라고 나옴. Board에서 사용자를 참조하고 있는데, 사용자를 삭제하게 되면 참조 무결성이 깨지는 문제 발생... 그래서 아마 사용자를 삭제하려면 게시글이 먼저 없어져야 할 듯.
게시글 없이 그냥 로그인만 하고 나서 성공하면 (반환 메시지 없이)삭제 정상적으로 완료됨.
일단, 포스트맨에 집어넣은 요소들
(잊어버릴까봐 한방에 정리)
{
"info": {
"_postman_id": "7928ece8-ce9a-4a51-8fb6-2ec41cd36759",
"name": "market",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
"_exporter_id": "25916402"
},
"item": [
{
"name": "회원가입",
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "raw",
"raw": "{\n \"username\" : \"hello123\",\n \"password\" : \"Password12!\",\n \"phoneNumber\" : \"010-5678-1234\",\n \"email\" : \"abcde@gmail.com\",\n \"nickname\" : \"hong12\",\n \"region\" : \"서울특별시 강남구 신사동\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "http://localhost:8080/users/signup",
"protocol": "http",
"host": [
"localhost"
],
"port": "8080",
"path": [
"users",
"signup"
]
}
},
"response": []
},
{
"name": "회원탈퇴",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJoZWxsbzEyMyIsImF1dGgiOiJNRU1CRVIiLCJleHAiOjE2NzY5MDE2MDUsImlhdCI6MTY3Njg5ODAwNX0.5wSn0URZZE0LIUaNew3TpXV8_sZ_EYnWGnmRMl_0kis",
"type": "string"
}
]
},
"method": "DELETE",
"header": [],
"body": {
"mode": "raw",
"raw": "",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "http://localhost:8080/users/1",
"protocol": "http",
"host": [
"localhost"
],
"port": "8080",
"path": [
"users",
"1"
]
}
},
"response": []
},
{
"name": "비밀번호 변경",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJoZWxsbzEyMyIsImF1dGgiOiJNRU1CRVIiLCJleHAiOjE2NzcxMTE0MDQsImlhdCI6MTY3Njg5NTQwNH0.imkwYdxnJHn3rqmZ8vDeLh07qusJqT3ccgvLl6JvmSw",
"type": "string"
}
]
},
"method": "PUT",
"header": [],
"body": {
"mode": "raw",
"raw": "{\n \"password\":\"Password34!\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "localhost:8080/users/update/pw",
"host": [
"localhost"
],
"port": "8080",
"path": [
"users",
"update",
"pw"
]
}
},
"response": []
},
{
"name": "지역수정",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJoZWxsbzEyMyIsImF1dGgiOiJNRU1CRVIiLCJleHAiOjE2NzcxMTE0MDQsImlhdCI6MTY3Njg5NTQwNH0.imkwYdxnJHn3rqmZ8vDeLh07qusJqT3ccgvLl6JvmSw",
"type": "string"
}
]
},
"method": "PUT",
"header": [],
"body": {
"mode": "raw",
"raw": "{\n \"region\":\"서울특별시 강남구 대치동\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "localhost:8080/users/update/region",
"host": [
"localhost"
],
"port": "8080",
"path": [
"users",
"update",
"region"
]
}
},
"response": []
},
{
"name": "\b로그인",
"request": {
"auth": {
"type": "bearer"
},
"method": "POST",
"header": [],
"body": {
"mode": "raw",
"raw": "{\n \"username\" : \"hello123\",\n \"password\" : \"Password12!\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "http://localhost:8080/users/login",
"protocol": "http",
"host": [
"localhost"
],
"port": "8080",
"path": [
"users",
"login"
]
}
},
"response": []
},
{
"name": "상품등록",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJoZWxsbzEyMyIsImF1dGgiOiJNRU1CRVIiLCJleHAiOjE2NzcxMTE0MDQsImlhdCI6MTY3Njg5NTQwNH0.imkwYdxnJHn3rqmZ8vDeLh07qusJqT3ccgvLl6JvmSw",
"type": "string"
}
]
},
"method": "POST",
"header": [],
"body": {
"mode": "raw",
"raw": "{\n \"price\" : 5000,\n \"productName\": \"아메리카노\",\n \"img\": \"test-url\",\n \"category\": \"FOOD\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "http://localhost:8080/products",
"protocol": "http",
"host": [
"localhost"
],
"port": "8080",
"path": [
"products"
]
}
},
"response": []
},
{
"name": "전체 상품 조회",
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJoZWxsbzEyMyIsImF1dGgiOiJNRU1CRVIiLCJleHAiOjE2NzY4OTk2NjIsImlhdCI6MTY3Njg5NjA2Mn0.UvP5AWebvpkkJtcserDSff51wg-4Yqcusbn3BUsfUGo",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"body": {
"mode": "raw",
"raw": "{\n \"page\": 1,\n \"size\": 1,\n \"asc\": true\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "http://localhost:8080/products",
"protocol": "http",
"host": [
"localhost"
],
"port": "8080",
"path": [
"products"
]
}
},
"response": []
},
{
"name": "상품조회",
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJoZWxsbzEyMyIsImF1dGgiOiJNRU1CRVIiLCJleHAiOjE2NzY4OTk2NjIsImlhdCI6MTY3Njg5NjA2Mn0.UvP5AWebvpkkJtcserDSff51wg-4Yqcusbn3BUsfUGo",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"body": {
"mode": "raw",
"raw": "{\n \"page\": 1,\n \"size\": 1\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "http://localhost:8080/products/1",
"protocol": "http",
"host": [
"localhost"
],
"port": "8080",
"path": [
"products",
"1"
]
}
},
"response": []
},
{
"name": "상품수정",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJoZWxsbzEyMyIsImF1dGgiOiJNRU1CRVIiLCJleHAiOjE2NzcxMTI1NjgsImlhdCI6MTY3Njg5NjU2OH0.hm0ft-4rA2ZV4QSS1a9ZXAM7YEz881iUEYceejGwWII",
"type": "string"
}
]
},
"method": "PUT",
"header": [],
"body": {
"mode": "raw",
"raw": "{\n \"price\" : 6000,\n \"productName\": \"아이스 아메리카노\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "http://localhost:8080/products/update/1",
"protocol": "http",
"host": [
"localhost"
],
"port": "8080",
"path": [
"products",
"update",
"1"
]
}
},
"response": []
},
{
"name": "상품삭제",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJoZWxsbzEyMyIsImF1dGgiOiJNRU1CRVIiLCJleHAiOjE2NzcxMTI1NjgsImlhdCI6MTY3Njg5NjU2OH0.hm0ft-4rA2ZV4QSS1a9ZXAM7YEz881iUEYceejGwWII",
"type": "string"
}
]
},
"method": "DELETE",
"header": [],
"body": {
"mode": "raw",
"raw": "{\n \"price\" : 6000,\n \"productName\": \"아이스 아메리카노\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "http://localhost:8080/products/1",
"protocol": "http",
"host": [
"localhost"
],
"port": "8080",
"path": [
"products",
"1"
]
}
},
"response": []
},
{
"name": "게시글 조회",
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJoZWxsbzEyMyIsImF1dGgiOiJNRU1CRVIiLCJleHAiOjE2NzY5MDA0MzksImlhdCI6MTY3Njg5NjgzOX0.8cE8UWlFgp-UkN72eElcH0SolysmrsawZlET_NCtaP8",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"body": {
"mode": "raw",
"raw": "",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "http://localhost:8080/boards/1",
"protocol": "http",
"host": [
"localhost"
],
"port": "8080",
"path": [
"boards",
"1"
]
}
},
"response": []
},
{
"name": "게시글 등록",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJoZWxsbzEyMyIsImF1dGgiOiJNRU1CRVIiLCJleHAiOjE2NzY5MDA0MzksImlhdCI6MTY3Njg5NjgzOX0.8cE8UWlFgp-UkN72eElcH0SolysmrsawZlET_NCtaP8",
"type": "string"
}
]
},
"method": "POST",
"header": [],
"body": {
"mode": "raw",
"raw": "{\n \"title\" : \"제목1\",\n\"contents\":\"본문1\",\n\"subject\": \"공지사항\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "http://localhost:8080/boards",
"protocol": "http",
"host": [
"localhost"
],
"port": "8080",
"path": [
"boards"
]
}
},
"response": []
},
{
"name": "전체 게시글 조회",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJoZWxsbzEyMyIsImF1dGgiOiJNRU1CRVIiLCJleHAiOjE2NzcxMTI4MzksImlhdCI6MTY3Njg5NjgzOX0.dRpZsZJ5IVDBQN2KjH__bE4-STNosiYIuN0iAq7vxLw",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8080/boards",
"protocol": "http",
"host": [
"localhost"
],
"port": "8080",
"path": [
"boards"
]
}
},
"response": []
},
{
"name": "게시글 수정",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJoZWxsbzEyMyIsImF1dGgiOiJNRU1CRVIiLCJleHAiOjE2NzcxMTI4MzksImlhdCI6MTY3Njg5NjgzOX0.dRpZsZJ5IVDBQN2KjH__bE4-STNosiYIuN0iAq7vxLw",
"type": "string"
}
]
},
"method": "PUT",
"header": [],
"body": {
"mode": "raw",
"raw": "{\n\"title\" : \"제목2\",\n\"contents\":\"본문2\",\n\"subject\": \"동네소식\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "http://localhost:8080/boards/1",
"protocol": "http",
"host": [
"localhost"
],
"port": "8080",
"path": [
"boards",
"1"
]
}
},
"response": []
},
{
"name": "게시글 삭제",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJoZWxsbzEyMyIsImF1dGgiOiJNRU1CRVIiLCJleHAiOjE2NzcxMTI4MzksImlhdCI6MTY3Njg5NjgzOX0.dRpZsZJ5IVDBQN2KjH__bE4-STNosiYIuN0iAq7vxLw",
"type": "string"
}
]
},
"method": "DELETE",
"header": [],
"url": {
"raw": "http://localhost:8080/boards/1",
"protocol": "http",
"host": [
"localhost"
],
"port": "8080",
"path": [
"boards",
"1"
]
}
},
"response": []
},
{
"name": "댓글 등록",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJoZWxsbzEyMyIsImF1dGgiOiJNRU1CRVIiLCJleHAiOjE2NzcxMTI4MzksImlhdCI6MTY3Njg5NjgzOX0.dRpZsZJ5IVDBQN2KjH__bE4-STNosiYIuN0iAq7vxLw",
"type": "string"
}
]
},
"method": "POST",
"header": [],
"body": {
"mode": "raw",
"raw": "{\n\"commentContents\":\"댓글 내용132\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "http://localhost:8080/comments/board/1",
"protocol": "http",
"host": [
"localhost"
],
"port": "8080",
"path": [
"comments",
"board",
"1"
]
}
},
"response": []
},
{
"name": "댓글 수정",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJoZWxsbzEyMyIsImF1dGgiOiJNRU1CRVIiLCJleHAiOjE2NzcxMTI4MzksImlhdCI6MTY3Njg5NjgzOX0.dRpZsZJ5IVDBQN2KjH__bE4-STNosiYIuN0iAq7vxLw",
"type": "string"
}
]
},
"method": "PUT",
"header": [],
"body": {
"mode": "raw",
"raw": "{\n\"commentContents\":\"댓글 내용456\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "http://localhost:8080/comments/1",
"protocol": "http",
"host": [
"localhost"
],
"port": "8080",
"path": [
"comments",
"1"
]
}
},
"response": []
},
{
"name": "댓글 삭제",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJoZWxsbzEyMyIsImF1dGgiOiJNRU1CRVIiLCJleHAiOjE2NzcxMTI4MzksImlhdCI6MTY3Njg5NjgzOX0.dRpZsZJ5IVDBQN2KjH__bE4-STNosiYIuN0iAq7vxLw",
"type": "string"
}
]
},
"method": "DELETE",
"header": [],
"url": {
"raw": "http://localhost:8080/comments/1",
"protocol": "http",
"host": [
"localhost"
],
"port": "8080",
"path": [
"comments",
"1"
]
}
},
"response": []
}
]
}
'Spring > 부트캠프' 카테고리의 다른 글
Day11-2 메소드 도입 (0) | 2023.03.29 |
---|---|
230217 최종프로젝트 Board단 코드 설명 (0) | 2023.02.25 |
[스파르타] SpringData JPA 페이징 심화 (0) | 2023.02.20 |
Spring 입문 과제 수행 관련 (0) | 2023.01.15 |