Coverage for tests/test_conf.py: 100%
54 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-05-05 14:02 +0000
« prev ^ index » next coverage.py v7.8.0, created at 2025-05-05 14:02 +0000
1"""Test configuration."""
3import os
4import uuid
5import pytest
6from passlib.hash import pbkdf2_sha512
8from dotenv import load_dotenv
10load_dotenv()
12os.environ["IS_TEST"] = "True"
13# pylint: disable=redefined-outer-name
14# flake8: noqa: F811
16from core import shared
17from core.database_mongo_manager import DatabaseMongoManager
20@pytest.fixture()
21def client():
22 """Fixture to create a test client."""
23 from ..app import app # pylint: disable=import-outside-toplevel
25 app.config["TESTING"] = True
26 return app.test_client()
29@pytest.fixture()
30def database():
31 """Fixture to create a test database."""
33 database = DatabaseMongoManager(
34 shared.getenv("MONGO_URI"),
35 shared.getenv("MONGO_DB_TEST", "cs3528_testing"),
36 )
38 yield database
40 # Cleanup code
41 database.connection.close()
44@pytest.fixture()
45def user_logged_in_client(client, database):
46 """Fixture to login a user."""
47 database.add_table("users")
48 database.delete_all_by_field("users", "email", "dummy@dummy.com")
50 user = {
51 "_id": uuid.uuid4().hex,
52 "name": "dummy",
53 "email": "dummy@dummy.com",
54 "password": pbkdf2_sha512.hash("dummy"),
55 }
57 database.insert("users", user)
59 url = "/user/login"
60 client.post(
61 url,
62 data={
63 "email": "dummy@dummy.com",
64 "password": "dummy",
65 },
66 content_type="application/x-www-form-urlencoded",
67 )
69 yield client
71 # Cleanup code
72 database.delete_all_by_field("users", "email", "dummy@dummy.com")
75def test_base(client):
76 """Test base route."""
77 url = "/"
79 response = client.get(url)
80 assert response.status_code == 200
83def test_user_login_page(client):
84 """Test user login page."""
85 url = "/user/login"
87 response = client.get(url)
88 assert response.status_code == 200
91def test_student_login_page(client):
92 """Test student login page."""
93 url = "/students/login"
95 response = client.get(url)
96 assert response.status_code == 200
99def test_employers_login_page(client):
100 """Test employers login page."""
101 url = "/employers/login"
103 response = client.get(url)
104 assert response.status_code == 200
107def test_login(user_logged_in_client):
108 """Test login."""
110 url = "/user/home"
111 response = user_logged_in_client.get(url)
113 assert response.status_code == 200
116def test_signout(user_logged_in_client):
117 """Test signout."""
118 url = "/signout"
119 response = user_logged_in_client.get(url)
121 response = user_logged_in_client.get("/")
122 assert response.status_code == 200