코드 그라데이션

200220 API 테스트해보기 본문

Spring/부트캠프

200220 API 테스트해보기

완벽한 장면 2023. 2. 21. 07:50

회원가입 통과

로그인 통과

비밀번호 수정은 검증 로직이 이상하다. 검증 로직만 주석처리 하고 다시 해보니까 통과 되더라고.

지역 수정 통과

프로필 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": []
		}
	]
}
728x90
Comments