aboutsummaryrefslogtreecommitdiffstats
path: root/config-provisioning/src/test/java/com/yahoo/config/provision
diff options
context:
space:
mode:
authorValerij Fredriksen <freva@users.noreply.github.com>2023-05-30 18:45:32 +0200
committerGitHub <noreply@github.com>2023-05-30 18:45:32 +0200
commit8714d5cdce3f9e6f7a995688deb3f6432c35356d (patch)
tree24ac430e3dde97592568292398f455a5e8c81f79 /config-provisioning/src/test/java/com/yahoo/config/provision
parentc6f548b278c1b79d1dd33aae005330c78f817e7a (diff)
parente3f3e2723285a98ed330d231b60eb9ace632a87a (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.java75
-rw-r--r--config-provisioning/src/test/java/com/yahoo/config/provision/CloudNameTest.java22
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
+ }
+}