Skip to content

Commit 803a000

Browse files
committed
Add unittests for authentication
1 parent 2fdfa04 commit 803a000

1 file changed

Lines changed: 127 additions & 0 deletions

File tree

tests/test_loading_api_wrapper.py

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,128 @@
1+
import unittest
2+
from unittest.mock import MagicMock, patch
13

4+
import requests
5+
from loading_api_wrapper import LoadingApiWrapper
6+
7+
8+
class TestLoadingApiWrapper(unittest.TestCase):
9+
@classmethod
10+
def setUpClass(cls):
11+
cls.cookie_jar = requests.cookies.RequestsCookieJar()
12+
cls.cookie_jar.set("jwt", "placeholder_token_1")
13+
cls.cookie_jar.set("refreshToken", "placeholder_token_2")
14+
15+
@patch("loading_api_wrapper.api.requests")
16+
def test_authenticate_success(self, mock_requests):
17+
mock_response = MagicMock()
18+
mock_response.status_code = 200
19+
mock_response.cookies = self.cookie_jar
20+
21+
mock_requests.post.return_value = mock_response
22+
23+
api = LoadingApiWrapper("test@email.com", "password")
24+
25+
self.assertEqual(api.cookies, self.cookie_jar)
26+
27+
api = LoadingApiWrapper()
28+
response = api._authenticate("test@email.com", "password")
29+
30+
self.assertEqual(response.get("code"), 200)
31+
self.assertEqual(response.get("cookies"), self.cookie_jar)
32+
33+
@patch("loading_api_wrapper.api.requests")
34+
def test_authenticate_failure_incorrect_email_or_password(self, mock_requests):
35+
status_code = 401
36+
expected_response = {
37+
"code": status_code,
38+
"message": "Incorrect email or password",
39+
}
40+
mock_response = MagicMock()
41+
mock_response.status_code = status_code
42+
mock_response.json.return_value = expected_response
43+
44+
mock_requests.post.return_value = mock_response
45+
46+
api = LoadingApiWrapper("incorrect@email.com", "incorrect_password")
47+
48+
self.assertIsNone(api.cookies)
49+
50+
api = LoadingApiWrapper()
51+
response = api._authenticate("incorrect@email.com", "incorrect_password")
52+
53+
self.assertDictEqual(response, expected_response)
54+
self.assertEqual(response.get("code"), 401)
55+
self.assertEqual(response.get("message"), "Incorrect email or password")
56+
57+
@patch("loading_api_wrapper.api.requests")
58+
def test_authenticate_failure_invalid_email(self, mock_requests):
59+
status_code = 400
60+
expected_response = {
61+
"code": status_code,
62+
"message": "Validation error",
63+
"errors": [
64+
{
65+
"field": "email",
66+
"location": "body",
67+
"messages": ['"email" must be a valid email'],
68+
"types": ["string.email"],
69+
}
70+
],
71+
}
72+
mock_response = MagicMock()
73+
mock_response.status_code = status_code
74+
mock_response.json.return_value = expected_response
75+
76+
mock_requests.post.return_value = mock_response
77+
78+
api = LoadingApiWrapper("invalid_email_address", "password")
79+
80+
self.assertIsNone(api.cookies)
81+
82+
api = LoadingApiWrapper()
83+
response = api._authenticate("invalid_email_address", "password")
84+
85+
self.assertDictEqual(response, expected_response)
86+
self.assertEqual(response.get("code"), 400)
87+
self.assertEqual(response.get("message"), "Validation error")
88+
89+
@patch("loading_api_wrapper.api.requests")
90+
def test_authenticate_failure_empty_values(self, mock_requests):
91+
status_code = 400
92+
expected_response = {
93+
"code": status_code,
94+
"message": "Validation error",
95+
"errors": [
96+
{
97+
"field": "email",
98+
"location": "body",
99+
"messages": [
100+
'"email" is not allowed to be empty',
101+
'"email" must be a valid email',
102+
],
103+
"types": ["any.empty", "string.email"],
104+
},
105+
{
106+
"field": "password",
107+
"location": "body",
108+
"messages": ['"password" is not allowed to be empty'],
109+
"types": ["any.empty"],
110+
},
111+
],
112+
}
113+
mock_response = MagicMock()
114+
mock_response.status_code = status_code
115+
mock_response.json.return_value = expected_response
116+
117+
mock_requests.post.return_value = mock_response
118+
119+
api = LoadingApiWrapper("", "")
120+
121+
self.assertIsNone(api.cookies)
122+
123+
api = LoadingApiWrapper()
124+
response = api._authenticate("", "")
125+
126+
self.assertDictEqual(response, expected_response)
127+
self.assertEqual(response.get("code"), 400)
128+
self.assertEqual(response.get("message"), "Validation error")

0 commit comments

Comments
 (0)