This commit is contained in:
@@ -7,11 +7,17 @@ from sqlalchemy import String
|
|||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
from app.auth.dependencies import get_current_user
|
from app.auth.dependencies import get_current_user
|
||||||
from app.models.auth import CognitoUser
|
|
||||||
from app.routers.channels import router as channels_router
|
from app.routers.channels import router as channels_router
|
||||||
from app.utils.database import get_db
|
from app.utils.database import get_db
|
||||||
|
|
||||||
# Import mocks from db_mocks
|
# Import mocks and fixtures
|
||||||
|
from tests.utils.auth_test_fixtures import (
|
||||||
|
admin_user_client,
|
||||||
|
db_session,
|
||||||
|
mock_get_current_user_admin,
|
||||||
|
mock_get_current_user_non_admin,
|
||||||
|
non_admin_user_client,
|
||||||
|
)
|
||||||
from tests.utils.db_mocks import (
|
from tests.utils.db_mocks import (
|
||||||
MockBase,
|
MockBase,
|
||||||
MockChannelDB,
|
MockChannelDB,
|
||||||
@@ -25,28 +31,6 @@ from tests.utils.db_mocks import session_mock as TestingSessionLocal
|
|||||||
# Create a FastAPI instance for testing
|
# Create a FastAPI instance for testing
|
||||||
app = FastAPI()
|
app = FastAPI()
|
||||||
|
|
||||||
|
|
||||||
# Mock current user
|
|
||||||
def mock_get_current_user_admin():
|
|
||||||
return CognitoUser(
|
|
||||||
username="testadmin",
|
|
||||||
email="testadmin@example.com",
|
|
||||||
roles=["admin"],
|
|
||||||
user_status="CONFIRMED",
|
|
||||||
enabled=True,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def mock_get_current_user_non_admin():
|
|
||||||
return CognitoUser(
|
|
||||||
username="testuser",
|
|
||||||
email="testuser@example.com",
|
|
||||||
roles=["user"], # Or any role other than admin
|
|
||||||
user_status="CONFIRMED",
|
|
||||||
enabled=True,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
# Override dependencies
|
# Override dependencies
|
||||||
app.dependency_overrides[get_db] = mock_get_db
|
app.dependency_overrides[get_db] = mock_get_db
|
||||||
app.include_router(channels_router)
|
app.include_router(channels_router)
|
||||||
@@ -54,41 +38,6 @@ app.include_router(channels_router)
|
|||||||
client = TestClient(app)
|
client = TestClient(app)
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="function")
|
|
||||||
def db_session():
|
|
||||||
# Create tables for each test function
|
|
||||||
MockBase.metadata.create_all(bind=engine_mock)
|
|
||||||
db = TestingSessionLocal()
|
|
||||||
try:
|
|
||||||
yield db
|
|
||||||
finally:
|
|
||||||
db.close()
|
|
||||||
# Drop tables after each test function
|
|
||||||
MockBase.metadata.drop_all(bind=engine_mock)
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="function")
|
|
||||||
def admin_user_client(db_session: Session):
|
|
||||||
"""Yields a TestClient configured with an admin user."""
|
|
||||||
test_app = FastAPI()
|
|
||||||
test_app.include_router(channels_router)
|
|
||||||
test_app.dependency_overrides[get_db] = mock_get_db
|
|
||||||
test_app.dependency_overrides[get_current_user] = mock_get_current_user_admin
|
|
||||||
with TestClient(test_app) as test_client:
|
|
||||||
yield test_client
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="function")
|
|
||||||
def non_admin_user_client(db_session: Session):
|
|
||||||
"""Yields a TestClient configured with a non-admin user."""
|
|
||||||
test_app = FastAPI()
|
|
||||||
test_app.include_router(channels_router)
|
|
||||||
test_app.dependency_overrides[get_db] = mock_get_db
|
|
||||||
test_app.dependency_overrides[get_current_user] = mock_get_current_user_non_admin
|
|
||||||
with TestClient(test_app) as test_client:
|
|
||||||
yield test_client
|
|
||||||
|
|
||||||
|
|
||||||
# --- Test Cases For Channel Creation ---
|
# --- Test Cases For Channel Creation ---
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
73
tests/utils/auth_test_fixtures.py
Normal file
73
tests/utils/auth_test_fixtures.py
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
import pytest
|
||||||
|
from fastapi import FastAPI
|
||||||
|
from fastapi.testclient import TestClient
|
||||||
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
|
from app.auth.dependencies import get_current_user
|
||||||
|
from app.models.auth import CognitoUser
|
||||||
|
from app.routers.channels import router as channels_router
|
||||||
|
from app.utils.database import get_db
|
||||||
|
from tests.utils.db_mocks import (
|
||||||
|
MockBase,
|
||||||
|
MockChannelDB,
|
||||||
|
MockChannelURL,
|
||||||
|
MockPriority,
|
||||||
|
engine_mock,
|
||||||
|
mock_get_db,
|
||||||
|
)
|
||||||
|
from tests.utils.db_mocks import session_mock as TestingSessionLocal
|
||||||
|
|
||||||
|
|
||||||
|
def mock_get_current_user_admin():
|
||||||
|
return CognitoUser(
|
||||||
|
username="testadmin",
|
||||||
|
email="testadmin@example.com",
|
||||||
|
roles=["admin"],
|
||||||
|
user_status="CONFIRMED",
|
||||||
|
enabled=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def mock_get_current_user_non_admin():
|
||||||
|
return CognitoUser(
|
||||||
|
username="testuser",
|
||||||
|
email="testuser@example.com",
|
||||||
|
roles=["user"], # Or any role other than admin
|
||||||
|
user_status="CONFIRMED",
|
||||||
|
enabled=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope="function")
|
||||||
|
def db_session():
|
||||||
|
# Create tables for each test function
|
||||||
|
MockBase.metadata.create_all(bind=engine_mock)
|
||||||
|
db = TestingSessionLocal()
|
||||||
|
try:
|
||||||
|
yield db
|
||||||
|
finally:
|
||||||
|
db.close()
|
||||||
|
# Drop tables after each test function
|
||||||
|
MockBase.metadata.drop_all(bind=engine_mock)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope="function")
|
||||||
|
def admin_user_client(db_session: Session):
|
||||||
|
"""Yields a TestClient configured with an admin user."""
|
||||||
|
test_app = FastAPI()
|
||||||
|
test_app.include_router(channels_router)
|
||||||
|
test_app.dependency_overrides[get_db] = mock_get_db
|
||||||
|
test_app.dependency_overrides[get_current_user] = mock_get_current_user_admin
|
||||||
|
with TestClient(test_app) as test_client:
|
||||||
|
yield test_client
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope="function")
|
||||||
|
def non_admin_user_client(db_session: Session):
|
||||||
|
"""Yields a TestClient configured with a non-admin user."""
|
||||||
|
test_app = FastAPI()
|
||||||
|
test_app.include_router(channels_router)
|
||||||
|
test_app.dependency_overrides[get_db] = mock_get_db
|
||||||
|
test_app.dependency_overrides[get_current_user] = mock_get_current_user_non_admin
|
||||||
|
with TestClient(test_app) as test_client:
|
||||||
|
yield test_client
|
||||||
Reference in New Issue
Block a user