aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--test/test_csv_reader.py45
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
git.ajschof.me — hosted by ajschofield — powered by cgit