@@ -20,16 +20,15 @@ class TestValidateNHSNumber:
2020 @pytest .mark .parametrize (
2121 ("path_nhs" , "header_nhs" , "expected_result" , "expected_log_msg" ),
2222 [
23- (None , None , False , "NHS number is not present in path" ),
24- ("1234567890" , None , True , None ),
25- (None , "1234567890" , False , "NHS number is not present in path" ),
23+ ("1234567890" , None , False , "NHS number mismatch" ),
24+ ("1234567890" , "" , False , "NHS number mismatch" ),
2625 ("1234567890" , "0987654321" , False , "NHS number mismatch" ),
2726 ("1234567890" , "1234567890" , True , None ),
2827 ],
2928 )
30- def test_validate_nhs_number (self , path_nhs , header_nhs , expected_result , expected_log_msg , caplog ):
29+ def test_validate_nhs_number_in_header (self , path_nhs , header_nhs , expected_result , expected_log_msg , caplog ):
3130 with caplog .at_level (logging .ERROR ):
32- result = request_validator .validate_nhs_number (path_nhs , header_nhs )
31+ result = request_validator .validate_nhs_number_in_header (path_nhs , header_nhs )
3332
3433 assert result == expected_result
3534
@@ -40,15 +39,22 @@ def test_validate_nhs_number(self, path_nhs, header_nhs, expected_result, expect
4039
4140
4241class TestValidateRequestParams :
43- def test_validate_request_params_success (self , app , caplog ):
42+ @pytest .mark .parametrize (
43+ "headers" ,
44+ [
45+ {}, # header missing entirely - request from application restricted consumer
46+ {"nhs-login-nhs-number" : "1234567890" }, # valid request from consumer
47+ ],
48+ )
49+ def test_validate_request_params_success (self , headers , app , caplog ):
4450 mock_api = MagicMock (return_value = "success" )
4551
4652 decorator = request_validator .validate_request_params ()
4753 dummy_route = decorator (mock_api )
4854
4955 with app .test_request_context (
5056 "/dummy?id=1234567890" ,
51- headers = { "nhs-login-nhs-number" : "1234567890" } ,
57+ headers = headers ,
5258 method = "GET" ,
5359 ):
5460 with caplog .at_level (logging .INFO ):
@@ -58,15 +64,23 @@ def test_validate_request_params_success(self, app, caplog):
5864 assert any ("NHS numbers from the request" in record .message for record in caplog .records )
5965 assert not any (record .levelname == "ERROR" for record in caplog .records )
6066
61- def test_validate_request_params_nhs_mismatch (self , app , caplog ):
67+ @pytest .mark .parametrize (
68+ "headers" ,
69+ [
70+ {"nhs-login-nhs-number" : None }, # not valid
71+ {"nhs-login-nhs-number" : "" }, # not valid
72+ {"nhs-login-nhs-number" : "9834567890" }, # not valid, due to mismatch
73+ ],
74+ )
75+ def test_validate_request_params_nhs_mismatch (self , headers , app , caplog ):
6276 mock_api = MagicMock ()
6377
6478 decorator = request_validator .validate_request_params ()
6579 dummy_route = decorator (mock_api )
6680
6781 with app .test_request_context (
6882 "/dummy?id=1234567890" ,
69- headers = { "nhs-login-nhs-number" : "0987654321" } ,
83+ headers = headers ,
7084 method = "GET" ,
7185 ):
7286 with caplog .at_level (logging .INFO ):
0 commit comments