"""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