baseline: 批次A-D 成果 + membership 半成品(测试红)
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
"""同步跑通验证:用 sync APIClient 验证 token/headers/租户/CRUD。"""
|
||||
|
||||
import os
|
||||
import django
|
||||
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.dev")
|
||||
django.setup()
|
||||
|
||||
import json
|
||||
from rest_framework.test import APIClient
|
||||
from rest_framework_simplejwt.tokens import RefreshToken
|
||||
from django.contrib.auth import get_user_model
|
||||
from apps.core.models import Tenant
|
||||
|
||||
|
||||
def main():
|
||||
tenant, _ = Tenant.objects.get_or_create(
|
||||
code="default", defaults={"name": "默认", "is_active": True}
|
||||
)
|
||||
U = get_user_model()
|
||||
user, _ = U.objects.get_or_create(username="alice", defaults={"email": "a@a.com"})
|
||||
user.set_password("alice12345")
|
||||
user.save()
|
||||
token = str(RefreshToken.for_user(user).access_token)
|
||||
print(f"[setup] tenant={tenant.code} user={user.username} token-len={len(token)}")
|
||||
|
||||
client = APIClient()
|
||||
client.credentials(HTTP_AUTHORIZATION=f"Bearer {token}", HTTP_X_TENANT_ID=tenant.code)
|
||||
|
||||
r1 = client.get("/api/v1/ping/")
|
||||
print(f"[ping] {r1.status_code} body={r1.content[:200].decode()}")
|
||||
|
||||
r2 = client.get("/api/v1/catalog/products/")
|
||||
print(f"[catalog/list] {r2.status_code} body={r2.content[:400].decode(errors='replace')}")
|
||||
|
||||
r3 = client.post(
|
||||
"/api/v1/catalog/products/",
|
||||
data=json.dumps({"code": "P001", "name": "测试商品", "status": "active"}),
|
||||
content_type="application/json",
|
||||
)
|
||||
print(f"[catalog/create] {r3.status_code} body={r3.content[:400].decode(errors='replace')}")
|
||||
|
||||
r4 = client.get("/api/v1/catalog/products/?search=P001")
|
||||
print(f"[catalog/search] {r4.status_code} body={r4.content[:400].decode(errors='replace')}")
|
||||
|
||||
|
||||
main()
|
||||
Reference in New Issue
Block a user