v1
This commit is contained in:
97
tests/test_admin.py
Normal file
97
tests/test_admin.py
Normal file
@@ -0,0 +1,97 @@
|
||||
"""Tests for admin routes."""
|
||||
import pytest
|
||||
|
||||
from server.app import app
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def client():
|
||||
with app.test_client() as client:
|
||||
yield client
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def setup_admin_creds(monkeypatch):
|
||||
monkeypatch.setattr("server.settings.ADMIN_USERNAME", "admin")
|
||||
monkeypatch.setattr("server.settings.ADMIN_PASSWORD", "admin")
|
||||
|
||||
|
||||
def test_admin_settings_requires_login(client):
|
||||
"""Test admin settings page requires login."""
|
||||
resp = client.get("/admin/settings")
|
||||
assert resp.status_code == 302
|
||||
assert resp.headers["Location"] == "/auth/login"
|
||||
|
||||
|
||||
def test_admin_settings_with_login(client):
|
||||
"""Test admin settings page displays when logged in."""
|
||||
# Login first
|
||||
client.post("/auth/login", data={"username": "admin", "password": "admin"})
|
||||
|
||||
# Access settings
|
||||
resp = client.get("/admin/settings")
|
||||
assert resp.status_code == 200
|
||||
assert b"Application Settings" in resp.data
|
||||
assert b"Database" in resp.data
|
||||
assert b"SMTP" in resp.data
|
||||
assert b"Logout" in resp.data
|
||||
|
||||
|
||||
def test_admin_dashboard_requires_login(client):
|
||||
"""Test admin dashboard requires login."""
|
||||
resp = client.get("/admin/")
|
||||
assert resp.status_code == 302
|
||||
assert resp.headers["Location"] == "/auth/login"
|
||||
|
||||
|
||||
def test_admin_dashboard_with_login(client):
|
||||
"""Test admin dashboard displays when logged in."""
|
||||
# Login first
|
||||
client.post("/auth/login", data={"username": "admin", "password": "admin"})
|
||||
|
||||
# Access dashboard
|
||||
resp = client.get("/admin/")
|
||||
assert resp.status_code == 200
|
||||
assert b"Admin Dashboard" in resp.data
|
||||
assert b"Newsletter Subscribers" in resp.data
|
||||
assert b"Logout" in resp.data
|
||||
|
||||
|
||||
def test_admin_newsletter_subscribers_requires_login(client):
|
||||
"""Test newsletter subscribers page requires login."""
|
||||
resp = client.get("/admin/newsletter")
|
||||
assert resp.status_code == 302
|
||||
assert resp.headers["Location"] == "/auth/login"
|
||||
|
||||
|
||||
def test_admin_newsletter_subscribers_with_login(client):
|
||||
"""Test newsletter subscribers page displays when logged in."""
|
||||
# Login first
|
||||
client.post("/auth/login", data={"username": "admin", "password": "admin"})
|
||||
|
||||
# Access newsletter subscribers
|
||||
resp = client.get("/admin/newsletter")
|
||||
assert resp.status_code == 200
|
||||
assert b"Newsletter Subscribers" in resp.data
|
||||
assert b"Logout" in resp.data
|
||||
|
||||
|
||||
def test_admin_newsletter_create_requires_login(client):
|
||||
"""Test newsletter create page requires login."""
|
||||
resp = client.get("/admin/newsletter/create")
|
||||
assert resp.status_code == 302
|
||||
assert resp.headers["Location"] == "/auth/login"
|
||||
|
||||
|
||||
def test_admin_newsletter_create_with_login(client):
|
||||
"""Test newsletter create page displays when logged in."""
|
||||
# Login first
|
||||
client.post("/auth/login", data={"username": "admin", "password": "admin"})
|
||||
|
||||
# Access newsletter create
|
||||
resp = client.get("/admin/newsletter/create")
|
||||
assert resp.status_code == 200
|
||||
assert b"Create Newsletter" in resp.data
|
||||
assert b"Subject Line" in resp.data
|
||||
assert b"Content" in resp.data
|
||||
assert b"Logout" in resp.data
|
||||
Reference in New Issue
Block a user