diff options
author | Valerij Fredriksen <freva@users.noreply.github.com> | 2023-05-30 18:45:32 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-30 18:45:32 +0200 |
commit | 8714d5cdce3f9e6f7a995688deb3f6432c35356d (patch) | |
tree | 24ac430e3dde97592568292398f455a5e8c81f79 /config-provisioning/src/test/java/com/yahoo/config/provision | |
parent | c6f548b278c1b79d1dd33aae005330c78f817e7a (diff) | |
parent | e3f3e2723285a98ed330d231b60eb9ace632a87a (diff) |
Merge pull request #27233 from vespa-engine/freva/cloud-account
Add CloudName to CloudAccount
Diffstat (limited to 'config-provisioning/src/test/java/com/yahoo/config/provision')
-rw-r--r-- | config-provisioning/src/test/java/com/yahoo/config/provision/CloudAccountTest.java | 75 | ||||
-rw-r--r-- | config-provisioning/src/test/java/com/yahoo/config/provision/CloudNameTest.java | 22 |
2 files changed, 97 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..4eee52def6c --- /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 ID 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()); + } +} diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/CloudNameTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/CloudNameTest.java new file mode 100644 index 00000000000..b030233d459 --- /dev/null +++ b/config-provisioning/src/test/java/com/yahoo/config/provision/CloudNameTest.java @@ -0,0 +1,22 @@ +// 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 static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertThrows; + +/** + * @author freva + */ +class CloudNameTest { + + @Test + void returns_same_instance_for_known_clouds() { + assertSame(CloudName.from("aws"), CloudName.AWS); + assertSame(CloudName.from("gcp"), CloudName.GCP); + assertSame(CloudName.from("default"), CloudName.DEFAULT); + assertSame(CloudName.from("yahoo"), CloudName.YAHOO); + assertThrows(IllegalArgumentException.class, () -> CloudName.from("aWs")); // Must be lower case + } +} |