frontend kínlódás
This commit is contained in:
130
test_integration.py
Normal file
130
test_integration.py
Normal file
@@ -0,0 +1,130 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Integration test for the Smart Vehicle Registration fixes.
|
||||
Tests: login, catalog filtering, vehicle registration.
|
||||
"""
|
||||
import asyncio
|
||||
import sys
|
||||
import os
|
||||
sys.path.insert(0, '/app')
|
||||
|
||||
from fastapi.testclient import TestClient
|
||||
from app.api.v1.api import api_router
|
||||
from fastapi import FastAPI
|
||||
from app.core.config import settings
|
||||
import json
|
||||
|
||||
app = FastAPI()
|
||||
app.include_router(api_router)
|
||||
client = TestClient(app)
|
||||
|
||||
def test_login():
|
||||
"""Login with tester_pro@profibot.hu and Password123!"""
|
||||
print("1. Testing login...")
|
||||
response = client.post("/auth/login", json={
|
||||
"email": "tester_pro@profibot.hu",
|
||||
"password": "Password123!"
|
||||
})
|
||||
if response.status_code != 200:
|
||||
print(f" ❌ Login failed: {response.status_code} {response.text}")
|
||||
return None
|
||||
token = response.json().get("access_token")
|
||||
print(f" ✅ Login successful, token: {token[:20]}...")
|
||||
return token
|
||||
|
||||
def test_catalog_makes(token):
|
||||
"""Test catalog makes endpoint with auth."""
|
||||
print("2. Testing catalog makes...")
|
||||
response = client.get("/catalog/makes", headers={"Authorization": f"Bearer {token}"})
|
||||
if response.status_code != 200:
|
||||
print(f" ❌ Makes failed: {response.status_code} {response.text}")
|
||||
return None
|
||||
makes = response.json()
|
||||
print(f" ✅ Makes retrieved: {len(makes)} items")
|
||||
return makes
|
||||
|
||||
def test_catalog_models_filter(token, make, vehicle_class):
|
||||
"""Test catalog models endpoint with vehicle_class filter."""
|
||||
print(f"3. Testing catalog models with make={make}, vehicle_class={vehicle_class}...")
|
||||
params = {"make": make}
|
||||
if vehicle_class:
|
||||
params["vehicle_class"] = vehicle_class
|
||||
response = client.get("/catalog/models", headers={"Authorization": f"Bearer {token}"}, params=params)
|
||||
if response.status_code != 200:
|
||||
print(f" ❌ Models failed: {response.status_code} {response.text}")
|
||||
return None
|
||||
models = response.json()
|
||||
print(f" ✅ Models retrieved: {len(models)} items")
|
||||
return models
|
||||
|
||||
def test_vehicle_registration(token, org_id=None):
|
||||
"""Test vehicle registration endpoint with a minimal payload."""
|
||||
print("4. Testing vehicle registration...")
|
||||
payload = {
|
||||
"license_plate": "TEST-123",
|
||||
"brand": "Toyota",
|
||||
"model": "Corolla",
|
||||
"vehicle_class": "passenger_car",
|
||||
"fuel_type": "petrol",
|
||||
"current_mileage": 50000,
|
||||
"status": "draft",
|
||||
"organization_id": org_id,
|
||||
"owner_org_id": org_id,
|
||||
"operator_org_id": org_id,
|
||||
}
|
||||
response = client.post("/assets/vehicles",
|
||||
headers={"Authorization": f"Bearer {token}", "Content-Type": "application/json"},
|
||||
json=payload)
|
||||
if response.status_code not in (200, 201):
|
||||
print(f" ❌ Registration failed: {response.status_code} {response.text}")
|
||||
return None
|
||||
result = response.json()
|
||||
print(f" ✅ Vehicle registered: ID {result.get('id')}")
|
||||
return result
|
||||
|
||||
def main():
|
||||
print("=== Integration Test for Smart Vehicle Registration Fixes ===")
|
||||
token = test_login()
|
||||
if not token:
|
||||
print("❌ Test aborted due to login failure.")
|
||||
return
|
||||
|
||||
makes = test_catalog_makes(token)
|
||||
if not makes:
|
||||
print("❌ Test aborted due to catalog failure.")
|
||||
return
|
||||
|
||||
# Test filtering
|
||||
test_make = makes[0] if makes else "Toyota"
|
||||
models_all = test_catalog_models_filter(token, test_make, None)
|
||||
models_car = test_catalog_models_filter(token, test_make, "passenger_car")
|
||||
models_motorcycle = test_catalog_models_filter(token, test_make, "motorcycle")
|
||||
|
||||
# Compare counts
|
||||
if models_all and models_car:
|
||||
if len(models_car) <= len(models_all):
|
||||
print(" ✅ Filtering works (car count <= all count)")
|
||||
else:
|
||||
print(" ⚠ Filtering anomaly (car count > all count)")
|
||||
|
||||
# Test registration (requires organization ID, but we can try without)
|
||||
# First get user's organizations
|
||||
print("5. Fetching user organizations...")
|
||||
response = client.get("/organizations/my", headers={"Authorization": f"Bearer {token}"})
|
||||
if response.status_code == 200:
|
||||
orgs = response.json()
|
||||
if orgs:
|
||||
org_id = orgs[0].get("organization_id")
|
||||
print(f" Using organization ID: {org_id}")
|
||||
test_vehicle_registration(token, org_id)
|
||||
else:
|
||||
print(" No organizations, testing without org...")
|
||||
test_vehicle_registration(token, None)
|
||||
else:
|
||||
print(f" Could not fetch organizations: {response.status_code}")
|
||||
test_vehicle_registration(token, None)
|
||||
|
||||
print("=== Integration Test Completed ===")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user