Skip to content

Commit 18736fa

Browse files
ELI-578 local stack configuration
1 parent dfcff79 commit 18736fa

File tree

5 files changed

+36
-11
lines changed

5 files changed

+36
-11
lines changed

src/eligibility_signposting_api/config/config.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
def config() -> dict[str, Any]:
2323
person_table_name = TableName(os.getenv("PERSON_TABLE_NAME", "test_eligibility_datastore"))
2424
rules_bucket_name = BucketName(os.getenv("RULES_BUCKET_NAME", "test-rules-bucket"))
25+
consumer_mapping_bucket_name = BucketName(os.getenv("CONSUMER_MAPPING_BUCKET_NAME", "test-consumer-mapping-bucket"))
2526
audit_bucket_name = BucketName(os.getenv("AUDIT_BUCKET_NAME", "test-audit-bucket"))
2627
hashing_secret_name = HashSecretName(os.getenv("HASHING_SECRET_NAME", "test_secret"))
2728
aws_default_region = AwsRegion(os.getenv("AWS_DEFAULT_REGION", "eu-west-1"))
@@ -41,6 +42,7 @@ def config() -> dict[str, Any]:
4142
"s3_endpoint": None,
4243
"rules_bucket_name": rules_bucket_name,
4344
"audit_bucket_name": audit_bucket_name,
45+
"consumer_mapping_bucket_name": consumer_mapping_bucket_name,
4446
"firehose_endpoint": None,
4547
"kinesis_audit_stream_to_s3": kinesis_audit_stream_to_s3,
4648
"enable_xray_patching": enable_xray_patching,
@@ -59,6 +61,7 @@ def config() -> dict[str, Any]:
5961
"s3_endpoint": URL(os.getenv("S3_ENDPOINT", local_stack_endpoint)),
6062
"rules_bucket_name": rules_bucket_name,
6163
"audit_bucket_name": audit_bucket_name,
64+
"consumer_mapping_bucket_name": consumer_mapping_bucket_name,
6265
"firehose_endpoint": URL(os.getenv("FIREHOSE_ENDPOINT", local_stack_endpoint)),
6366
"kinesis_audit_stream_to_s3": kinesis_audit_stream_to_s3,
6467
"enable_xray_patching": enable_xray_patching,

src/eligibility_signposting_api/repos/consumer_mapping_repo.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,14 @@ class ConsumerMappingRepo:
1919
def __init__(
2020
self,
2121
s3_client: Annotated[BaseClient, Inject(qualifier="s3")],
22-
bucket_name: Annotated[BucketName, Inject(param="rules_bucket_name")],
22+
bucket_name: Annotated[BucketName, Inject(param="consumer_mapping_bucket_name")],
2323
) -> None:
2424
super().__init__()
2525
self.s3_client = s3_client
2626
self.bucket_name = bucket_name
2727

28-
# def get_permitted_campaign_ids(self, consumer_id: ConsumerId) -> list[CampaignID] | None:
29-
# consumer_mappings = self.s3_client.list_objects(Bucket=self.bucket_name)["Contents"][0]
30-
# response = self.s3_client.get_object(Bucket=self.bucket_name, Key=f"{consumer_mappings['Key']}")
31-
# body = response["Body"].read()
32-
# return ConsumerMapping.model_validate(json.loads(body)).get(consumer_id)
33-
3428
def get_permitted_campaign_ids(self, consumer_id: ConsumerId) -> list[CampaignID] | None:
35-
return ["324r2"]
29+
consumer_mappings = self.s3_client.list_objects(Bucket=self.bucket_name)["Contents"][0]
30+
response = self.s3_client.get_object(Bucket=self.bucket_name, Key=f"{consumer_mappings['Key']}")
31+
body = response["Body"].read()
32+
return ConsumerMapping.model_validate(json.loads(body)).get(consumer_id)

tests/fixtures/builders/model/rule.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ class IterationFactory(ModelFactory[Iteration]):
9393

9494
class RawCampaignConfigFactory(ModelFactory[CampaignConfig]):
9595
iterations = Use(IterationFactory.batch, size=2)
96-
id = "324r2"
96+
id = "42-hi5tch-hi5kers-gu5ide-t2o-t3he-gal6axy"
9797
start_date = Use(past_date)
9898
end_date = Use(future_date)
9999

tests/integration/conftest.py

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,9 @@
2828
RuleText,
2929
RuleType,
3030
StartDate,
31-
StatusText,
31+
StatusText, CampaignID,
3232
)
33+
from eligibility_signposting_api.model.consumer_mapping import ConsumerMapping, ConsumerId
3334
from eligibility_signposting_api.processors.hashing_service import HashingService, HashSecretName
3435
from eligibility_signposting_api.repos import SecretRepo
3536
from eligibility_signposting_api.repos.campaign_repo import BucketName
@@ -661,6 +662,14 @@ def rules_bucket(s3_client: BaseClient) -> Generator[BucketName]:
661662
s3_client.delete_bucket(Bucket=bucket_name)
662663

663664

665+
@pytest.fixture(scope="session")
666+
def consumer_mapping_bucket(s3_client: BaseClient) -> Generator[BucketName]:
667+
bucket_name = BucketName(os.getenv("CONSUMER_MAPPING_BUCKET_NAME", "test-consumer-mapping-bucket"))
668+
s3_client.create_bucket(Bucket=bucket_name, CreateBucketConfiguration={"LocationConstraint": AWS_REGION})
669+
yield bucket_name
670+
s3_client.delete_bucket(Bucket=bucket_name)
671+
672+
664673
@pytest.fixture(scope="session")
665674
def audit_bucket(s3_client: BaseClient) -> Generator[BucketName]:
666675
bucket_name = BucketName(os.getenv("AUDIT_BUCKET_NAME", "test-audit-bucket"))
@@ -718,6 +727,20 @@ def campaign_config(s3_client: BaseClient, rules_bucket: BucketName) -> Generato
718727
yield campaign
719728
s3_client.delete_object(Bucket=rules_bucket, Key=f"{campaign.name}.json")
720729

730+
@pytest.fixture(scope="class")
731+
def consumer_mapping(s3_client: BaseClient, consumer_mapping_bucket: BucketName) -> Generator[ConsumerMapping]:
732+
consumer_mapping = ConsumerMapping.model_validate({})
733+
consumer_mapping.root[ConsumerId("23-mic7heal-jor6don")] = [
734+
CampaignID("42-hi5tch-hi5kers-gu5ide-t2o-t3he-gal6axy")
735+
]
736+
737+
consumer_mapping_data = consumer_mapping.model_dump(by_alias=True)
738+
s3_client.put_object(
739+
Bucket=consumer_mapping_bucket, Key=f"consumer_mapping.json", Body=json.dumps(consumer_mapping_data), ContentType="application/json"
740+
)
741+
yield consumer_mapping
742+
s3_client.delete_object(Bucket=consumer_mapping_bucket, Key=f"consumer_mapping.json")
743+
721744

722745
@pytest.fixture
723746
def campaign_config_with_rules_having_rule_code(

tests/integration/in_process/test_eligibility_endpoint.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
)
1515

1616
from eligibility_signposting_api.model.campaign_config import CampaignConfig
17+
from eligibility_signposting_api.model.consumer_mapping import ConsumerMapping
1718
from eligibility_signposting_api.model.eligibility_status import (
1819
NHSNumber,
1920
)
@@ -25,11 +26,12 @@ def test_nhs_number_given(
2526
client: FlaskClient,
2627
persisted_person: NHSNumber,
2728
campaign_config: CampaignConfig, # noqa: ARG002
29+
consumer_mapping: ConsumerMapping, # noqa: ARG002
2830
secretsmanager_client: BaseClient, # noqa: ARG002
2931
):
3032
# Given
3133
headers = {"nhs-login-nhs-number": str(persisted_person),
32-
"Consumer-ID":"dummy"}
34+
"Consumer-ID": "23-mic7heal-jor6don"}
3335

3436
# When
3537
response = client.get(f"/patient-check/{persisted_person}", headers=headers)

0 commit comments

Comments
 (0)