teszt állományok áthelyezése és szelektálása
This commit is contained in:
137
tests/archive/test_onboard_fix.py.old
Normal file
137
tests/archive/test_onboard_fix.py.old
Normal file
@@ -0,0 +1,137 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Test script for verifying the POST /api/v1/organizations/onboard fix.
|
||||
Creates a new organization with unique tax number and verifies that
|
||||
a default main branch is automatically created.
|
||||
"""
|
||||
import asyncio
|
||||
import aiohttp
|
||||
import json
|
||||
import sys
|
||||
from datetime import datetime
|
||||
|
||||
API_BASE = "http://localhost:8000/api/v1"
|
||||
TEST_USER_EMAIL = "kincses@gmail.com"
|
||||
TEST_USER_PASSWORD = "MiskociA74" # From .env PGADMIN password (likely same)
|
||||
|
||||
async def get_auth_token(session):
|
||||
"""Authenticate and get JWT token."""
|
||||
login_url = f"{API_BASE}/auth/login"
|
||||
login_data = {
|
||||
"username": TEST_USER_EMAIL,
|
||||
"password": TEST_USER_PASSWORD
|
||||
}
|
||||
try:
|
||||
async with session.post(login_url, json=login_data) as resp:
|
||||
if resp.status != 200:
|
||||
print(f"Login failed: {resp.status}")
|
||||
text = await resp.text()
|
||||
print(f"Response: {text}")
|
||||
return None
|
||||
data = await resp.json()
|
||||
return data.get("access_token")
|
||||
except Exception as e:
|
||||
print(f"Login error: {e}")
|
||||
return None
|
||||
|
||||
async def create_test_organization(session, token):
|
||||
"""Create a new organization with unique tax number."""
|
||||
onboard_url = f"{API_BASE}/organizations/onboard"
|
||||
# Generate unique tax number: 98765432-1-11 + timestamp to avoid conflicts
|
||||
timestamp = datetime.now().strftime("%H%M%S")
|
||||
tax_number = f"98765432-1-{timestamp[-2:]}" # Use last 2 digits of timestamp
|
||||
|
||||
org_data = {
|
||||
"full_name": "Auto-Fixer Pro Kft.",
|
||||
"name": "AutoFixerPro",
|
||||
"display_name": "Auto-Fixer Pro",
|
||||
"tax_number": tax_number,
|
||||
"reg_number": "01-09-123456",
|
||||
"country_code": "HU",
|
||||
"address_zip": "1234",
|
||||
"address_city": "Budapest",
|
||||
"address_street_name": "Teszt utca",
|
||||
"address_street_type": "utca",
|
||||
"address_house_number": "42",
|
||||
"address_hrsz": ""
|
||||
}
|
||||
|
||||
headers = {"Authorization": f"Bearer {token}"}
|
||||
async with session.post(onboard_url, json=org_data, headers=headers) as resp:
|
||||
if resp.status != 201:
|
||||
print(f"Organization creation failed: {resp.status}")
|
||||
text = await resp.text()
|
||||
print(f"Response: {text}")
|
||||
return None
|
||||
data = await resp.json()
|
||||
print(f"Organization created successfully: {data}")
|
||||
return data.get("organization_id")
|
||||
|
||||
async def get_my_organizations(session, token):
|
||||
"""Get list of organizations for current user."""
|
||||
url = f"{API_BASE}/organizations/my"
|
||||
headers = {"Authorization": f"Bearer {token}"}
|
||||
async with session.get(url, headers=headers) as resp:
|
||||
if resp.status != 200:
|
||||
print(f"Failed to get organizations: {resp.status}")
|
||||
return []
|
||||
return await resp.json()
|
||||
|
||||
async def check_branches_via_sql(org_id):
|
||||
"""Check if branch exists via direct SQL query in container."""
|
||||
import subprocess
|
||||
# Use docker exec to query PostgreSQL
|
||||
cmd = [
|
||||
"docker", "exec", "shared-postgres",
|
||||
"psql", "-U", "kincses", "-d", "service_finder", "-c",
|
||||
f"SELECT id, name, is_main FROM fleet.branches WHERE organization_id = {org_id};"
|
||||
]
|
||||
try:
|
||||
result = subprocess.run(cmd, capture_output=True, text=True)
|
||||
print("SQL Query Result:")
|
||||
print(result.stdout)
|
||||
if result.returncode != 0:
|
||||
print(f"SQL Error: {result.stderr}")
|
||||
return "Központi Telephely" in result.stdout
|
||||
except Exception as e:
|
||||
print(f"SQL check error: {e}")
|
||||
return False
|
||||
|
||||
async def main():
|
||||
print("=== Testing Organization Onboard Fix ===")
|
||||
print("1. Authenticating...")
|
||||
|
||||
async with aiohttp.ClientSession() as session:
|
||||
token = await get_auth_token(session)
|
||||
if not token:
|
||||
print("Authentication failed. Exiting.")
|
||||
sys.exit(1)
|
||||
print(f"Token obtained: {token[:20]}...")
|
||||
|
||||
print("\n2. Creating test organization...")
|
||||
org_id = await create_test_organization(session, token)
|
||||
if not org_id:
|
||||
print("Organization creation failed. Exiting.")
|
||||
sys.exit(1)
|
||||
print(f"Organization ID: {org_id}")
|
||||
|
||||
print("\n3. Fetching user's organizations...")
|
||||
orgs = await get_my_organizations(session, token)
|
||||
print(f"Total organizations for user: {len(orgs)}")
|
||||
for org in orgs:
|
||||
if org.get("organization_id") == org_id:
|
||||
print(f" Found created org: {org}")
|
||||
break
|
||||
|
||||
print("\n4. Checking for default branch via SQL...")
|
||||
branch_exists = await check_branches_via_sql(org_id)
|
||||
if branch_exists:
|
||||
print("✅ SUCCESS: Default main branch 'Központi Telephely' was automatically created!")
|
||||
else:
|
||||
print("❌ FAIL: No default branch found.")
|
||||
sys.exit(1)
|
||||
|
||||
print("\n=== Test completed successfully ===")
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user