diff --git a/.gitignore b/.gitignore index 6b24c5ee..5d075dab 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ *.log **/terraform-provider-kubernetes* /terraform-provider-kubernetes* +/test/acceptance/testdata/*/*.tfvars \ No newline at end of file diff --git a/test/acceptance/service_cluster_ip_test.go b/test/acceptance/service_cluster_ip_test.go new file mode 100644 index 00000000..e6b2a3e0 --- /dev/null +++ b/test/acceptance/service_cluster_ip_test.go @@ -0,0 +1,76 @@ +// +build acceptance + +package acceptance + +import ( + "encoding/json" + "testing" + + tfstatehelper "github.com/hashicorp/terraform-provider-kubernetes-alpha/test/helper/state" +) + +// This test case tests a Service but also is a demonstration of some the assert functions +// available in the test helper +func TestKubernetesManifest_Service_ClusterIP(t *testing.T) { + name := randName() + namespace := randName() + + tf := tfhelper.RequireNewWorkingDir(t) + tf.SetReattachInfo(reattachInfo) + defer func() { + tf.RequireDestroy(t) + tf.Close() + k8shelper.AssertNamespacedResourceDoesNotExist(t, "v1", "services", namespace, name) + }() + + k8shelper.CreateNamespace(t, namespace) + defer k8shelper.DeleteNamespace(t, namespace) + + tfvars := TFVARS{ + "namespace": namespace, + "name": name, + } + tfconfig := loadTerraformConfig(t, "Service_ClusterIP/service.tf", tfvars) + tf.RequireSetConfig(t, tfconfig) + tf.RequireInit(t) + tf.RequireApply(t) + + k8shelper.AssertNamespacedResourceExists(t, "v1", "services", namespace, name) + + tfstate := tfstatehelper.NewHelper(tf.RequireState(t)) + tfstate.AssertAttributeValues(t, tfstatehelper.AttributeValues{ + "kubernetes_manifest.test.object.metadata.namespace": namespace, + "kubernetes_manifest.test.object.metadata.name": name, + "kubernetes_manifest.test.object.spec.ports.0.name": "http", + "kubernetes_manifest.test.object.spec.ports.0.port": json.Number("80"), + "kubernetes_manifest.test.object.spec.ports.0.targetPort": json.Number("8080"), + "kubernetes_manifest.test.object.spec.ports.0.protocol": "TCP", + "kubernetes_manifest.test.object.spec.selector.app": "test", + "kubernetes_manifest.test.object.spec.type": "ClusterIP", + }) + + tfconfigModified := loadTerraformConfig(t, "Service_ClusterIP/service_modified.tf", tfvars) + tf.RequireSetConfig(t, tfconfigModified) + tf.RequireApply(t) + + tfstate = tfstatehelper.NewHelper(tf.RequireState(t)) + tfstate.AssertAttributeValues(t, tfstatehelper.AttributeValues{ + "kubernetes_manifest.test.object.metadata.namespace": namespace, + "kubernetes_manifest.test.object.metadata.name": name, + "kubernetes_manifest.test.object.metadata.annotations.test": "1", + "kubernetes_manifest.test.object.metadata.labels.test": "2", + "kubernetes_manifest.test.object.spec.ports.0.name": "https", + "kubernetes_manifest.test.object.spec.ports.0.port": json.Number("443"), + "kubernetes_manifest.test.object.spec.ports.0.targetPort": json.Number("8443"), + "kubernetes_manifest.test.object.spec.ports.0.protocol": "TCP", + "kubernetes_manifest.test.object.spec.selector.app": "test", + "kubernetes_manifest.test.object.spec.type": "ClusterIP", + }) + + tfstate.AssertAttributeLen(t, "kubernetes_manifest.test.object.metadata.labels", 1) + tfstate.AssertAttributeLen(t, "kubernetes_manifest.test.object.metadata.annotations", 1) + + tfstate.AssertAttributeNotEmpty(t, "kubernetes_manifest.test.object.metadata.labels.test") + + tfstate.AssertAttributeDoesNotExist(t, "kubernetes_manifest.test.spec") +} diff --git a/test/acceptance/service_external_name_test.go b/test/acceptance/service_external_name_test.go new file mode 100644 index 00000000..f34c3d51 --- /dev/null +++ b/test/acceptance/service_external_name_test.go @@ -0,0 +1,72 @@ +// +build acceptance + +package acceptance + +import ( + "testing" + + tfstatehelper "github.com/hashicorp/terraform-provider-kubernetes-alpha/test/helper/state" +) + +// This test case tests a Service but also is a demonstration of some the assert functions +// available in the test helper +func TestKubernetesManifest_Service_ExternalName(t *testing.T) { + name := randName() + namespace := randName() + + tf := tfhelper.RequireNewWorkingDir(t) + tf.SetReattachInfo(reattachInfo) + defer func() { + tf.RequireDestroy(t) + tf.Close() + k8shelper.AssertNamespacedResourceDoesNotExist(t, "v1", "services", namespace, name) + }() + + k8shelper.CreateNamespace(t, namespace) + defer k8shelper.DeleteNamespace(t, namespace) + + tfvars := TFVARS{ + "namespace": namespace, + "name": name, + } + tfconfig := loadTerraformConfig(t, "Service_ExternalName/service.tf", tfvars) + tf.RequireSetConfig(t, tfconfig) + tf.RequireInit(t) + tf.RequireApply(t) + + k8shelper.AssertNamespacedResourceExists(t, "v1", "services", namespace, name) + + tfstate := tfstatehelper.NewHelper(tf.RequireState(t)) + tfstate.AssertAttributeValues(t, tfstatehelper.AttributeValues{ + "kubernetes_manifest.test.object.metadata.namespace": namespace, + "kubernetes_manifest.test.object.metadata.name": name, + "kubernetes_manifest.test.object.spec.selector.app": "test", + "kubernetes_manifest.test.object.spec.type": "ExternalName", + "kubernetes_manifest.test.object.spec.externalName": "terraform.kubernetes.test.com", + }) + + tfstate.AssertAttributeDoesNotExist(t, "kubernetes_manifest.test.object.spec.ports.0") + + tfconfigModified := loadTerraformConfig(t, "Service_ExternalName/service_modified.tf", tfvars) + tf.RequireSetConfig(t, tfconfigModified) + tf.RequireApply(t) + + tfstate = tfstatehelper.NewHelper(tf.RequireState(t)) + tfstate.AssertAttributeValues(t, tfstatehelper.AttributeValues{ + "kubernetes_manifest.test.object.metadata.namespace": namespace, + "kubernetes_manifest.test.object.metadata.name": name, + "kubernetes_manifest.test.object.metadata.annotations.test": "1", + "kubernetes_manifest.test.object.metadata.labels.test": "2", + "kubernetes_manifest.test.object.spec.selector.app": "test", + "kubernetes_manifest.test.object.spec.type": "ExternalName", + "kubernetes_manifest.test.object.spec.externalName": "kubernetes-alpha.terraform.test.com", + }) + + tfstate.AssertAttributeLen(t, "kubernetes_manifest.test.object.metadata.labels", 1) + tfstate.AssertAttributeLen(t, "kubernetes_manifest.test.object.metadata.annotations", 1) + + tfstate.AssertAttributeNotEmpty(t, "kubernetes_manifest.test.object.metadata.labels.test") + + tfstate.AssertAttributeDoesNotExist(t, "kubernetes_manifest.test.spec") + +} diff --git a/test/acceptance/service_load_balancer_test.go b/test/acceptance/service_load_balancer_test.go new file mode 100644 index 00000000..e51d0c49 --- /dev/null +++ b/test/acceptance/service_load_balancer_test.go @@ -0,0 +1,76 @@ +// +build acceptance + +package acceptance + +import ( + "encoding/json" + "testing" + + tfstatehelper "github.com/hashicorp/terraform-provider-kubernetes-alpha/test/helper/state" +) + +// This test case tests a Service but also is a demonstration of some the assert functions +// available in the test helper +func TestKubernetesManifest_Service_LoadBalancer(t *testing.T) { + name := randName() + namespace := randName() + + tf := tfhelper.RequireNewWorkingDir(t) + tf.SetReattachInfo(reattachInfo) + defer func() { + tf.RequireDestroy(t) + tf.Close() + k8shelper.AssertNamespacedResourceDoesNotExist(t, "v1", "services", namespace, name) + }() + + k8shelper.CreateNamespace(t, namespace) + defer k8shelper.DeleteNamespace(t, namespace) + + tfvars := TFVARS{ + "namespace": namespace, + "name": name, + } + tfconfig := loadTerraformConfig(t, "Service_LoadBalancer/service.tf", tfvars) + tf.RequireSetConfig(t, tfconfig) + tf.RequireInit(t) + tf.RequireApply(t) + + k8shelper.AssertNamespacedResourceExists(t, "v1", "services", namespace, name) + + tfstate := tfstatehelper.NewHelper(tf.RequireState(t)) + tfstate.AssertAttributeValues(t, tfstatehelper.AttributeValues{ + "kubernetes_manifest.test.object.metadata.namespace": namespace, + "kubernetes_manifest.test.object.metadata.name": name, + "kubernetes_manifest.test.object.spec.ports.0.name": "http", + "kubernetes_manifest.test.object.spec.ports.0.port": json.Number("80"), + "kubernetes_manifest.test.object.spec.ports.0.targetPort": json.Number("8080"), + "kubernetes_manifest.test.object.spec.ports.0.protocol": "TCP", + "kubernetes_manifest.test.object.spec.selector.app": "test", + "kubernetes_manifest.test.object.spec.type": "LoadBalancer", + }) + + tfconfigModified := loadTerraformConfig(t, "Service_LoadBalancer/service_modified.tf", tfvars) + tf.RequireSetConfig(t, tfconfigModified) + tf.RequireApply(t) + + tfstate = tfstatehelper.NewHelper(tf.RequireState(t)) + tfstate.AssertAttributeValues(t, tfstatehelper.AttributeValues{ + "kubernetes_manifest.test.object.metadata.namespace": namespace, + "kubernetes_manifest.test.object.metadata.name": name, + "kubernetes_manifest.test.object.metadata.annotations.test": "1", + "kubernetes_manifest.test.object.metadata.labels.test": "2", + "kubernetes_manifest.test.object.spec.ports.0.name": "https", + "kubernetes_manifest.test.object.spec.ports.0.port": json.Number("443"), + "kubernetes_manifest.test.object.spec.ports.0.targetPort": json.Number("8443"), + "kubernetes_manifest.test.object.spec.ports.0.protocol": "TCP", + "kubernetes_manifest.test.object.spec.selector.app": "test", + "kubernetes_manifest.test.object.spec.type": "LoadBalancer", + }) + + tfstate.AssertAttributeLen(t, "kubernetes_manifest.test.object.metadata.labels", 1) + tfstate.AssertAttributeLen(t, "kubernetes_manifest.test.object.metadata.annotations", 1) + + tfstate.AssertAttributeNotEmpty(t, "kubernetes_manifest.test.object.metadata.labels.test") + + tfstate.AssertAttributeDoesNotExist(t, "kubernetes_manifest.test.spec") +} diff --git a/test/acceptance/service_node_port_test.go b/test/acceptance/service_node_port_test.go new file mode 100644 index 00000000..c49e2bce --- /dev/null +++ b/test/acceptance/service_node_port_test.go @@ -0,0 +1,79 @@ +// +build acceptance + +package acceptance + +import ( + "encoding/json" + "testing" + + tfstatehelper "github.com/hashicorp/terraform-provider-kubernetes-alpha/test/helper/state" +) + +// This test case tests a Service but also is a demonstration of some the assert functions +// available in the test helper +func TestKubernetesManifest_Service_NodePort(t *testing.T) { + name := randName() + namespace := randName() + + tf := tfhelper.RequireNewWorkingDir(t) + tf.SetReattachInfo(reattachInfo) + defer func() { + tf.RequireDestroy(t) + tf.Close() + k8shelper.AssertNamespacedResourceDoesNotExist(t, "v1", "services", namespace, name) + }() + + k8shelper.CreateNamespace(t, namespace) + defer k8shelper.DeleteNamespace(t, namespace) + + tfvars := TFVARS{ + "namespace": namespace, + "name": name, + } + tfconfig := loadTerraformConfig(t, "Service_NodePort/service.tf", tfvars) + tf.RequireSetConfig(t, tfconfig) + tf.RequireInit(t) + tf.RequireApply(t) + + k8shelper.AssertNamespacedResourceExists(t, "v1", "services", namespace, name) + + tfstate := tfstatehelper.NewHelper(tf.RequireState(t)) + tfstate.AssertAttributeValues(t, tfstatehelper.AttributeValues{ + "kubernetes_manifest.test.object.metadata.namespace": namespace, + "kubernetes_manifest.test.object.metadata.name": name, + "kubernetes_manifest.test.object.spec.ports.0.name": "http", + "kubernetes_manifest.test.object.spec.ports.0.port": json.Number("80"), + "kubernetes_manifest.test.object.spec.ports.0.targetPort": json.Number("8080"), + "kubernetes_manifest.test.object.spec.ports.0.protocol": "TCP", + "kubernetes_manifest.test.object.spec.selector.app": "test", + "kubernetes_manifest.test.object.spec.type": "NodePort", + }) + + tfstate.AssertAttributeNotEmpty(t, "kubernetes_manifest.test.object.spec.ports.0.nodePort") + + tfconfigModified := loadTerraformConfig(t, "Service_NodePort/service_modified.tf", tfvars) + tf.RequireSetConfig(t, tfconfigModified) + tf.RequireApply(t) + + tfstate = tfstatehelper.NewHelper(tf.RequireState(t)) + tfstate.AssertAttributeValues(t, tfstatehelper.AttributeValues{ + "kubernetes_manifest.test.object.metadata.namespace": namespace, + "kubernetes_manifest.test.object.metadata.name": name, + "kubernetes_manifest.test.object.metadata.annotations.test": "1", + "kubernetes_manifest.test.object.metadata.labels.test": "2", + "kubernetes_manifest.test.object.spec.ports.0.name": "https", + "kubernetes_manifest.test.object.spec.ports.0.port": json.Number("443"), + "kubernetes_manifest.test.object.spec.ports.0.targetPort": json.Number("8443"), + "kubernetes_manifest.test.object.spec.ports.0.nodePort": json.Number("32767"), + "kubernetes_manifest.test.object.spec.ports.0.protocol": "TCP", + "kubernetes_manifest.test.object.spec.selector.app": "test", + "kubernetes_manifest.test.object.spec.type": "NodePort", + }) + + tfstate.AssertAttributeLen(t, "kubernetes_manifest.test.object.metadata.labels", 1) + tfstate.AssertAttributeLen(t, "kubernetes_manifest.test.object.metadata.annotations", 1) + + tfstate.AssertAttributeNotEmpty(t, "kubernetes_manifest.test.object.metadata.labels.test") + + tfstate.AssertAttributeDoesNotExist(t, "kubernetes_manifest.test.spec") +} diff --git a/test/acceptance/service_test.go b/test/acceptance/service_test.go new file mode 100644 index 00000000..11f8a9f5 --- /dev/null +++ b/test/acceptance/service_test.go @@ -0,0 +1,76 @@ +// +build acceptance + +package acceptance + +import ( + "encoding/json" + "testing" + + tfstatehelper "github.com/hashicorp/terraform-provider-kubernetes-alpha/test/helper/state" +) + +// This test case tests a Service but also is a demonstration of some the assert functions +// available in the test helper +func TestKubernetesManifest_Service(t *testing.T) { + name := randName() + namespace := randName() + + tf := tfhelper.RequireNewWorkingDir(t) + tf.SetReattachInfo(reattachInfo) + defer func() { + tf.RequireDestroy(t) + tf.Close() + k8shelper.AssertNamespacedResourceDoesNotExist(t, "v1", "services", namespace, name) + }() + + k8shelper.CreateNamespace(t, namespace) + defer k8shelper.DeleteNamespace(t, namespace) + + tfvars := TFVARS{ + "namespace": namespace, + "name": name, + } + tfconfig := loadTerraformConfig(t, "Service/service.tf", tfvars) + tf.RequireSetConfig(t, tfconfig) + tf.RequireInit(t) + tf.RequireApply(t) + + k8shelper.AssertNamespacedResourceExists(t, "v1", "services", namespace, name) + + tfstate := tfstatehelper.NewHelper(tf.RequireState(t)) + tfstate.AssertAttributeValues(t, tfstatehelper.AttributeValues{ + "kubernetes_manifest.test.object.metadata.namespace": namespace, + "kubernetes_manifest.test.object.metadata.name": name, + "kubernetes_manifest.test.object.spec.ports.0.name": "http", + "kubernetes_manifest.test.object.spec.ports.0.port": json.Number("80"), + "kubernetes_manifest.test.object.spec.ports.0.targetPort": json.Number("8080"), + "kubernetes_manifest.test.object.spec.ports.0.protocol": "TCP", + "kubernetes_manifest.test.object.spec.selector.app": "test", + "kubernetes_manifest.test.object.spec.type": "ClusterIP", + }) + + tfconfigModified := loadTerraformConfig(t, "Service/service_modified.tf", tfvars) + tf.RequireSetConfig(t, tfconfigModified) + tf.RequireApply(t) + + tfstate = tfstatehelper.NewHelper(tf.RequireState(t)) + tfstate.AssertAttributeValues(t, tfstatehelper.AttributeValues{ + "kubernetes_manifest.test.object.metadata.namespace": namespace, + "kubernetes_manifest.test.object.metadata.name": name, + "kubernetes_manifest.test.object.metadata.annotations.test": "1", + "kubernetes_manifest.test.object.metadata.labels.test": "2", + "kubernetes_manifest.test.object.spec.ports.0.name": "https", + "kubernetes_manifest.test.object.spec.ports.0.port": json.Number("443"), + "kubernetes_manifest.test.object.spec.ports.0.targetPort": json.Number("8443"), + "kubernetes_manifest.test.object.spec.ports.0.protocol": "TCP", + "kubernetes_manifest.test.object.spec.selector.app": "test", + "kubernetes_manifest.test.object.spec.type": "ClusterIP", + }) + + tfstate.AssertAttributeLen(t, "kubernetes_manifest.test.object.metadata.labels", 1) + tfstate.AssertAttributeLen(t, "kubernetes_manifest.test.object.metadata.annotations", 1) + + tfstate.AssertAttributeNotEmpty(t, "kubernetes_manifest.test.object.metadata.labels.test") + + tfstate.AssertAttributeDoesNotExist(t, "kubernetes_manifest.test.spec") +} diff --git a/test/acceptance/testdata/Service/service.tf b/test/acceptance/testdata/Service/service.tf new file mode 100644 index 00000000..71f513e8 --- /dev/null +++ b/test/acceptance/testdata/Service/service.tf @@ -0,0 +1,27 @@ +provider "kubernetes-alpha" { +} + +resource "kubernetes_manifest" "test" { + provider = kubernetes-alpha + + manifest = { + apiVersion = "v1" + kind = "Service" + metadata = { + name = var.name + namespace = var.namespace + } + spec = { + ports = [{ + name = "http", + port = 80, + targetPort = 8080, + # Protcol is required for serverside apply per https://github.com/kubernetes-sigs/structured-merge-diff/issues/130 + protocol = "TCP" + }] + selector = { + app = "test" + } + } + } +} diff --git a/test/acceptance/testdata/Service/service_modified.tf b/test/acceptance/testdata/Service/service_modified.tf new file mode 100644 index 00000000..1d264ff4 --- /dev/null +++ b/test/acceptance/testdata/Service/service_modified.tf @@ -0,0 +1,33 @@ +provider "kubernetes-alpha" { +} + +resource "kubernetes_manifest" "test" { + provider = kubernetes-alpha + + manifest = { + apiVersion = "v1" + kind = "Service" + metadata = { + name = var.name + namespace = var.namespace + annotations = { + test = "1" + } + labels = { + test = "2" + } + } + spec = { + ports = [{ + name = "https", + port = 443, + targetPort = 8443, + # Protcol is required for serverside apply per https://github.com/kubernetes-sigs/structured-merge-diff/issues/130 + protocol = "TCP" + }] + selector = { + app = "test" + } + } + } +} diff --git a/test/acceptance/testdata/Service/variables.tf b/test/acceptance/testdata/Service/variables.tf new file mode 100644 index 00000000..de8a3e19 --- /dev/null +++ b/test/acceptance/testdata/Service/variables.tf @@ -0,0 +1,16 @@ +# These variable declarations are only used for interactive testing. +# The test code will template in different variable declarations with a default value when running the test. +# +# To set values for interactive runs, create a var-file and set values in it. +# If the name of the var-file ends in '.auto.tfvars' (e.g. myvalues.auto.tfvars) +# it will be automatically picked up and used by Terraform. +# +# DO NOT check in any files named *.auto.tfvars when making changes to tests. + +variable "name" { + type = string +} + +variable "namespace" { + type = string +} diff --git a/test/acceptance/testdata/Service_ClusterIP/service.tf b/test/acceptance/testdata/Service_ClusterIP/service.tf new file mode 100644 index 00000000..9482756a --- /dev/null +++ b/test/acceptance/testdata/Service_ClusterIP/service.tf @@ -0,0 +1,28 @@ +provider "kubernetes-alpha" { +} + +resource "kubernetes_manifest" "test" { + provider = kubernetes-alpha + + manifest = { + apiVersion = "v1" + kind = "Service" + metadata = { + name = var.name + namespace = var.namespace + } + spec = { + ports = [{ + name = "http", + port = 80, + targetPort = 8080, + # Protcol is required for serverside apply per https://github.com/kubernetes-sigs/structured-merge-diff/issues/130 + protocol = "TCP" + }] + selector = { + app = "test" + } + type = "ClusterIP" + } + } +} diff --git a/test/acceptance/testdata/Service_ClusterIP/service_modified.tf b/test/acceptance/testdata/Service_ClusterIP/service_modified.tf new file mode 100644 index 00000000..c3a804be --- /dev/null +++ b/test/acceptance/testdata/Service_ClusterIP/service_modified.tf @@ -0,0 +1,34 @@ +provider "kubernetes-alpha" { +} + +resource "kubernetes_manifest" "test" { + provider = kubernetes-alpha + + manifest = { + apiVersion = "v1" + kind = "Service" + metadata = { + name = var.name + namespace = var.namespace + annotations = { + test = "1" + } + labels = { + test = "2" + } + } + spec = { + ports = [{ + name = "https", + port = 443, + targetPort = 8443, + # Protcol is required for serverside apply per https://github.com/kubernetes-sigs/structured-merge-diff/issues/130 + protocol = "TCP" + }] + selector = { + app = "test" + } + type = "ClusterIP" + } + } +} diff --git a/test/acceptance/testdata/Service_ClusterIP/variables.tf b/test/acceptance/testdata/Service_ClusterIP/variables.tf new file mode 100644 index 00000000..de8a3e19 --- /dev/null +++ b/test/acceptance/testdata/Service_ClusterIP/variables.tf @@ -0,0 +1,16 @@ +# These variable declarations are only used for interactive testing. +# The test code will template in different variable declarations with a default value when running the test. +# +# To set values for interactive runs, create a var-file and set values in it. +# If the name of the var-file ends in '.auto.tfvars' (e.g. myvalues.auto.tfvars) +# it will be automatically picked up and used by Terraform. +# +# DO NOT check in any files named *.auto.tfvars when making changes to tests. + +variable "name" { + type = string +} + +variable "namespace" { + type = string +} diff --git a/test/acceptance/testdata/Service_ExternalName/service.tf b/test/acceptance/testdata/Service_ExternalName/service.tf new file mode 100644 index 00000000..139196b2 --- /dev/null +++ b/test/acceptance/testdata/Service_ExternalName/service.tf @@ -0,0 +1,22 @@ +provider "kubernetes-alpha" { +} + +resource "kubernetes_manifest" "test" { + provider = kubernetes-alpha + + manifest = { + apiVersion = "v1" + kind = "Service" + metadata = { + name = var.name + namespace = var.namespace + } + spec = { + selector = { + app = "test" + } + type = "ExternalName" + externalName = "terraform.kubernetes.test.com" + } + } +} diff --git a/test/acceptance/testdata/Service_ExternalName/service_modified.tf b/test/acceptance/testdata/Service_ExternalName/service_modified.tf new file mode 100644 index 00000000..2750a411 --- /dev/null +++ b/test/acceptance/testdata/Service_ExternalName/service_modified.tf @@ -0,0 +1,28 @@ +provider "kubernetes-alpha" { +} + +resource "kubernetes_manifest" "test" { + provider = kubernetes-alpha + + manifest = { + apiVersion = "v1" + kind = "Service" + metadata = { + name = var.name + namespace = var.namespace + annotations = { + test = "1" + } + labels = { + test = "2" + } + } + spec = { + selector = { + app = "test" + } + type = "ExternalName" + externalName = "kubernetes-alpha.terraform.test.com" + } + } +} diff --git a/test/acceptance/testdata/Service_ExternalName/variables.tf b/test/acceptance/testdata/Service_ExternalName/variables.tf new file mode 100644 index 00000000..de8a3e19 --- /dev/null +++ b/test/acceptance/testdata/Service_ExternalName/variables.tf @@ -0,0 +1,16 @@ +# These variable declarations are only used for interactive testing. +# The test code will template in different variable declarations with a default value when running the test. +# +# To set values for interactive runs, create a var-file and set values in it. +# If the name of the var-file ends in '.auto.tfvars' (e.g. myvalues.auto.tfvars) +# it will be automatically picked up and used by Terraform. +# +# DO NOT check in any files named *.auto.tfvars when making changes to tests. + +variable "name" { + type = string +} + +variable "namespace" { + type = string +} diff --git a/test/acceptance/testdata/Service_LoadBalancer/service.tf b/test/acceptance/testdata/Service_LoadBalancer/service.tf new file mode 100644 index 00000000..9a4e5019 --- /dev/null +++ b/test/acceptance/testdata/Service_LoadBalancer/service.tf @@ -0,0 +1,29 @@ +provider "kubernetes-alpha" { +} + +resource "kubernetes_manifest" "test" { + provider = kubernetes-alpha + + manifest = { + apiVersion = "v1" + kind = "Service" + metadata = { + name = var.name + namespace = var.namespace + } + + spec = { + ports = [{ + name = "http", + port = 80, + targetPort = 8080, + # Protcol is required for serverside apply per https://github.com/kubernetes-sigs/structured-merge-diff/issues/130 + protocol = "TCP" + }] + selector = { + app = "test" + } + type = "LoadBalancer" + } + } +} diff --git a/test/acceptance/testdata/Service_LoadBalancer/service_modified.tf b/test/acceptance/testdata/Service_LoadBalancer/service_modified.tf new file mode 100644 index 00000000..c79ad917 --- /dev/null +++ b/test/acceptance/testdata/Service_LoadBalancer/service_modified.tf @@ -0,0 +1,34 @@ +provider "kubernetes-alpha" { +} + +resource "kubernetes_manifest" "test" { + provider = kubernetes-alpha + + manifest = { + apiVersion = "v1" + kind = "Service" + metadata = { + name = var.name + namespace = var.namespace + annotations = { + test = "1" + } + labels = { + test = "2" + } + } + spec = { + ports = [{ + name = "https", + port = 443, + targetPort = 8443, + # Protcol is required for serverside apply per https://github.com/kubernetes-sigs/structured-merge-diff/issues/130 + protocol = "TCP" + }] + selector = { + app = "test" + } + type = "LoadBalancer" + } + } +} diff --git a/test/acceptance/testdata/Service_LoadBalancer/variables.tf b/test/acceptance/testdata/Service_LoadBalancer/variables.tf new file mode 100644 index 00000000..de8a3e19 --- /dev/null +++ b/test/acceptance/testdata/Service_LoadBalancer/variables.tf @@ -0,0 +1,16 @@ +# These variable declarations are only used for interactive testing. +# The test code will template in different variable declarations with a default value when running the test. +# +# To set values for interactive runs, create a var-file and set values in it. +# If the name of the var-file ends in '.auto.tfvars' (e.g. myvalues.auto.tfvars) +# it will be automatically picked up and used by Terraform. +# +# DO NOT check in any files named *.auto.tfvars when making changes to tests. + +variable "name" { + type = string +} + +variable "namespace" { + type = string +} diff --git a/test/acceptance/testdata/Service_NodePort/service.tf b/test/acceptance/testdata/Service_NodePort/service.tf new file mode 100644 index 00000000..eb18c512 --- /dev/null +++ b/test/acceptance/testdata/Service_NodePort/service.tf @@ -0,0 +1,28 @@ +provider "kubernetes-alpha" { +} + +resource "kubernetes_manifest" "test" { + provider = kubernetes-alpha + + manifest = { + apiVersion = "v1" + kind = "Service" + metadata = { + name = var.name + namespace = var.namespace + } + spec = { + ports = [{ + name = "http", + port = 80, + targetPort = 8080, + # Protcol is required for serverside apply per https://github.com/kubernetes-sigs/structured-merge-diff/issues/130 + protocol = "TCP" + }] + selector = { + app = "test" + } + type = "NodePort" + } + } +} diff --git a/test/acceptance/testdata/Service_NodePort/service_modified.tf b/test/acceptance/testdata/Service_NodePort/service_modified.tf new file mode 100644 index 00000000..23e8744a --- /dev/null +++ b/test/acceptance/testdata/Service_NodePort/service_modified.tf @@ -0,0 +1,35 @@ +provider "kubernetes-alpha" { +} + +resource "kubernetes_manifest" "test" { + provider = kubernetes-alpha + + manifest = { + apiVersion = "v1" + kind = "Service" + metadata = { + name = var.name + namespace = var.namespace + annotations = { + test = "1" + } + labels = { + test = "2" + } + } + spec = { + ports = [{ + name = "https", + port = 443, + targetPort = 8443, + # Protcol is required for serverside apply per https://github.com/kubernetes-sigs/structured-merge-diff/issues/130 + protocol = "TCP" + nodePort = 32767 + }] + selector = { + app = "test" + } + type = "NodePort" + } + } +} diff --git a/test/acceptance/testdata/Service_NodePort/variables.tf b/test/acceptance/testdata/Service_NodePort/variables.tf new file mode 100644 index 00000000..de8a3e19 --- /dev/null +++ b/test/acceptance/testdata/Service_NodePort/variables.tf @@ -0,0 +1,16 @@ +# These variable declarations are only used for interactive testing. +# The test code will template in different variable declarations with a default value when running the test. +# +# To set values for interactive runs, create a var-file and set values in it. +# If the name of the var-file ends in '.auto.tfvars' (e.g. myvalues.auto.tfvars) +# it will be automatically picked up and used by Terraform. +# +# DO NOT check in any files named *.auto.tfvars when making changes to tests. + +variable "name" { + type = string +} + +variable "namespace" { + type = string +}