diff options
Diffstat (limited to 'test/test_csv_reader.py')
| -rw-r--r-- | test/test_csv_reader.py | 45 |
1 files changed, 43 insertions, 2 deletions
diff --git a/test/test_csv_reader.py b/test/test_csv_reader.py index f59a5a7..27abea0 100644 --- a/test/test_csv_reader.py +++ b/test/test_csv_reader.py @@ -2,8 +2,9 @@ # Author: Alex Schofield import boto3 -from moto import mock_s3 +from moto import mock_aws from obfuscator.csv_reader import CSVReader +import pytest reader = CSVReader() @@ -66,4 +67,44 @@ def test_csv_with_quoted_fields_should_run_as_expected(): ] assert result == expected -# CSVREADER: READ_S3 TESTS
\ No newline at end of file + +# CSVREADER: READ_S3 TESTS + + +def setup_s3(s3_client, bucket: str, key: str, content: str): + s3_client.create_bucket( + Bucket="test-bucket", + CreateBucketConfiguration={"LocationConstraint": "eu-west-2"}, + ) + s3_client.put_object(Bucket=bucket, Key=key, Body=content) + + +@pytest.fixture(autouse=True) +def s3_client(): + with mock_aws(): + yield boto3.client("s3", "eu-west-2") + + +def test_read_s3_valid_csv_returns_expected(): + with mock_aws(): + s3 = boto3.client("s3", region_name="eu-west-2") + bucket = "test-bucket" + key = "data/mock.csv" + + csv_content = ( + "student_id,name,course\n" + "1234,Student 1,Course 1\n" + "5678,Student 2,Course 2\n" + ) + + setup_s3(s3, bucket, key, csv_content) + path = f"s3://{bucket}/{key}" + + data = reader.read_s3(path) + + expected = [ + {"student_id": "1234", "name": "Student 1", "course": "Course 1"}, + {"student_id": "5678", "name": "Student 2", "course": "Course 2"}, + ] + + assert data == expected |
