Skip to content

Commit 40b71f1

Browse files
committed
Idiomatic Kotlin part 3
1 parent ea50d00 commit 40b71f1

File tree

8 files changed

+104
-151
lines changed

8 files changed

+104
-151
lines changed

server/src/test/kotlin/com/adobe/testing/s3mock/store/BucketStoreTest.kt

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,15 @@ internal class BucketStoreTest : StoreTestBase() {
5050
private lateinit var bucketStore: BucketStore
5151

5252
@Test
53-
fun testCreateBucket() {
53+
fun `creates a bucket with expected name and path`() {
5454
val bucket = givenBucket()
5555

5656
assertThat(bucket.name).endsWith(TEST_BUCKET_NAME)
5757
assertThat(bucket.path).exists()
5858
}
5959

6060
@Test
61-
fun testDoesBucketExist_ok() {
61+
fun `doesBucketExist returns true for existing bucket`() {
6262
givenBucket()
6363

6464
val doesBucketExist = bucketStore.doesBucketExist(TEST_BUCKET_NAME)
@@ -67,14 +67,14 @@ internal class BucketStoreTest : StoreTestBase() {
6767
}
6868

6969
@Test
70-
fun testDoesBucketExist_nonExistingBucket() {
70+
fun `doesBucketExist returns false for non-existing bucket`() {
7171
val doesBucketExist = bucketStore.doesBucketExist(TEST_BUCKET_NAME)
7272

7373
assertThat(doesBucketExist).isFalse()
7474
}
7575

7676
@Test
77-
fun testCreateAndListBucketsWithUmlauts() {
77+
fun `creates and lists buckets with umlauts`() {
7878
val bucketName1 = "myNüwNämeÄins"
7979
val bucketName2 = "myNüwNämeZwöei"
8080
val bucketName3 = "myNüwNämeDrü"
@@ -89,7 +89,7 @@ internal class BucketStoreTest : StoreTestBase() {
8989
}
9090

9191
@Test
92-
fun testCreateAndGetBucket() {
92+
fun `creates and gets a bucket`() {
9393
givenBucket()
9494

9595
val bucket = bucketStore.getBucketMetadata(TEST_BUCKET_NAME)
@@ -99,7 +99,7 @@ internal class BucketStoreTest : StoreTestBase() {
9999
}
100100

101101
@Test
102-
fun testCreateAndGetBucketWithObjectLock() {
102+
fun `creates and gets bucket with object lock`() {
103103
givenBucket(
104104
objectLockEnabled = true,
105105
)
@@ -109,12 +109,12 @@ internal class BucketStoreTest : StoreTestBase() {
109109
assertThat(bucket).isNotNull()
110110
assertThat(bucket.name).isEqualTo(TEST_BUCKET_NAME)
111111
assertThat(bucket.objectLockConfiguration).isNotNull()
112-
assertThat(bucket.objectLockConfiguration!!.objectLockRule).isNull()
113-
assertThat(bucket.objectLockConfiguration!!.objectLockEnabled).isEqualTo(ObjectLockEnabled.ENABLED)
112+
assertThat(bucket.objectLockConfiguration?.objectLockRule).isNull()
113+
assertThat(bucket.objectLockConfiguration?.objectLockEnabled).isEqualTo(ObjectLockEnabled.ENABLED)
114114
}
115115

116116
@Test
117-
fun testStoreAndGetBucketLifecycleConfiguration() {
117+
fun `stores and retrieves bucket lifecycle configuration`() {
118118
givenBucket()
119119

120120
val filter1 = LifecycleRuleFilter(null, null, "documents/", null, null)
@@ -133,18 +133,18 @@ internal class BucketStoreTest : StoreTestBase() {
133133
}
134134

135135
@Test
136-
fun testCreateAndDeleteBucket() {
136+
fun `deletes empty bucket successfully`() {
137137
givenBucket()
138138

139139
val bucketDeleted = bucketStore.deleteBucket(TEST_BUCKET_NAME)
140140
val bucket = bucketStore.doesBucketExist(TEST_BUCKET_NAME)
141141

142142
assertThat(bucketDeleted).isTrue()
143-
assertThat(bucket).isFalse
143+
assertThat(bucket).isFalse()
144144
}
145145

146146
@Test
147-
fun testIsBucketEmpty_onNewAndAfterAddingKey() {
147+
fun `isBucketEmpty is true for new bucket and false after adding a key`() {
148148
givenBucket()
149149

150150
// Newly created bucket should be empty
@@ -156,7 +156,7 @@ internal class BucketStoreTest : StoreTestBase() {
156156
}
157157

158158
@Test
159-
fun testAddLookupRemoveKeys_withAndWithoutPrefix() {
159+
fun `add, lookup and remove keys with and without prefix`() {
160160
givenBucket()
161161

162162
val id1 = bucketStore.addKeyToBucket("a/1.txt", TEST_BUCKET_NAME)
@@ -183,7 +183,7 @@ internal class BucketStoreTest : StoreTestBase() {
183183
}
184184

185185
@Test
186-
fun testDeleteBucket_nonEmptyReturnsFalseAndNotDeleted() {
186+
fun `deleteBucket returns false and does not delete a non-empty bucket`() {
187187
givenBucket()
188188

189189
bucketStore.addKeyToBucket("keep/me.txt", TEST_BUCKET_NAME)
@@ -194,7 +194,7 @@ internal class BucketStoreTest : StoreTestBase() {
194194
}
195195

196196
@Test
197-
fun testObjectLockEnabledFlagAndStoringConfiguration() {
197+
fun `object lock disabled by default and enabled after storing configuration`() {
198198
// Create without object lock -> disabled
199199
givenBucket()
200200

@@ -210,7 +210,7 @@ internal class BucketStoreTest : StoreTestBase() {
210210
}
211211

212212
@Test
213-
fun testVersioningConfiguration_enabledAndSuspendedFlags() {
213+
fun `versioning flags reflect enabled and suspended states`() {
214214
givenBucket()
215215

216216
var meta = bucketStore.getBucketMetadata(TEST_BUCKET_NAME)
@@ -235,7 +235,7 @@ internal class BucketStoreTest : StoreTestBase() {
235235
}
236236

237237
@Test
238-
fun testCreateBucket_withCustomRegionBucketInfoAndLocationInfo() {
238+
fun `creates bucket with custom region, bucket info and location info`() {
239239
val region = "eu-west-1"
240240
val bucketInfo = BucketInfo(DataRedundancy.SINGLE_AVAILABILITY_ZONE, BucketType.DIRECTORY)
241241
val locationInfo = LocationInfo("eu-west-1a", LocationType.AVAILABILITY_ZONE)
@@ -253,14 +253,14 @@ internal class BucketStoreTest : StoreTestBase() {
253253
}
254254

255255
@Test
256-
fun testIsBucketEmpty_nonExistingBucketThrows() {
256+
fun `isBucketEmpty throws for non-existing bucket`() {
257257
assertThatThrownBy {
258258
bucketStore.isBucketEmpty("does-not-exist")
259259
}.isInstanceOf(IllegalStateException::class.java)
260260
}
261261

262262
@Test
263-
fun testLoadBuckets_returnsExistingObjectIds() {
263+
fun `loadBuckets returns existing object ids`() {
264264
givenBucket()
265265

266266
val id1 = bucketStore.addKeyToBucket("x/1", TEST_BUCKET_NAME)
@@ -291,9 +291,9 @@ internal class BucketStoreTest : StoreTestBase() {
291291
*/
292292
@AfterEach
293293
fun cleanupStores() {
294-
for (bucket in bucketStore.listBuckets()) {
295-
bucketStore.lookupKeysInBucket(null, bucket.name).forEach {
296-
bucketStore.removeFromBucket(it, bucket.name)
294+
bucketStore.listBuckets().forEach { bucket ->
295+
bucketStore.lookupKeysInBucket(null, bucket.name).forEach { key ->
296+
bucketStore.removeFromBucket(key, bucket.name)
297297
}
298298
bucketStore.deleteBucket(bucket.name)
299299
}

server/src/test/kotlin/com/adobe/testing/s3mock/store/KmsKeyStoreTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ internal class KmsKeyStoreTest {
2828
private lateinit var kmsKeyStore: KmsKeyStore
2929

3030
@Test
31-
fun testValidateKeyRef() {
31+
fun `valid registered keyRef makes validateKeyId return true`() {
3232
val keyId = "valid-test-key-id"
3333
val keyRef = "arn:aws:kms:us-east-1:1234567890:key/$keyId"
3434
kmsKeyStore.registerKMSKeyRef(keyRef)

server/src/test/kotlin/com/adobe/testing/s3mock/store/MultipartStoreTest.kt

Lines changed: 16 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -576,22 +576,16 @@ internal class MultipartStoreTest : StoreTestBase() {
576576
"checksum for each part. It was missing for part 1 in the request.")
577577
}
578578

579-
private fun getParts(n: Int): List<CompletedPart> {
580-
val parts = ArrayList<CompletedPart>()
581-
for (i in 1..n) {
582-
parts.add(
583-
CompletedPart(
584-
null,
585-
null,
586-
null,
587-
null,
588-
null,
589-
null,
590-
i
591-
)
592-
)
593-
}
594-
return parts
579+
private fun getParts(n: Int): List<CompletedPart> = (1..n).map {
580+
CompletedPart(
581+
null,
582+
null,
583+
null,
584+
null,
585+
null,
586+
null,
587+
it
588+
)
595589
}
596590

597591
@Test
@@ -744,7 +738,7 @@ internal class MultipartStoreTest : StoreTestBase() {
744738
val multipartUploadInfo = multipartStore.getMultipartUploadInfo(bucket, uploadId)
745739
val uploads = multipartStore.listMultipartUploads(bucket, NO_PREFIX)
746740
assertThat(uploads).hasSize(1)
747-
uploads.iterator().next().also {
741+
uploads.first().also {
748742
assertThat(it).isEqualTo(multipartUpload)
749743
// and some specific sanity checks
750744
assertThat(it.uploadId).isEqualTo(uploadId.toString())
@@ -1151,18 +1145,13 @@ internal class MultipartStoreTest : StoreTestBase() {
11511145
*/
11521146
@AfterEach
11531147
fun cleanupStores() {
1154-
arrayListOf<UUID>().apply {
1155-
for (id in idCache) {
1156-
BUCKET_NAMES.forEach {
1157-
objectStore.deleteObject(metadataFrom(it), id, null)
1158-
}
1159-
this.add(id)
1160-
}
1161-
}.also {
1162-
for (id in it) {
1163-
idCache.remove(id)
1148+
val snapshot = idCache.toList()
1149+
snapshot.forEach { id ->
1150+
BUCKET_NAMES.forEach { bucketName ->
1151+
objectStore.deleteObject(metadataFrom(bucketName), id, null)
11641152
}
11651153
}
1154+
idCache.removeAll(snapshot)
11661155

11671156
BUCKET_NAMES.forEach { bucket ->
11681157
val bucketMetadata = metadataFrom(bucket)

server/src/test/kotlin/com/adobe/testing/s3mock/store/ObjectStoreTest.kt

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@ internal class ObjectStoreTest : StoreTestBase() {
6565
}
6666

6767
@Test
68-
@Throws(Exception::class)
6968
fun testStoreObject() {
7069
val sourceFile = File(TEST_FILE_PATH)
7170
val id = managedId()
@@ -90,7 +89,6 @@ internal class ObjectStoreTest : StoreTestBase() {
9089
}
9190

9291
@Test
93-
@Throws(Exception::class)
9492
fun testStoreAndGetObject() {
9593
val sourceFile = File(TEST_FILE_PATH)
9694
val path = sourceFile.toPath()
@@ -118,7 +116,6 @@ internal class ObjectStoreTest : StoreTestBase() {
118116
}
119117

120118
@Test
121-
@Throws(Exception::class)
122119
fun testStoreAndGetObject_startsWithSlash() {
123120
val sourceFile = File(TEST_FILE_PATH)
124121
val path = sourceFile.toPath()
@@ -274,7 +271,6 @@ internal class ObjectStoreTest : StoreTestBase() {
274271
}
275272

276273
@Test
277-
@Throws(Exception::class)
278274
fun testStoreAndCopyObjectEncrypted() {
279275
val destinationObjectName = "destinationObject"
280276
val destinationBucketName = "destinationBucket"
@@ -511,21 +507,14 @@ internal class ObjectStoreTest : StoreTestBase() {
511507
*/
512508
@AfterEach
513509
fun cleanupStores() {
514-
arrayListOf<UUID>().apply {
515-
for (id in idCache) {
516-
objectStore.deleteObject(metadataFrom(TEST_BUCKET_NAME), id, null)
517-
objectStore.deleteObject(metadataFrom("bucket1"), id, null)
518-
objectStore.deleteObject(metadataFrom("bucket2"), id, null)
519-
objectStore.deleteObject(metadataFrom("destinationBucket"), id, null)
520-
objectStore.deleteObject(metadataFrom("sourceBucket"), id, null)
521-
this.add(id)
522-
}
523-
}.also {
524-
for (id in it) {
525-
idCache.remove(id)
510+
val ids = idCache.toList()
511+
val buckets = listOf(TEST_BUCKET_NAME, "bucket1", "bucket2", "destinationBucket", "sourceBucket")
512+
ids.forEach { id ->
513+
buckets.forEach { bucket ->
514+
objectStore.deleteObject(metadataFrom(bucket), id, null)
526515
}
527516
}
528-
517+
idCache.removeAll(ids.toSet())
529518
}
530519

531520
companion object {

server/src/test/kotlin/com/adobe/testing/s3mock/store/S3ObjectVersionsTest.kt

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import java.util.UUID
2121

2222
internal class S3ObjectVersionsTest {
2323
@Test
24-
fun testVersion_isNull() {
24+
fun `latestVersion is null until first version is created`() {
2525
val iut = S3ObjectVersions(UUID.randomUUID())
2626
assertThat(iut.latestVersion).isNull()
2727

@@ -31,16 +31,7 @@ internal class S3ObjectVersionsTest {
3131
}
3232

3333
@Test
34-
fun testVersion_createVersion() {
35-
val iut = S3ObjectVersions(UUID.randomUUID())
36-
37-
val version = iut.createVersion()
38-
assertThat(version).isNotBlank()
39-
assertThat(iut.latestVersion).isEqualTo(version)
40-
}
41-
42-
@Test
43-
fun testVersion_createVersionsDeleteVersion() {
34+
fun `creating multiple versions updates latest and deleting latest reverts to previous`() {
4435
val iut = S3ObjectVersions(UUID.randomUUID())
4536

4637
val version1 = iut.createVersion()

server/src/test/kotlin/com/adobe/testing/s3mock/store/StoreConfigurationTest.kt

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import java.nio.file.Files
2828
import java.nio.file.Path
2929
import java.nio.file.Paths
3030
import java.time.Instant
31-
import java.util.function.Consumer
3231

3332
internal class StoreConfigurationTest {
3433
@Test
@@ -50,12 +49,8 @@ internal class StoreConfigurationTest {
5049

5150
assertThat(bucketStore.getBucketMetadata(initialBucketName).name).isEqualTo(initialBucketName)
5251

53-
val createdBuckets = mutableListOf<Path>().apply {
54-
Files.newDirectoryStream(tempDir).use { paths ->
55-
paths.forEach(
56-
Consumer { e: Path -> this.add(e) }
57-
)
58-
}
52+
val createdBuckets = Files.newDirectoryStream(tempDir).use { ds ->
53+
ds.toList()
5954
}
6055
assertThat(createdBuckets).hasSize(1)
6156
assertThat(createdBuckets[0].fileName).hasToString(initialBucketName)
@@ -103,12 +98,8 @@ internal class StoreConfigurationTest {
10398
assertThat(bucketStore.getBucketMetadata(initialBucketName).name)
10499
.isEqualTo(initialBucketName)
105100

106-
val createdBuckets = mutableListOf<Path>().apply {
107-
Files.newDirectoryStream(tempDir).use {
108-
it.forEach(
109-
Consumer { e: Path -> this.add(e) }
110-
)
111-
}
101+
val createdBuckets = Files.newDirectoryStream(tempDir).use { ds ->
102+
ds.toList()
112103
}
113104
assertThat(createdBuckets)
114105
.hasSize(2)

0 commit comments

Comments
 (0)