Skip to content

Commit f9661c4

Browse files
committed
Update to fix testing in auth
1 parent b96d8f7 commit f9661c4

File tree

5 files changed

+31
-17
lines changed

5 files changed

+31
-17
lines changed

fia_auth/auth.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
logger = logging.getLogger(__name__)
1313
UOWS_URL = os.environ.get("UOWS_URL", "https://devapi.facilities.rl.ac.uk/users-service")
14-
UOWS_API_KEY = os.environ.get("UOWS_API_KEY", "")
14+
1515

1616

1717
def authenticate(credentials: UserCredentials) -> User:
@@ -31,10 +31,11 @@ def authenticate(credentials: UserCredentials) -> User:
3131
if response.status_code == HTTPStatus.CREATED:
3232
logger.info("Session created with UOWS")
3333
user_id = response.json()["userId"]
34+
uows_api_key = os.environ.get("UOWS_API_KEY", "")
3435
details_response = requests.post(
3536
f"{UOWS_URL}/v1/basic-person-details?userNumbers={user_id}",
3637
json=data,
37-
headers={"Authorization": f"Api-key {UOWS_API_KEY}", "Content-Type": "application/json"},
38+
headers={"Authorization": f"Api-key {uows_api_key}", "Content-Type": "application/json"},
3839
timeout=30,
3940
)
4041
return User(user_number=user_id, users_name=details_response.json()["displayName"])

test/e2e/test_auth.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
def test_successful_login(mock_auth_requests, is_instrument_scientist):
1919
mock_auth_response = Mock()
2020
mock_auth_response.status_code = HTTPStatus.CREATED
21-
mock_auth_response.json.return_value = {"userId": 1234}
21+
mock_auth_response.json.return_value = {"userId": 1234, "displayName": "Mr Cool"}
2222
mock_auth_requests.post.return_value = mock_auth_response
2323
is_instrument_scientist.return_value = False
2424

@@ -53,7 +53,7 @@ def test_unsuccessful_login_uows_failure(mock_post):
5353
@patch("fia_auth.model.is_instrument_scientist")
5454
def test_verify_success(is_instrument_scientist):
5555
is_instrument_scientist.return_value = False
56-
user = User(123)
56+
user = User(123, str(Mock()))
5757
access_token = generate_access_token(user)
5858
response = client.post("/api/jwt/checkToken", json={"token": access_token.jwt})
5959

@@ -74,7 +74,7 @@ def test_verify_fail_bad_signature():
7474
@patch("fia_auth.model.is_instrument_scientist")
7575
def test_token_refresh_success(is_instrument_scientist):
7676
is_instrument_scientist.return_value = False
77-
user = User(123)
77+
user = User(123, str(Mock()))
7878
access_token = generate_access_token(user)
7979
refresh_token = generate_refresh_token()
8080
response = client.post(
@@ -87,7 +87,7 @@ def test_token_refresh_success(is_instrument_scientist):
8787
@patch("fia_auth.model.is_instrument_scientist")
8888
def test_token_refresh_no_refresh_token_given(is_instrument_scientist):
8989
is_instrument_scientist.return_value = False
90-
user = User(123)
90+
user = User(123, str(Mock()))
9191
access_token = generate_access_token(user)
9292
response = client.post(
9393
"/api/jwt/refresh",
@@ -101,7 +101,7 @@ def test_token_refresh_no_refresh_token_given(is_instrument_scientist):
101101
@patch("fia_auth.model.is_instrument_scientist")
102102
def test_token_refresh_expired_refresh_token(is_instrument_scientist):
103103
is_instrument_scientist.return_value = False
104-
user = User(123)
104+
user = User(123, str(Mock()))
105105
access_token = generate_access_token(user)
106106
refresh_token = (
107107
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MTgwMjEyNDB9.iHITGf2RyX_49pY7Xy8xdutYE4Pc6k9mfKWQjxCKgOk" # noqa: S105

test/test_auth.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# ruff: noqa: D100, D103
2+
import os
23
from http import HTTPStatus
3-
from unittest.mock import Mock, patch
4+
from unittest import mock
5+
from unittest.mock import Mock, patch, call
46

57
import pytest
68

@@ -11,21 +13,31 @@
1113

1214
@patch("requests.post")
1315
def test_authenticate_success(mock_post):
14-
mock_response = Mock(status_code=HTTPStatus.CREATED, json=lambda: {"userId": "12345"})
16+
uows_api_key = str(mock.MagicMock())
17+
os.environ["UOWS_API_KEY"] = uows_api_key
18+
mock_response = Mock(status_code=HTTPStatus.CREATED, json=lambda: {"userId": "12345", "displayName": "Mr Cool"})
1519
mock_post.return_value = mock_response
1620

1721
credentials = UserCredentials(username="valid_user", password="valid_password") # noqa: S106
1822

1923
user = authenticate(credentials)
2024

2125
assert user.user_number == "12345"
26+
assert user.users_name == "Mr Cool"
2227

23-
mock_post.assert_called_once_with(
28+
assert call(
2429
"https://devapi.facilities.rl.ac.uk/users-service/v1/sessions",
2530
json={"username": "valid_user", "password": "valid_password"},
2631
headers={"Content-Type": "application/json"},
2732
timeout=30,
28-
)
33+
) in mock_post.mock_calls
34+
assert call(
35+
"https://devapi.facilities.rl.ac.uk/users-service/v1/basic-person-details?userNumbers=12345",
36+
json={"username": "valid_user", "password": "valid_password"},
37+
headers={"Authorization": f"Api-key {uows_api_key}", "Content-Type": "application/json"},
38+
timeout=30,
39+
) in mock_post.mock_calls
40+
assert mock_post.call_count == 2 # noqa: PLR2004
2941

3042

3143
@patch("requests.post")

test/test_model.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""Model Tests"""
22

3-
from unittest.mock import patch
3+
from unittest.mock import patch, MagicMock
44

55
from fia_auth.model import Role, User
66

@@ -12,7 +12,7 @@ def test_role_is_user(mock_is_staff_user, mock_is_instrument_scientist):
1212
mock_is_staff_user.return_value = False
1313
mock_is_instrument_scientist.return_value = False
1414

15-
user = User(user_number=1234)
15+
user = User(user_number=1234, users_name=MagicMock())
1616
assert user.role == Role.USER
1717

1818

@@ -23,7 +23,7 @@ def test_role_is_staff_in_db(mock_is_staff_user, mock_is_instrument_scientist):
2323
mock_is_staff_user.return_value = True
2424
mock_is_instrument_scientist.return_value = False
2525

26-
user = User(user_number=1234)
26+
user = User(user_number=1234, users_name=MagicMock())
2727
assert user.role == Role.STAFF
2828

2929

@@ -34,7 +34,7 @@ def test_role_is_staff_in_db_and_inst_scientist(mock_is_staff_user, mock_is_inst
3434
mock_is_staff_user.return_value = True
3535
mock_is_instrument_scientist.return_value = True
3636

37-
user = User(user_number=1234)
37+
user = User(user_number=1234, users_name=MagicMock())
3838
assert user.role == Role.STAFF
3939

4040

@@ -45,5 +45,5 @@ def test_role_is_staff_inst_scientist(mock_is_staff_user, mock_is_instrument_sci
4545
mock_is_staff_user.return_value = False
4646
mock_is_instrument_scientist.return_value = True
4747

48-
user = User(user_number=1234)
48+
user = User(user_number=1234, users_name=MagicMock())
4949
assert user.role == Role.STAFF

test/test_tokens.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ def test_refresh_token_with_invalid_jwt(mock_decode):
172172
def test_generate_access_token(mock_datetime):
173173
user = Mock()
174174
user.user_number = 12345
175+
user.users_name = "Mr Cool"
175176
user.role = Role.USER
176177
user.role = Role.USER
177178
fixed_time = datetime(2000, 12, 12, 12, 0, tzinfo=UTC)
@@ -181,7 +182,7 @@ def test_generate_access_token(mock_datetime):
181182
expected_payload = {
182183
"usernumber": 12345,
183184
"role": "user",
184-
"username": "foo",
185+
"username": "Mr Cool",
185186
"exp": fixed_time + timedelta(minutes=10),
186187
}
187188

0 commit comments

Comments
 (0)