Skip to content

Commit cb32cf9

Browse files
firehose and audit bucket fixture
1 parent bfa9629 commit cb32cf9

4 files changed

Lines changed: 31 additions & 16 deletions

File tree

src/eligibility_signposting_api/config/config.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
def config() -> dict[str, Any]:
2222
person_table_name = TableName(os.getenv("PERSON_TABLE_NAME", "test_eligibility_datastore"))
2323
rules_bucket_name = BucketName(os.getenv("RULES_BUCKET_NAME", "test-rules-bucket"))
24+
audit_bucket_name = BucketName(os.getenv("AUDIT_BUCKET_NAME", "test-audit-bucket"))
2425
aws_default_region = AwsRegion(os.getenv("AWS_DEFAULT_REGION", "eu-west-1"))
2526
log_level = LOG_LEVEL
2627

@@ -33,6 +34,7 @@ def config() -> dict[str, Any]:
3334
"person_table_name": person_table_name,
3435
"s3_endpoint": None,
3536
"rules_bucket_name": rules_bucket_name,
37+
"audit_bucket_name":audit_bucket_name,
3638
"log_level": log_level,
3739
}
3840

@@ -44,6 +46,7 @@ def config() -> dict[str, Any]:
4446
"person_table_name": person_table_name,
4547
"s3_endpoint": URL(os.getenv("S3_ENDPOINT", "http://localhost:4566")),
4648
"rules_bucket_name": rules_bucket_name,
49+
"audit_bucket_name": audit_bucket_name,
4750
"log_level": log_level,
4851
}
4952

tests/integration/conftest.py

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,10 @@ def iam_client(boto3_session: Session, localstack: URL) -> BaseClient:
9696
def s3_client(boto3_session: Session, localstack: URL) -> BaseClient:
9797
return boto3_session.client("s3", endpoint_url=str(localstack))
9898

99+
@pytest.fixture(scope="session")
100+
def firehose_client(boto3_session: Session, localstack: URL) -> BaseClient:
101+
session = Session()
102+
return session.client("firehose", endpoint_url=str(localstack))
99103

100104
@pytest.fixture(scope="session")
101105
def iam_role(iam_client: BaseClient) -> Generator[str]:
@@ -372,15 +376,21 @@ def persisted_person_pc_sw19(person_table: Any, faker: Faker) -> Generator[eligi
372376

373377

374378
@pytest.fixture(scope="session")
375-
def bucket(s3_client: BaseClient) -> Generator[BucketName]:
379+
def rules_bucket(s3_client: BaseClient) -> Generator[BucketName]:
376380
bucket_name = BucketName(os.getenv("RULES_BUCKET_NAME", "test-rules-bucket"))
377381
s3_client.create_bucket(Bucket=bucket_name, CreateBucketConfiguration={"LocationConstraint": AWS_REGION})
378382
yield bucket_name
379383
s3_client.delete_bucket(Bucket=bucket_name)
380384

385+
@pytest.fixture(scope="session")
386+
def audit_bucket(s3_client: BaseClient) -> Generator[BucketName]:
387+
bucket_name = BucketName(os.getenv("AUDIT_BUCKET_NAME", "test-audit-bucket"))
388+
s3_client.create_bucket(Bucket=bucket_name, CreateBucketConfiguration={"LocationConstraint": AWS_REGION})
389+
yield bucket_name
390+
s3_client.delete_bucket(Bucket=bucket_name)
381391

382392
@pytest.fixture(scope="class")
383-
def campaign_config(s3_client: BaseClient, bucket: BucketName) -> Generator[rules.CampaignConfig]:
393+
def campaign_config(s3_client: BaseClient, rules_bucket: BucketName) -> Generator[rules.CampaignConfig]:
384394
campaign: rules.CampaignConfig = rule.CampaignConfigFactory.build(
385395
target="RSV",
386396
iterations=[
@@ -402,14 +412,15 @@ def campaign_config(s3_client: BaseClient, bucket: BucketName) -> Generator[rule
402412
)
403413
campaign_data = {"CampaignConfig": campaign.model_dump(by_alias=True)}
404414
s3_client.put_object(
405-
Bucket=bucket, Key=f"{campaign.name}.json", Body=json.dumps(campaign_data), ContentType="application/json"
415+
Bucket=rules_bucket, Key=f"{campaign.name}.json", Body=json.dumps(campaign_data), ContentType="application/json"
406416
)
407417
yield campaign
408-
s3_client.delete_object(Bucket=bucket, Key=f"{campaign.name}.json")
418+
s3_client.delete_object(Bucket=rules_bucket, Key=f"{campaign.name}.json")
409419

410420

411421
@pytest.fixture(scope="class")
412-
def campaign_config_with_magic_cohort(s3_client: BaseClient, bucket: BucketName) -> Generator[rules.CampaignConfig]:
422+
def campaign_config_with_magic_cohort(s3_client: BaseClient,
423+
rules_bucket: BucketName) -> Generator[rules.CampaignConfig]:
413424
campaign: rules.CampaignConfig = rule.CampaignConfigFactory.build(
414425
target="COVID",
415426
iterations=[
@@ -424,15 +435,15 @@ def campaign_config_with_magic_cohort(s3_client: BaseClient, bucket: BucketName)
424435
)
425436
campaign_data = {"CampaignConfig": campaign.model_dump(by_alias=True)}
426437
s3_client.put_object(
427-
Bucket=bucket, Key=f"{campaign.name}.json", Body=json.dumps(campaign_data), ContentType="application/json"
438+
Bucket=rules_bucket, Key=f"{campaign.name}.json", Body=json.dumps(campaign_data), ContentType="application/json"
428439
)
429440
yield campaign
430-
s3_client.delete_object(Bucket=bucket, Key=f"{campaign.name}.json")
441+
s3_client.delete_object(Bucket=rules_bucket, Key=f"{campaign.name}.json")
431442

432443

433444
@pytest.fixture(scope="class")
434445
def campaign_config_with_missing_descriptions_missing_rule_text(
435-
s3_client: BaseClient, bucket: BucketName
446+
s3_client: BaseClient, rules_bucket: BucketName
436447
) -> Generator[rules.CampaignConfig]:
437448
campaign: rules.CampaignConfig = rule.CampaignConfigFactory.build(
438449
target="FLU",
@@ -456,7 +467,7 @@ def campaign_config_with_missing_descriptions_missing_rule_text(
456467
)
457468
campaign_data = {"CampaignConfig": campaign.model_dump(by_alias=True)}
458469
s3_client.put_object(
459-
Bucket=bucket, Key=f"{campaign.name}.json", Body=json.dumps(campaign_data), ContentType="application/json"
470+
Bucket=rules_bucket, Key=f"{campaign.name}.json", Body=json.dumps(campaign_data), ContentType="application/json"
460471
)
461472
yield campaign
462-
s3_client.delete_object(Bucket=bucket, Key=f"{campaign.name}.json")
473+
s3_client.delete_object(Bucket=rules_bucket, Key=f"{campaign.name}.json")

tests/integration/lambda/test_app_running_as_lambda.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,8 @@ def get_log_messages(flask_function: str, logs_client: BaseClient) -> list[str]:
155155
def test_given_nhs_number_in_path_matches_with_nhs_number_in_headers(
156156
lambda_client: BaseClient, # noqa:ARG001
157157
persisted_person: NHSNumber,
158-
campaign_config: CampaignConfig, # noqa:ARG001
158+
campaign_config: CampaignConfig, # noqa:ARG001
159+
firehose_client: BaseClient, # noqa:ARG001
159160
api_gateway_endpoint: URL,
160161
):
161162
# Given

tests/integration/repo/test_campaign_repo.py

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

1313

1414
@pytest.fixture(scope="module")
15-
def campaign_config(s3_client: BaseClient, bucket: BucketName) -> Generator[CampaignConfig]:
15+
def campaign_config(s3_client: BaseClient, rules_bucket: BucketName) -> Generator[CampaignConfig]:
1616
campaign: CampaignConfig = CampaignConfigFactory.build()
1717
campaign_data = {"CampaignConfig": campaign.model_dump(by_alias=True)}
1818
s3_client.put_object(
19-
Bucket=bucket, Key=f"{campaign.name}.json", Body=json.dumps(campaign_data), ContentType="application/json"
19+
Bucket=rules_bucket, Key=f"{campaign.name}.json", Body=json.dumps(campaign_data), ContentType="application/json"
2020
)
2121
yield campaign
22-
s3_client.delete_object(Bucket=bucket, Key=f"{campaign.name}.json")
22+
s3_client.delete_object(Bucket=rules_bucket, Key=f"{campaign.name}.json")
2323

2424

25-
def test_get_campaign_config(s3_client: BaseClient, bucket: BucketName, campaign_config: CampaignConfig):
25+
def test_get_campaign_config(s3_client: BaseClient, rules_bucket: BucketName, campaign_config: CampaignConfig):
2626
# Given
27-
repo = CampaignRepo(s3_client, bucket)
27+
repo = CampaignRepo(s3_client, rules_bucket)
2828

2929
# When
3030
actual = list(repo.get_campaign_configs())

0 commit comments

Comments
 (0)