diff options
author | Valerij Fredriksen <valerijf@yahooinc.com> | 2023-05-30 16:31:26 +0200 |
---|---|---|
committer | Valerij Fredriksen <valerijf@yahooinc.com> | 2023-05-30 17:01:53 +0200 |
commit | fbdc11ed2c64aa29d7c6b567bc6aad5ff86d8135 (patch) | |
tree | a244d8c98d282adba0e7f8d02511486959bfe3b6 /config-provisioning/src/test/java/com/yahoo/config | |
parent | 8e3d49401f0a8d24690cd29522eca1414f659263 (diff) |
Add CloudName to CloudAccount
Diffstat (limited to 'config-provisioning/src/test/java/com/yahoo/config')
-rw-r--r-- | config-provisioning/src/test/java/com/yahoo/config/provision/CloudAccountTest.java | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/CloudAccountTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/CloudAccountTest.java new file mode 100644 index 00000000000..f2ae9f8eab5 --- /dev/null +++ b/config-provisioning/src/test/java/com/yahoo/config/provision/CloudAccountTest.java @@ -0,0 +1,75 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.config.provision; + +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** + * @author freva + */ +class CloudAccountTest { + + @Test + void aws_accounts() { + CloudAccount oldFormat = CloudAccount.from("123456789012"); + CloudAccount newFormat = CloudAccount.from("aws:123456789012"); + assertEquals(oldFormat, newFormat); + + for (CloudAccount account : List.of(oldFormat, newFormat)) { + assertFalse(account.isUnspecified()); + assertEquals(account, CloudAccount.from(account.value())); + assertEquals("123456789012", account.account()); + assertEquals(CloudName.AWS, account.cloudName()); + assertEquals("123456789012", account.value()); + } + } + + @Test + void gcp_accounts() { + CloudAccount oldFormat = CloudAccount.from("my-project"); + CloudAccount newFormat = CloudAccount.from("gcp:my-project"); + assertEquals(oldFormat, newFormat); + + for (CloudAccount account : List.of(oldFormat, newFormat)) { + assertFalse(account.isUnspecified()); + assertEquals(account, CloudAccount.from(account.value())); + assertEquals("my-project", account.account()); + assertEquals(CloudName.GCP, account.cloudName()); + assertEquals("my-project", account.value()); + } + } + + @Test + void default_accounts() { + CloudAccount variant1 = CloudAccount.from(""); + CloudAccount variant2 = CloudAccount.from("default"); + assertEquals(variant1, variant2); + + for (CloudAccount account : List.of(variant1, variant2)) { + assertTrue(account.isUnspecified()); + assertEquals(account, CloudAccount.from(account.value())); + assertEquals("", account.account()); + assertEquals(CloudName.DEFAULT, account.cloudName()); + assertEquals("", account.value()); + } + } + + @Test + void invalid_accounts() { + assertInvalidAccount("aws:123", "Invalid cloud account 'aws:123': Account ID must match '[0-9]{12}'"); + assertInvalidAccount("gcp:123", "Invalid cloud account 'gcp:123': Project name must match '[a-z][a-z0-9-]{4,28}[a-z0-9]'"); + assertInvalidAccount("$something", "Invalid cloud account '$something': Must be on format '<cloud-name>:<account>' or 'default'"); + assertInvalidAccount("unknown:account", "Invalid cloud account 'unknown:account': Cloud name must be one of: aws, gcp"); + } + + private static void assertInvalidAccount(String account, String message) { + IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () -> CloudAccount.from(account)); + assertEquals(message, exception.getMessage()); + } +} |