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

1"""Test configuration.""" 

2 

3import os 

4import uuid 

5import pytest 

6from passlib.hash import pbkdf2_sha512 

7 

8from dotenv import load_dotenv 

9 

10load_dotenv() 

11 

12os.environ["IS_TEST"] = "True" 

13# pylint: disable=redefined-outer-name 

14# flake8: noqa: F811 

15 

16from core import shared 

17from core.database_mongo_manager import DatabaseMongoManager 

18 

19 

20@pytest.fixture() 

21def client(): 

22 """Fixture to create a test client.""" 

23 from ..app import app # pylint: disable=import-outside-toplevel 

24 

25 app.config["TESTING"] = True 

26 return app.test_client() 

27 

28 

29@pytest.fixture() 

30def database(): 

31 """Fixture to create a test database.""" 

32 

33 database = DatabaseMongoManager( 

34 shared.getenv("MONGO_URI"), 

35 shared.getenv("MONGO_DB_TEST", "cs3528_testing"), 

36 ) 

37 

38 yield database 

39 

40 # Cleanup code 

41 database.connection.close() 

42 

43 

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

49 

50 user = { 

51 "_id": uuid.uuid4().hex, 

52 "name": "dummy", 

53 "email": "dummy@dummy.com", 

54 "password": pbkdf2_sha512.hash("dummy"), 

55 } 

56 

57 database.insert("users", user) 

58 

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 ) 

68 

69 yield client 

70 

71 # Cleanup code 

72 database.delete_all_by_field("users", "email", "dummy@dummy.com") 

73 

74 

75def test_base(client): 

76 """Test base route.""" 

77 url = "/" 

78 

79 response = client.get(url) 

80 assert response.status_code == 200 

81 

82 

83def test_user_login_page(client): 

84 """Test user login page.""" 

85 url = "/user/login" 

86 

87 response = client.get(url) 

88 assert response.status_code == 200 

89 

90 

91def test_student_login_page(client): 

92 """Test student login page.""" 

93 url = "/students/login" 

94 

95 response = client.get(url) 

96 assert response.status_code == 200 

97 

98 

99def test_employers_login_page(client): 

100 """Test employers login page.""" 

101 url = "/employers/login" 

102 

103 response = client.get(url) 

104 assert response.status_code == 200 

105 

106 

107def test_login(user_logged_in_client): 

108 """Test login.""" 

109 

110 url = "/user/home" 

111 response = user_logged_in_client.get(url) 

112 

113 assert response.status_code == 200 

114 

115 

116def test_signout(user_logged_in_client): 

117 """Test signout.""" 

118 url = "/signout" 

119 response = user_logged_in_client.get(url) 

120 

121 response = user_logged_in_client.get("/") 

122 assert response.status_code == 200