From f84b5f656f5abe09497a0d2336b606ddebc95f09 Mon Sep 17 00:00:00 2001 From: pvighi Date: Mon, 3 Dec 2018 14:47:01 +0000 Subject: [PATCH] added unit test for file upload --- .../S3UploadFileTest.scala | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 handlers/sf-datalake-export/src/test/scala/com/com/gu/sf_datalake_export/salesforce_bulk_api/S3UploadFileTest.scala diff --git a/handlers/sf-datalake-export/src/test/scala/com/com/gu/sf_datalake_export/salesforce_bulk_api/S3UploadFileTest.scala b/handlers/sf-datalake-export/src/test/scala/com/com/gu/sf_datalake_export/salesforce_bulk_api/S3UploadFileTest.scala new file mode 100644 index 0000000000..7ea4eb21b3 --- /dev/null +++ b/handlers/sf-datalake-export/src/test/scala/com/com/gu/sf_datalake_export/salesforce_bulk_api/S3UploadFileTest.scala @@ -0,0 +1,32 @@ +package com.com.gu.sf_datalake_export.salesforce_bulk_api + +import com.amazonaws.services.s3.model.{CannedAccessControlList, PutObjectRequest, PutObjectResult} +import com.gu.effects.{BucketName, S3Path} +import com.gu.sf_datalake_export.salesforce_bulk_api.S3UploadFile +import com.gu.sf_datalake_export.salesforce_bulk_api.S3UploadFile.{File, FileContent, FileName} +import org.scalatest.{FlatSpec, Matchers} + +import scala.util.{Success, Try} + +class S3UploadFileTest extends FlatSpec with Matchers{ + val testPath = S3Path(BucketName("someBucket"), None) + val testFile = File(FileName("someName"), FileContent("these are the file contents")) + val successS3Result = Success(new PutObjectResult()) + var s3WriteCalled = false + + def fakeS3Write(putRequest: PutObjectRequest): Try[PutObjectResult] = { + s3WriteCalled = true + putRequest.getBucketName shouldBe testPath.bucketName.value + putRequest.getCannedAcl shouldBe CannedAccessControlList.BucketOwnerRead + val fileContent = scala.io.Source.fromInputStream(putRequest.getInputStream).mkString + fileContent shouldBe testFile.content.value + successS3Result + + } + + it should "upload file" in { + S3UploadFile(fakeS3Write)(testPath, testFile) shouldBe successS3Result + s3WriteCalled shouldBe true + } + +}