216 lines
7.2 KiB
Python
216 lines
7.2 KiB
Python
"""Integration tests for settings endpoints."""
|
|
|
|
import pytest
|
|
|
|
|
|
@pytest.mark.integration
|
|
class TestSettingsIntegration:
|
|
"""Integration tests for user settings management."""
|
|
|
|
def test_get_settings_success(self, client, auth_headers):
|
|
"""Test getting user settings from real DB API."""
|
|
response = client.get("/api/v1/settings", headers=auth_headers)
|
|
|
|
|
|
assert response.status_code in [200, 404]
|
|
|
|
if response.status_code == 200:
|
|
data = response.json()
|
|
assert "user_id" in data
|
|
assert "settings" in data
|
|
assert "updated_at" in data
|
|
|
|
|
|
settings = data["settings"]
|
|
for env in ["ift", "psi", "prod"]:
|
|
if env in settings:
|
|
env_settings = settings[env]
|
|
assert "apiMode" in env_settings
|
|
assert env_settings["apiMode"] in ["bench", "backend"]
|
|
|
|
def test_update_settings_full(self, client, auth_headers):
|
|
"""Test updating settings for all environments."""
|
|
update_data = {
|
|
"settings": {
|
|
"ift": {
|
|
"apiMode": "bench",
|
|
"bearerToken": "test-token-ift",
|
|
"systemPlatform": "test-platform",
|
|
"systemPlatformUser": "test-user",
|
|
"platformUserId": "user-123",
|
|
"platformId": "platform-123",
|
|
"withClassify": True,
|
|
"resetSessionMode": False
|
|
},
|
|
"psi": {
|
|
"apiMode": "backend",
|
|
"bearerToken": "test-token-psi",
|
|
"systemPlatform": "test-platform",
|
|
"systemPlatformUser": "test-user",
|
|
"platformUserId": "user-456",
|
|
"platformId": "platform-456",
|
|
"withClassify": False,
|
|
"resetSessionMode": True
|
|
},
|
|
"prod": {
|
|
"apiMode": "bench",
|
|
"bearerToken": "test-token-prod",
|
|
"systemPlatform": "test-platform",
|
|
"systemPlatformUser": "test-user",
|
|
"platformUserId": "user-789",
|
|
"platformId": "platform-789",
|
|
"withClassify": False,
|
|
"resetSessionMode": False
|
|
}
|
|
}
|
|
}
|
|
|
|
response = client.put(
|
|
"/api/v1/settings",
|
|
json=update_data,
|
|
headers=auth_headers
|
|
)
|
|
|
|
assert response.status_code == 200
|
|
|
|
data = response.json()
|
|
assert "user_id" in data
|
|
assert "settings" in data
|
|
assert "updated_at" in data
|
|
|
|
|
|
assert data["settings"]["ift"]["apiMode"] == "bench"
|
|
assert data["settings"]["ift"]["bearerToken"] == "test-token-ift"
|
|
assert data["settings"]["psi"]["apiMode"] == "backend"
|
|
assert data["settings"]["prod"]["apiMode"] == "bench"
|
|
|
|
def test_update_settings_partial(self, client, auth_headers):
|
|
"""Test updating settings for single environment."""
|
|
update_data = {
|
|
"settings": {
|
|
"ift": {
|
|
"apiMode": "backend",
|
|
"bearerToken": "updated-token",
|
|
"systemPlatform": "updated-platform",
|
|
"systemPlatformUser": "updated-user",
|
|
"platformUserId": "updated-user-id",
|
|
"platformId": "updated-platform-id",
|
|
"withClassify": True,
|
|
"resetSessionMode": True
|
|
}
|
|
}
|
|
}
|
|
|
|
response = client.put(
|
|
"/api/v1/settings",
|
|
json=update_data,
|
|
headers=auth_headers
|
|
)
|
|
|
|
assert response.status_code == 200
|
|
|
|
data = response.json()
|
|
assert data["settings"]["ift"]["apiMode"] == "backend"
|
|
assert data["settings"]["ift"]["bearerToken"] == "updated-token"
|
|
|
|
def test_update_then_get_settings(self, client, auth_headers):
|
|
"""Test updating settings and then retrieving them."""
|
|
|
|
update_data = {
|
|
"settings": {
|
|
"ift": {
|
|
"apiMode": "bench",
|
|
"bearerToken": "integration-test-token",
|
|
"systemPlatform": "test",
|
|
"systemPlatformUser": "test",
|
|
"platformUserId": "test-123",
|
|
"platformId": "test-456",
|
|
"withClassify": False,
|
|
"resetSessionMode": True
|
|
}
|
|
}
|
|
}
|
|
|
|
put_response = client.put(
|
|
"/api/v1/settings",
|
|
json=update_data,
|
|
headers=auth_headers
|
|
)
|
|
|
|
assert put_response.status_code == 200
|
|
|
|
|
|
get_response = client.get("/api/v1/settings", headers=auth_headers)
|
|
|
|
assert get_response.status_code == 200
|
|
|
|
data = get_response.json()
|
|
assert data["settings"]["ift"]["bearerToken"] == "integration-test-token"
|
|
assert data["settings"]["ift"]["platformUserId"] == "test-123"
|
|
|
|
def test_update_settings_invalid_api_mode(self, client, auth_headers):
|
|
"""Test updating settings with invalid apiMode."""
|
|
update_data = {
|
|
"settings": {
|
|
"ift": {
|
|
"apiMode": "invalid_mode",
|
|
"bearerToken": "",
|
|
"systemPlatform": "",
|
|
"systemPlatformUser": "",
|
|
"platformUserId": "",
|
|
"platformId": "",
|
|
"withClassify": False,
|
|
"resetSessionMode": True
|
|
}
|
|
}
|
|
}
|
|
|
|
response = client.put(
|
|
"/api/v1/settings",
|
|
json=update_data,
|
|
headers=auth_headers
|
|
)
|
|
|
|
|
|
|
|
assert response.status_code in [200, 400]
|
|
|
|
def test_settings_persistence(self, client, auth_headers):
|
|
"""Test that settings persist across requests."""
|
|
|
|
unique_token = "persistence-test-token-12345"
|
|
update_data = {
|
|
"settings": {
|
|
"psi": {
|
|
"apiMode": "backend",
|
|
"bearerToken": unique_token,
|
|
"systemPlatform": "test",
|
|
"systemPlatformUser": "test",
|
|
"platformUserId": "test",
|
|
"platformId": "test",
|
|
"withClassify": True,
|
|
"resetSessionMode": False
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
client.put("/api/v1/settings", json=update_data, headers=auth_headers)
|
|
|
|
|
|
for _ in range(3):
|
|
response = client.get("/api/v1/settings", headers=auth_headers)
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert data["settings"]["psi"]["bearerToken"] == unique_token
|
|
|
|
def test_settings_require_authentication(self, client):
|
|
"""Test that settings endpoints require authentication."""
|
|
|
|
response = client.get("/api/v1/settings")
|
|
assert response.status_code == 401
|
|
|
|
|
|
response = client.put("/api/v1/settings", json={"settings": {}})
|
|
assert response.status_code == 401
|