Skip to content

Commit 7635b98

Browse files
authored
Commonalize and improve our serialization test utils (#2724)
1 parent 60126ae commit 7635b98

File tree

4 files changed

+98
-85
lines changed

4 files changed

+98
-85
lines changed

jetbrains-core/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultAwsConnectionManagerTest.kt

Lines changed: 53 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,8 @@
33

44
package software.aws.toolkits.jetbrains.core.credentials
55

6-
import com.intellij.configurationStore.deserializeAndLoadState
7-
import com.intellij.configurationStore.serializeStateInto
86
import com.intellij.openapi.application.ApplicationManager
97
import org.assertj.core.api.Assertions.assertThat
10-
import org.jdom.Element
11-
import org.jdom.output.XMLOutputter
128
import org.junit.After
139
import org.junit.Before
1410
import org.junit.Rule
@@ -24,8 +20,9 @@ import software.aws.toolkits.jetbrains.core.region.AwsRegionProvider
2420
import software.aws.toolkits.jetbrains.core.region.MockRegionProviderRule
2521
import software.aws.toolkits.jetbrains.core.region.getDefaultRegion
2622
import software.aws.toolkits.jetbrains.services.sts.StsResources
23+
import software.aws.toolkits.jetbrains.utils.deserializeState
2724
import software.aws.toolkits.jetbrains.utils.rules.HeavyJavaCodeInsightTestFixtureRule
28-
import software.aws.toolkits.jetbrains.utils.toElement
25+
import software.aws.toolkits.jetbrains.utils.serializeState
2926
import java.nio.file.Files
3027
import java.util.concurrent.CompletableFuture
3128
import java.util.concurrent.CountDownLatch
@@ -72,7 +69,7 @@ class DefaultAwsConnectionManagerTest {
7269

7370
@Test
7471
fun `Starts with no active credentials`() {
75-
assertThat(manager.isValidConnectionSettings()).isFalse()
72+
assertThat(manager.isValidConnectionSettings()).isFalse
7673
assertThat(manager.recentlyUsedCredentials()).isEmpty()
7774
}
7875

@@ -91,19 +88,19 @@ class DefaultAwsConnectionManagerTest {
9188

9289
@Test
9390
fun `On load, default region of credential is used if there is no other active region`() {
94-
val element =
95-
"""
96-
<AccountState>
97-
<option name="activeProfile" value="Mock" />
98-
</AccountState>
99-
""".toElement()
100-
10191
val region = AwsRegion("us-west-2", "Oregon", "AWS")
10292
val credentials = mockCredentialManager.addCredentials(id = "Mock", region = region)
10393
markConnectionSettingsAsValid(credentials, regionProviderRule.defaultRegion())
10494
regionProviderRule.addRegion(region)
10595

106-
deserializeAndLoadState(manager, element)
96+
deserializeState(
97+
"""
98+
<AccountState>
99+
<option name="activeProfile" value="Mock" />
100+
</AccountState>
101+
""",
102+
manager,
103+
)
107104

108105
manager.waitUntilConnectionStateIsStable()
109106

@@ -126,14 +123,14 @@ class DefaultAwsConnectionManagerTest {
126123

127124
changeCredentialProvider(credentials)
128125

129-
assertThat(manager.isValidConnectionSettings()).isTrue()
126+
assertThat(manager.isValidConnectionSettings()).isTrue
130127
assertThat(manager.connectionSettings()?.credentials?.id).isEqualTo(credentials.id)
131128

132129
assertThat(manager.recentlyUsedCredentials()).element(0).isEqualTo(credentials)
133130

134131
changeCredentialProvider(credentials2)
135132

136-
assertThat(manager.isValidConnectionSettings()).isTrue()
133+
assertThat(manager.isValidConnectionSettings()).isTrue
137134
assertThat(manager.connectionSettings()?.credentials?.id).isEqualTo(credentials2.id)
138135

139136
assertThat(manager.recentlyUsedCredentials()).element(0).isEqualTo(credentials2)
@@ -210,9 +207,7 @@ class DefaultAwsConnectionManagerTest {
210207
@Test
211208
fun `Active region is persisted`() {
212209
manager.changeRegion(AwsRegion.GLOBAL)
213-
val element = Element("AccountState")
214-
serializeStateInto(manager, element)
215-
assertThat(element.string()).isEqualToIgnoringWhitespace(
210+
assertThat(serializeState("AccountState", manager)).isEqualToIgnoringWhitespace(
216211
"""
217212
<AccountState>
218213
<option name="activeRegion" value="aws-global" />
@@ -232,9 +227,7 @@ class DefaultAwsConnectionManagerTest {
232227
markConnectionSettingsAsValid(credentials, manager.activeRegion)
233228
changeCredentialProvider(credentials)
234229

235-
val element = Element("AccountState")
236-
serializeStateInto(manager, element)
237-
assertThat(element.string()).isEqualToIgnoringWhitespace(
230+
assertThat(serializeState("AccountState", manager)).isEqualToIgnoringWhitespace(
238231
"""
239232
<AccountState>
240233
<option name="activeProfile" value="Mock" />
@@ -250,7 +243,10 @@ class DefaultAwsConnectionManagerTest {
250243

251244
@Test
252245
fun `Active credential can be restored from persistence`() {
253-
val element =
246+
val credentials = mockCredentialManager.addCredentials("Mock")
247+
markConnectionSettingsAsValid(credentials, regionProviderRule.defaultRegion())
248+
249+
deserializeState(
254250
"""
255251
<AccountState>
256252
<option name="activeProfile" value="Mock" />
@@ -260,12 +256,9 @@ class DefaultAwsConnectionManagerTest {
260256
</list>
261257
</option>
262258
</AccountState>
263-
""".toElement()
264-
265-
val credentials = mockCredentialManager.addCredentials("Mock")
266-
markConnectionSettingsAsValid(credentials, regionProviderRule.defaultRegion())
267-
268-
deserializeAndLoadState(manager, element)
259+
""",
260+
manager,
261+
)
269262

270263
manager.waitUntilConnectionStateIsStable()
271264

@@ -275,7 +268,7 @@ class DefaultAwsConnectionManagerTest {
275268

276269
@Test
277270
fun `Active region can be restored from persistence`() {
278-
val element =
271+
deserializeState(
279272
"""
280273
<AccountState>
281274
<option name="activeRegion" value="${getDefaultRegion().id}" />
@@ -285,9 +278,9 @@ class DefaultAwsConnectionManagerTest {
285278
</list>
286279
</option>
287280
</AccountState>
288-
""".toElement()
289-
290-
deserializeAndLoadState(manager, element)
281+
""",
282+
manager,
283+
)
291284

292285
manager.waitUntilConnectionStateIsStable()
293286

@@ -299,7 +292,7 @@ class DefaultAwsConnectionManagerTest {
299292

300293
@Test
301294
fun `Attempting to restore a region that no longer exists is handled gracefully`() {
302-
val element =
295+
deserializeState(
303296
"""
304297
<AccountState>
305298
<option name="activeRegion" value="DoesNotExist" />
@@ -309,8 +302,9 @@ class DefaultAwsConnectionManagerTest {
309302
</list>
310303
</option>
311304
</AccountState>
312-
""".toElement()
313-
deserializeAndLoadState(manager, element)
305+
""",
306+
manager,
307+
)
314308

315309
manager.waitUntilConnectionStateIsStable()
316310

@@ -320,7 +314,7 @@ class DefaultAwsConnectionManagerTest {
320314

321315
@Test
322316
fun `Attempting to restore a credential that no longer exists is handled gracefully`() {
323-
val element =
317+
deserializeState(
324318
"""
325319
<AccountState>
326320
<option name="activeProfile" value="DoesNotExist" />
@@ -330,13 +324,13 @@ class DefaultAwsConnectionManagerTest {
330324
</list>
331325
</option>
332326
</AccountState>
333-
""".toElement()
334-
335-
deserializeAndLoadState(manager, element)
327+
""",
328+
manager,
329+
)
336330

337331
manager.waitUntilConnectionStateIsStable()
338332

339-
assertThat(manager.isValidConnectionSettings()).isFalse()
333+
assertThat(manager.isValidConnectionSettings()).isFalse
340334
assertThat(manager.recentlyUsedCredentials()).isEmpty()
341335
assertThat(manager.connectionSettings()).isNull()
342336
}
@@ -347,7 +341,7 @@ class DefaultAwsConnectionManagerTest {
347341

348342
markConnectionSettingsAsInvalid(mockCredentials, regionProviderRule.defaultRegion())
349343

350-
val element =
344+
deserializeState(
351345
"""
352346
<AccountState>
353347
<option name="activeProfile" value="${mockCredentials.id}" />
@@ -357,30 +351,30 @@ class DefaultAwsConnectionManagerTest {
357351
</list>
358352
</option>
359353
</AccountState>
360-
""".toElement()
361-
362-
deserializeAndLoadState(manager, element)
354+
""",
355+
manager,
356+
)
363357

364358
manager.waitUntilConnectionStateIsStable()
365359

366-
assertThat(manager.isValidConnectionSettings()).isFalse()
360+
assertThat(manager.isValidConnectionSettings()).isFalse
367361
}
368362

369363
@Test
370364
fun `On load, default credential is selected if no other credential is active`() {
371365
val credentials = mockCredentialManager.addCredentials(DEFAULT_PROFILE_ID)
372366
markConnectionSettingsAsValid(credentials, regionProviderRule.defaultRegion())
373367

374-
val element =
368+
deserializeState(
375369
"""
376370
<AccountState/>
377-
""".toElement()
378-
379-
deserializeAndLoadState(manager, element)
371+
""",
372+
manager,
373+
)
380374

381375
manager.waitUntilConnectionStateIsStable()
382376

383-
assertThat(manager.isValidConnectionSettings()).isTrue()
377+
assertThat(manager.isValidConnectionSettings()).isTrue
384378
assertThat(manager.connectionSettings()?.credentials?.id).isEqualTo(DEFAULT_PROFILE_ID)
385379

386380
assertThat(manager.recentlyUsedCredentials()).hasSize(1)
@@ -398,13 +392,13 @@ class DefaultAwsConnectionManagerTest {
398392
changeRegion(AwsRegionProvider.getInstance().defaultRegion())
399393
changeCredentialProvider(adminCredentials)
400394

401-
assertThat(manager.isValidConnectionSettings()).isTrue()
395+
assertThat(manager.isValidConnectionSettings()).isTrue
402396

403397
assertThat(manager.selectedCredentialIdentifier?.id).isEqualTo(adminCredentials.id)
404398

405399
ApplicationManager.getApplication().messageBus.syncPublisher(CredentialManager.CREDENTIALS_CHANGED).providerRemoved(adminCredentials)
406400

407-
assertThat(manager.isValidConnectionSettings()).isFalse()
401+
assertThat(manager.isValidConnectionSettings()).isFalse
408402
assertThat(manager.selectedCredentialIdentifier).isNull()
409403
assertThat(manager.connectionSettings()).isNull()
410404
}
@@ -418,13 +412,13 @@ class DefaultAwsConnectionManagerTest {
418412
changeRegion(AwsRegionProvider.getInstance().defaultRegion())
419413
changeCredentialProvider(defaultCredentials)
420414

421-
assertThat(manager.isValidConnectionSettings()).isFalse()
415+
assertThat(manager.isValidConnectionSettings()).isFalse
422416

423417
markConnectionSettingsAsValid(defaultCredentials, AwsRegionProvider.getInstance().defaultRegion())
424418
manager.refreshConnectionState()
425419
manager.waitUntilConnectionStateIsStable()
426420

427-
assertThat(manager.isValidConnectionSettings()).isTrue()
421+
assertThat(manager.isValidConnectionSettings()).isTrue
428422
}
429423

430424
@Test
@@ -436,13 +430,13 @@ class DefaultAwsConnectionManagerTest {
436430
changeRegion(AwsRegionProvider.getInstance().defaultRegion())
437431
changeCredentialProvider(defaultCredentials)
438432

439-
assertThat(manager.isValidConnectionSettings()).isFalse()
433+
assertThat(manager.isValidConnectionSettings()).isFalse
440434

441435
markConnectionSettingsAsValid(defaultCredentials, AwsRegionProvider.getInstance().defaultRegion())
442436
ApplicationManager.getApplication().messageBus.syncPublisher(CredentialManager.CREDENTIALS_CHANGED).providerModified(defaultCredentials)
443437
manager.waitUntilConnectionStateIsStable()
444438

445-
assertThat(manager.isValidConnectionSettings()).isTrue()
439+
assertThat(manager.isValidConnectionSettings()).isTrue
446440
}
447441

448442
@Test
@@ -454,13 +448,13 @@ class DefaultAwsConnectionManagerTest {
454448
changeRegion(AwsRegionProvider.getInstance().defaultRegion())
455449
changeCredentialProvider(credentials)
456450

457-
assertThat(manager.isValidConnectionSettings()).isTrue()
451+
assertThat(manager.isValidConnectionSettings()).isTrue
458452

459453
markConnectionSettingsAsInvalid(credentials, AwsRegionProvider.getInstance().defaultRegion())
460454
ApplicationManager.getApplication().messageBus.syncPublisher(CredentialManager.CREDENTIALS_CHANGED).providerModified(credentials)
461455
manager.waitUntilConnectionStateIsStable()
462456

463-
assertThat(manager.isValidConnectionSettings()).isFalse()
457+
assertThat(manager.isValidConnectionSettings()).isFalse
464458
}
465459

466460
private fun markConnectionSettingsAsValid(credentialsIdentifier: CredentialIdentifier, region: AwsRegion) {
@@ -488,7 +482,6 @@ class DefaultAwsConnectionManagerTest {
488482
manager.waitUntilConnectionStateIsStable()
489483
}
490484

491-
private fun Element?.string(): String = XMLOutputter().outputString(this)
492485
companion object {
493486
const val DEFAULT_PROFILE_ID = "profile:default"
494487
}

0 commit comments

Comments
 (0)