73 lines
2.2 KiB
Python
73 lines
2.2 KiB
Python
"""Tests for onboarding status endpoints."""
|
|
|
|
import pytest
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_onboarding_status_fresh_user(client, auth_headers):
|
|
"""Fresh user should have all onboarding items false."""
|
|
response = await client.get(
|
|
"/api/v1/users/onboarding-status",
|
|
headers=auth_headers,
|
|
)
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
|
|
assert data["created_flow"] is False
|
|
assert data["ran_session"] is False
|
|
assert data["exported_session"] is False
|
|
assert data["tried_ai_assistant"] is False
|
|
assert data["invited_teammate"] is False
|
|
assert data["connected_psa"] is False
|
|
assert data["is_team_user"] is False
|
|
assert data["dismissed"] is False
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_onboarding_dismiss(client, auth_headers):
|
|
"""Dismiss endpoint should set dismissed to true."""
|
|
# Verify starts as false
|
|
response = await client.get(
|
|
"/api/v1/users/onboarding-status",
|
|
headers=auth_headers,
|
|
)
|
|
assert response.status_code == 200
|
|
assert response.json()["dismissed"] is False
|
|
|
|
# Dismiss
|
|
response = await client.post(
|
|
"/api/v1/users/onboarding-status/dismiss",
|
|
headers=auth_headers,
|
|
)
|
|
assert response.status_code == 200
|
|
assert response.json()["dismissed"] is True
|
|
|
|
# Verify persisted
|
|
response = await client.get(
|
|
"/api/v1/users/onboarding-status",
|
|
headers=auth_headers,
|
|
)
|
|
assert response.status_code == 200
|
|
assert response.json()["dismissed"] is True
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_onboarding_created_flow_after_tree_creation(client, auth_headers, test_tree):
|
|
"""After creating a tree, created_flow should be true."""
|
|
response = await client.get(
|
|
"/api/v1/users/onboarding-status",
|
|
headers=auth_headers,
|
|
)
|
|
assert response.status_code == 200
|
|
assert response.json()["created_flow"] is True
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_onboarding_requires_auth(client):
|
|
"""Unauthenticated requests should be rejected."""
|
|
response = await client.get("/api/v1/users/onboarding-status")
|
|
assert response.status_code == 401
|
|
|
|
response = await client.post("/api/v1/users/onboarding-status/dismiss")
|
|
assert response.status_code == 401
|