baseline: 批次A-D 成果 + membership 半成品(测试红)
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
"""快速验证 AsyncClient 是否能带 header 跑通。"""
|
||||
|
||||
import asyncio
|
||||
import os
|
||||
import django
|
||||
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.dev")
|
||||
django.setup()
|
||||
|
||||
from django.test import AsyncClient
|
||||
from rest_framework_simplejwt.tokens import RefreshToken
|
||||
from django.contrib.auth import get_user_model
|
||||
from apps.core.models import Tenant
|
||||
from asgiref.sync import sync_to_async
|
||||
|
||||
|
||||
async def main():
|
||||
tenant, _ = await sync_to_async(Tenant.objects.get_or_create)(
|
||||
code="default", defaults={"name": "默认", "is_active": True}
|
||||
)
|
||||
user = await sync_create_user()
|
||||
token = await sync_make_token(user)
|
||||
print(f"[setup] tenant={tenant.code} user={user.username} token-len={len(token)}")
|
||||
|
||||
client = AsyncClient()
|
||||
r1 = await client.get("/api/v1/ping/")
|
||||
print(f"[ping] {r1.status_code} {r1.content[:120]}")
|
||||
|
||||
r2 = await client.get(
|
||||
"/api/v1/catalog/products/",
|
||||
HTTP_AUTHORIZATION=f"Bearer {token}",
|
||||
HTTP_X_TENANT_ID=tenant.code,
|
||||
)
|
||||
print(f"[catalog/list] {r2.status_code} {r2.content[:300]}")
|
||||
|
||||
import json
|
||||
body = json.dumps({"code": "P001", "name": "测试商品", "status": "active"})
|
||||
r3 = await client.post(
|
||||
"/api/v1/catalog/products/",
|
||||
data=body,
|
||||
content_type="application/json",
|
||||
HTTP_AUTHORIZATION=f"Bearer {token}",
|
||||
HTTP_X_TENANT_ID=tenant.code,
|
||||
)
|
||||
print(f"[catalog/create] {r3.status_code} {r3.content[:300]}")
|
||||
|
||||
|
||||
@sync_to_async
|
||||
def sync_create_user():
|
||||
U = get_user_model()
|
||||
user, _ = U.objects.get_or_create(username="alice", defaults={"email": "a@a.com"})
|
||||
user.set_password("alice12345")
|
||||
user.save()
|
||||
return user
|
||||
|
||||
|
||||
@sync_to_async
|
||||
def sync_make_token(user):
|
||||
refresh = RefreshToken.for_user(user)
|
||||
return str(refresh.access_token)
|
||||
|
||||
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user