Files
ga-commission-system/smoke_v78.py
T

56 lines
1.8 KiB
Python
Raw Normal View History

# -*- coding: utf-8 -*-
"""P5-W3 본론(V75~V78) 스모크 테스트 — 로그인 후 신규 엔드포인트 검증"""
import json
import urllib.request
BASE = "http://localhost:8082"
def call(method, path, token=None, body=None):
data = json.dumps(body).encode() if body is not None else None
req = urllib.request.Request(BASE + path, data=data, method=method)
req.add_header("Content-Type", "application/json")
if token:
req.add_header("Authorization", "Bearer " + token)
try:
with urllib.request.urlopen(req, timeout=15) as r:
return r.status, json.loads(r.read().decode())
except urllib.error.HTTPError as e:
return e.code, json.loads(e.read().decode() or "{}")
# 1. 로그인
for pw in ["admin1234!", "admin1234", "admin"]:
st, bd = call("POST", "/api/auth/login", body={"loginId": "admin", "password": pw})
if st == 200 and bd.get("success"):
token = bd["data"]["accessToken"]
print("[LOGIN] OK (pw=%s) roles=%s" % (pw, bd["data"].get("roles")))
break
else:
print("[LOGIN] FAIL: %s %s" % (st, bd))
raise SystemExit(1)
# 2. 신규 + 회귀 엔드포인트 GET 검증
endpoints = [
"/api/accounting-closes",
"/api/year-end-statements",
"/api/forecast-kpi",
"/api/retention-anomalies",
"/api/agent-annual-incomes",
"/api/accounting-entries",
"/api/withholding-tax-reports",
"/api/vat-reports",
]
ok = 0
for ep in endpoints:
st, bd = call("GET", ep, token)
success = st == 200 and bd.get("success")
cnt = ""
if success and isinstance(bd.get("data"), dict) and "list" in bd["data"]:
cnt = " (list=%d)" % len(bd["data"]["list"])
print(" [%s] GET %s -> %s%s" % ("PASS" if success else "FAIL", ep, st, cnt))
if success:
ok += 1
print("\n[RESULT] %d/%d endpoints PASS" % (ok, len(endpoints)))