11package io .findify .s3mock
22
3+ import akka .http .scaladsl .Http
4+ import akka .http .scaladsl .model ._
35import com .amazonaws .services .s3 .model .{AmazonS3Exception , DeleteObjectsRequest }
46
5- import scala .collection .JavaConversions ._
7+ import scala .collection .JavaConverters ._
8+ import scala .concurrent .Await
69import scala .util .Try
10+ import scala .concurrent .duration ._
711
812/**
913 * Created by shutty on 8/11/16.
@@ -13,9 +17,9 @@ class DeleteTest extends S3MockTest {
1317 val s3 = fixture.client
1418 it should " delete a bucket" in {
1519 s3.createBucket(" del" )
16- s3.listBuckets().exists(_.getName == " del" ) shouldBe true
20+ s3.listBuckets().asScala. exists(_.getName == " del" ) shouldBe true
1721 s3.deleteBucket(" del" )
18- s3.listBuckets().exists(_.getName == " del" ) shouldBe false
22+ s3.listBuckets().asScala. exists(_.getName == " del" ) shouldBe false
1923 }
2024
2125 it should " return 404 for non existent buckets when deleting" in {
@@ -25,9 +29,9 @@ class DeleteTest extends S3MockTest {
2529 it should " delete an object" in {
2630 s3.createBucket(" delobj" )
2731 s3.putObject(" delobj" , " somefile" , " foo" )
28- s3.listObjects(" delobj" , " somefile" ).getObjectSummaries.exists(_.getKey == " somefile" ) shouldBe true
32+ s3.listObjects(" delobj" , " somefile" ).getObjectSummaries.asScala. exists(_.getKey == " somefile" ) shouldBe true
2933 s3.deleteObject(" delobj" , " somefile" )
30- s3.listObjects(" delobj" , " somefile" ).getObjectSummaries.exists(_.getKey == " somefile" ) shouldBe false
34+ s3.listObjects(" delobj" , " somefile" ).getObjectSummaries.asScala. exists(_.getKey == " somefile" ) shouldBe false
3135 }
3236
3337 it should " return 404 for non-existent keys when deleting" in {
@@ -59,5 +63,19 @@ class DeleteTest extends S3MockTest {
5963 val del = s3.deleteObject(" delobj3" , " some/path" )
6064 s3.listObjects(" delobj3" , " some/path/" ).getObjectSummaries.size() shouldBe 2
6165 }
66+
67+ it should " work with aws sdk 2.0 style multi-object delete" in {
68+ implicit val mat = fixture.mat
69+ s3.createBucket(" owntracks" )
70+ s3.putObject(" owntracks" , " data/2017-07-31/10:34.json" , " foo" )
71+ s3.putObject(" owntracks" , " data/2017-07-31/16:23.json" , " bar" )
72+ val requestData = """ <?xml version="1.0" encoding="UTF-8"?><Delete xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Object><Key>data/2017-07-31/10:34.json</Key></Object><Object><Key>data/2017-07-31/16:23.json</Key></Object></Delete>"""
73+ val response = Await .result(Http (fixture.system).singleRequest(HttpRequest (
74+ method = HttpMethods .POST ,
75+ uri = s " http://localhost: ${fixture.port}/owntracks?delete " ,
76+ entity = HttpEntity (ContentType (MediaTypes .`application/xml`, HttpCharsets .`UTF-8`), requestData)
77+ )), 10 .seconds)
78+ s3.listObjects(" owntracks" ).getObjectSummaries.isEmpty shouldBe true
79+ }
6280 }
6381}
0 commit comments