Skip to content

Commit c78ba55

Browse files
authored
Merge pull request #389 from NHSDigital/amend-api-client-env-var-keys
Amend notifications env var keys
2 parents 8926345 + 5f2b3a4 commit c78ba55

File tree

8 files changed

+36
-34
lines changed

8 files changed

+36
-34
lines changed

manage_breast_screening/notifications/services/api_client.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class OAuthError(Exception):
1919
class ApiClient:
2020
def send_message_batch(self, message_batch: MessageBatch) -> requests.Response:
2121
response = requests.post(
22-
os.getenv("API_MESSAGE_BATCH_URL"),
22+
os.getenv("NHS_NOTIFY_API_MESSAGE_BATCH_URL"),
2323
headers=self.headers(),
2424
json=self.message_batch_request_body(message_batch),
2525
timeout=10,
@@ -59,19 +59,19 @@ def headers(self) -> dict:
5959
def bearer_token(self) -> str:
6060
auth_jwt = jwt.encode(
6161
{
62-
"sub": os.getenv("OAUTH_API_KEY"),
63-
"iss": os.getenv("OAUTH_API_KEY"),
62+
"sub": os.getenv("API_OAUTH_API_KEY"),
63+
"iss": os.getenv("API_OAUTH_API_KEY"),
6464
"jti": str(uuid.uuid4()),
65-
"aud": os.getenv("OAUTH_TOKEN_URL"),
65+
"aud": os.getenv("API_OAUTH_TOKEN_URL"),
6666
"exp": int(time.time()) + (EXPIRES_IN_MINUTES * 60),
6767
},
68-
os.getenv("PRIVATE_KEY"),
68+
os.getenv("API_OAUTH_PRIVATE_KEY"),
6969
"RS512",
70-
{"alg": "RS512", "typ": "JWT", "kid": os.getenv("OAUTH_API_KID")},
70+
{"alg": "RS512", "typ": "JWT", "kid": os.getenv("API_OAUTH_API_KID")},
7171
)
7272

7373
response = requests.post(
74-
os.getenv("OAUTH_TOKEN_URL"),
74+
os.getenv("API_OAUTH_TOKEN_URL"),
7575
data={
7676
"grant_type": "client_credentials",
7777
"client_assertion_type": "urn:ietf:params:oauth:client-assertion-type:jwt-bearer",

manage_breast_screening/notifications/tests/integration/test_api_client_can_call_notify_api.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ class TestApiClient:
1616
@pytest.fixture(autouse=True)
1717
def setup(self, monkeypatch):
1818
monkeypatch.setenv(
19-
"API_MESSAGE_BATCH_URL", "http://localhost:8888/message/batch"
19+
"NHS_NOTIFY_API_MESSAGE_BATCH_URL", "http://localhost:8888/message/batch"
2020
)
21-
monkeypatch.setenv("OAUTH_TOKEN_URL", "http://localhost:8888/token")
22-
monkeypatch.setenv("OAUTH_API_KEY", "a1b2c3d4")
23-
monkeypatch.setenv("OAUTH_API_KID", "test-1")
24-
monkeypatch.setenv("PRIVATE_KEY", "test-key")
21+
monkeypatch.setenv("API_OAUTH_TOKEN_URL", "http://localhost:8888/token")
22+
monkeypatch.setenv("API_OAUTH_API_KEY", "a1b2c3d4")
23+
monkeypatch.setenv("API_OAUTH_API_KID", "test-1")
24+
monkeypatch.setenv("API_OAUTH_PRIVATE_KEY", "test-key")
2525

2626
@pytest.fixture
2727
def routing_plan_id(self):

manage_breast_screening/notifications/tests/integration/test_retry_message_batches_from_queue.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,12 @@ class TestRetryMessageBatchesFromQueue:
2424
@pytest.fixture(autouse=True)
2525
def setup(self, monkeypatch):
2626
monkeypatch.setenv(
27-
"API_MESSAGE_BATCH_URL", "http://localhost:8888/message/batch"
27+
"NHS_NOTIFY_API_MESSAGE_BATCH_URL", "http://localhost:8888/message/batch"
2828
)
29-
monkeypatch.setenv("OAUTH_TOKEN_URL", "http://localhost:8888/token")
30-
monkeypatch.setenv("OAUTH_API_KEY", "a1b2c3d4")
31-
monkeypatch.setenv("OAUTH_API_KID", "test-1")
32-
monkeypatch.setenv("PRIVATE_KEY", "test-key")
29+
monkeypatch.setenv("API_OAUTH_TOKEN_URL", "http://localhost:8888/token")
30+
monkeypatch.setenv("API_OAUTH_API_KEY", "a1b2c3d4")
31+
monkeypatch.setenv("API_OAUTH_API_KID", "test-1")
32+
monkeypatch.setenv("API_OAUTH_PRIVATE_KEY", "test-key")
3333

3434
@pytest.fixture
3535
def routing_plan_id(self):

manage_breast_screening/notifications/tests/integration/test_send_message_batches_for_episode_types.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,12 @@ class TestSendMessageBatch:
2424
@pytest.fixture(autouse=True)
2525
def setup(self, monkeypatch):
2626
monkeypatch.setenv(
27-
"API_MESSAGE_BATCH_URL", "http://localhost:8888/message/batch"
27+
"NHS_NOTIFY_API_MESSAGE_BATCH_URL", "http://localhost:8888/message/batch"
2828
)
29-
monkeypatch.setenv("OAUTH_TOKEN_URL", "http://localhost:8888/token")
30-
monkeypatch.setenv("OAUTH_API_KEY", "a1b2c3d4")
31-
monkeypatch.setenv("OAUTH_API_KID", "test-1")
32-
monkeypatch.setenv("PRIVATE_KEY", "test-key")
29+
monkeypatch.setenv("API_OAUTH_TOKEN_URL", "http://localhost:8888/token")
30+
monkeypatch.setenv("API_OAUTH_API_KEY", "a1b2c3d4")
31+
monkeypatch.setenv("API_OAUTH_API_KID", "test-1")
32+
monkeypatch.setenv("API_OAUTH_PRIVATE_KEY", "test-key")
3333

3434
@pytest.mark.django_db
3535
def test_message_batch_is_sent_for_all_routing_plans(

manage_breast_screening/notifications/tests/services/test_api_client.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ def routing_plan_id(self):
2323
@pytest.fixture(autouse=True)
2424
def setup(self, monkeypatch):
2525
monkeypatch.setenv(
26-
"API_MESSAGE_BATCH_URL", "http://api.example.com/message/batch"
26+
"NHS_NOTIFY_API_MESSAGE_BATCH_URL", "http://api.example.com/message/batch"
2727
)
28-
monkeypatch.setenv("OAUTH_TOKEN_URL", "http://oauth.example.com/token")
29-
monkeypatch.setenv("OAUTH_API_KEY", "a1b2c3d4")
30-
monkeypatch.setenv("OAUTH_API_KID", "test-1")
31-
monkeypatch.setenv("PRIVATE_KEY", "test-key")
28+
monkeypatch.setenv("API_OAUTH_TOKEN_URL", "http://oauth.example.com/token")
29+
monkeypatch.setenv("API_OAUTH_API_KEY", "a1b2c3d4")
30+
monkeypatch.setenv("API_OAUTH_API_KID", "test-1")
31+
monkeypatch.setenv("API_OAUTH_PRIVATE_KEY", "test-key")
3232

3333
@pytest.mark.django_db
3434
def test_send_message_batch(self, mock_jwt_encode, routing_plan_id):

manage_breast_screening/notifications/tests/test_views.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212

1313
@pytest.fixture(autouse=True)
1414
def setup(monkeypatch):
15-
monkeypatch.setenv("APPLICATION_ID", "application_id")
16-
monkeypatch.setenv("NOTIFY_API_KEY", "api_key")
15+
monkeypatch.setenv("NHS_NOTIFY_APPLICATION_ID", "application_id")
16+
monkeypatch.setenv("NHS_NOTIFY_API_KEY", "api_key")
1717

1818

1919
def test_create_message_status_with_valid_request():

manage_breast_screening/notifications/tests/validators/test_request_validator.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ class TestRequestValidator:
1515
@pytest.fixture(autouse=True)
1616
def setup(self, monkeypatch):
1717
"""Set up environment variables for tests."""
18-
monkeypatch.setenv("APPLICATION_ID", "application_id")
19-
monkeypatch.setenv("NOTIFY_API_KEY", "api_key")
18+
monkeypatch.setenv("NHS_NOTIFY_APPLICATION_ID", "application_id")
19+
monkeypatch.setenv("NHS_NOTIFY_API_KEY", "api_key")
2020

2121
def mock_request(self, headers={}, body="{}"):
2222
req = MagicMock()
@@ -74,7 +74,7 @@ def test_valid_with_invalid_api_key(self):
7474
def test_valid(self):
7575
"""Test that valid API key and signature headers pass verification."""
7676
body = '{"this": "that"}'
77-
secret = f"{os.getenv('APPLICATION_ID')}.{os.getenv('NOTIFY_API_KEY')}"
77+
secret = f"{os.getenv('NHS_NOTIFY_APPLICATION_ID')}.{os.getenv('NHS_NOTIFY_API_KEY')}"
7878
signature = self.create_digest(secret, body)
7979

8080
headers = {

manage_breast_screening/notifications/validators/request_validator.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ def verify_headers(self) -> tuple[bool, str]:
2626
if self.headers.get(self.API_KEY_HEADER_NAME) is None:
2727
return False, "Missing API key header"
2828

29-
if self.headers.get(self.API_KEY_HEADER_NAME) != os.getenv("NOTIFY_API_KEY"):
29+
if self.headers.get(self.API_KEY_HEADER_NAME) != os.getenv(
30+
"NHS_NOTIFY_API_KEY"
31+
):
3032
return False, "Invalid API key"
3133

3234
if self.headers.get(self.SIGNATURE_HEADER_NAME) is None:
@@ -35,7 +37,7 @@ def verify_headers(self) -> tuple[bool, str]:
3537
return True, ""
3638

3739
def verify_signature(self) -> bool:
38-
secret = f"{os.getenv('APPLICATION_ID')}.{os.getenv('NOTIFY_API_KEY')}"
40+
secret = f"{os.getenv('NHS_NOTIFY_APPLICATION_ID')}.{os.getenv('NHS_NOTIFY_API_KEY')}"
3941
expected_signature = hmac.new(
4042
bytes(secret, self.ENCODING),
4143
msg=bytes(self.body, self.ENCODING),

0 commit comments

Comments
 (0)