Skip to content

Commit 0676227

Browse files
NRL-1928 Remove unneeded config arg and custom code for testing.
1 parent 96e52f0 commit 0676227

File tree

5 files changed

+34
-34
lines changed

5 files changed

+34
-34
lines changed

layer/nrlf/core/authoriser.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,14 @@
1010
from nrlf.core.logger import LogReference, logger
1111
from nrlf.core.model import ConnectionMetadata
1212

13+
default_lookup_path = "/opt/python/nrlf_permissions"
1314

14-
def get_pointer_permissions(
15-
connection_metadata: ConnectionMetadata, config: Config, request_path: str
15+
16+
def get_pointer_permissions_v2(
17+
connection_metadata: ConnectionMetadata,
18+
request_path: str,
19+
lookup_path=default_lookup_path,
1620
):
17-
# This a good place for this?
1821
producer_or_consumer = (
1922
re.search("^/(producer|consumer)/", request_path).group().strip("/")
2023
)
@@ -25,10 +28,7 @@ def get_pointer_permissions(
2528
key = f"{producer_or_consumer}/{app_id}/{ods_code}.json"
2629
logger.log(LogReference.S3PERMISSIONS011, key=key)
2730

28-
file_path = f"/opt/python/nrlf_permissions/{key}"
29-
30-
if connection_metadata.is_test_event:
31-
file_path = path.abspath(f"layer/test_permissions/v2/{key}")
31+
file_path = f"{lookup_path}/{key}"
3232

3333
pointer_permissions = {}
3434
try:

layer/nrlf/core/decorators.py

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from pydantic import BaseModel
1313

1414
from nrlf.core.authoriser import (
15-
get_pointer_permissions,
15+
get_pointer_permissions_v2,
1616
get_pointer_types,
1717
parse_permissions_file,
1818
)
@@ -143,7 +143,7 @@ def wrapper(*args, **kwargs) -> Dict[str, Any]:
143143
RepositoryType = Union[Type[DocumentPointerRepository], None]
144144

145145

146-
def _use_v2_permissions_model(headers: Dict[str, str], config: Config) -> bool:
146+
def _use_v2_permissions_model(headers: Dict[str, str]) -> bool:
147147
case_insensitive_headers = {key.lower(): value for key, value in headers.items()}
148148
# if either or both headers are missing
149149
return (
@@ -152,21 +152,14 @@ def _use_v2_permissions_model(headers: Dict[str, str], config: Config) -> bool:
152152
)
153153

154154

155-
def _load_v2_connection_metadata(headers: Dict[str, str], config: Config, path: str):
155+
def _load_v2_connection_metadata(headers: Dict[str, str], path: str):
156156
logger.log(LogReference.HANDLER004d)
157157
metadata = parse_headers(headers, use_v2_permissions=True)
158158

159-
if PERMISSION_ALLOW_ALL_POINTER_TYPES in metadata.nrl_permissions:
160-
logger.log(LogReference.HANDLER004a)
161-
metadata.pointer_types = PointerTypes.list()
162-
return metadata
163-
164159
logger.log(LogReference.HANDLER004e)
165-
if not metadata.is_test_event:
166-
logger.log(LogReference.HANDLER004)
167-
pointer_permissions = get_pointer_permissions(metadata, config, path)
160+
pointer_permissions = get_pointer_permissions_v2(metadata, path)
168161

169-
metadata.pointer_types = pointer_permissions.get("types", [])
162+
metadata.pointer_types = pointer_permissions.get("types", [])
170163

171164
logger.log(
172165
LogReference.HANDLER004f, pointer_types=metadata.pointer_types
@@ -177,8 +170,8 @@ def _load_v2_connection_metadata(headers: Dict[str, str], config: Config, path:
177170

178171
def load_connection_metadata(headers: Dict[str, str], config: Config, path=""):
179172

180-
if _use_v2_permissions_model(headers, config):
181-
return _load_v2_connection_metadata(headers, config, path)
173+
if _use_v2_permissions_model(headers):
174+
return _load_v2_connection_metadata(headers, path)
182175

183176
metadata = parse_headers(headers, use_v2_permissions=False)
184177
if PERMISSION_ALLOW_ALL_POINTER_TYPES in metadata.nrl_permissions:

layer/nrlf/core/request.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
from nrlf.core.model import ClientRpDetails, ConnectionMetadata
1212

1313

14-
# from consumer proxy code - producer has extra bits
1514
def _fetch_ods_app_id_headers(headers: dict[str, str]):
1615

1716
case_insensitive_headers = {key.lower(): value for key, value in headers.items()}
@@ -23,7 +22,6 @@ def _fetch_ods_app_id_headers(headers: dict[str, str]):
2322
LogReference.HANDLER003a, headers_names=case_insensitive_headers.keys()
2423
)
2524

26-
# where should this come from now? soln: https://nhsd-confluence.digital.nhs.uk/spaces/clp/pages/1288189142/nrlf+access+permission+model#nrlf_access_permission_model-proposed_approach
2725
nrl_app_id = case_insensitive_headers.get("nhsd-nrl-app-id")
2826
if not nrl_app_id or len(nrl_app_id.strip()) == 0:
2927
logger.log(

layer/nrlf/core/tests/test_authoriser.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
from nrlf.core.authoriser import get_pointer_permissions, parse_permissions_file
2-
from nrlf.core.config import Config
1+
from nrlf.core.authoriser import get_pointer_permissions_v2, parse_permissions_file
32
from nrlf.core.request import parse_headers
43
from nrlf.tests.events import create_headers
54

@@ -20,15 +19,28 @@ def test_authoriser_parse_permission_file_with_permission_file():
2019
assert metadata_result == ["http://snomed.info/sct|736253001"]
2120

2221

23-
def test_authoriser_get_pointer_permissions_first_pass():
22+
v2_test_lookup_path = "layer/test_permissions/v2"
23+
24+
25+
def test_authoriser_get_v2_permissions_with_pointer_types():
2426
connection_metadata = parse_headers(
2527
create_headers(ods_code="ODS123", nrl_app_id="ODS123-app-id")
2628
)
2729

28-
result = get_pointer_permissions(
30+
result = get_pointer_permissions_v2(
2931
connection_metadata=connection_metadata,
30-
config=Config(AUTH_STORE="auth-store-i-promise"),
3132
request_path="/producer/DocumentReference/_search",
33+
lookup_path=v2_test_lookup_path,
34+
)
35+
36+
assert result.get("types") == ["http://snomed.info/sct|736253001"]
37+
38+
39+
def test_authoriser_parse_v2_permission_file_with_no_permission_file():
40+
metadata_result = get_pointer_permissions_v2(
41+
connection_metadata=parse_headers(create_headers(ods_code="NotFound")),
42+
request_path="/consumer/_status",
43+
lookup_path=v2_test_lookup_path,
3244
)
3345

34-
assert result == {"types": ["http://snomed.info/sct|736253001"]}
46+
assert metadata_result == {}

layer/nrlf/core/tests/test_decorators.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -806,15 +806,12 @@ def test_request_load_connection_metadata_with_no_permission_lookup_or_file():
806806

807807

808808
missing_headers = [
809-
# ["nhsd-connection-metadata"],
810-
# ["nhsd-connection-metadata", "nhsd-client-rp-details"],
809+
["nhsd-connection-metadata"],
810+
["nhsd-connection-metadata", "nhsd-client-rp-details"],
811811
["nhsd-client-rp-details"],
812812
]
813813

814814

815-
# ????? RuntimeError: Credentials were refreshed, but the refreshed credentials are still expired.
816-
# now: botocore.exceptions.NoCredentialsError: Unable to locate credentials
817-
# TODO: Figure out mocking - avoid needing to use a test header
818815
@pytest.mark.parametrize("headers_missing_from_request", missing_headers)
819816
def test_request_load_connection_with_missing_headers_gets_v2_permissions(
820817
headers_missing_from_request,

0 commit comments

Comments
 (0)