@@ -321,6 +321,90 @@ func TestAccKubernetesClusterRoleBindingV1_UpdatePatchOperationsOrderWithRemoval
321321 })
322322}
323323
324+ func TestAccKubernetesClusterRoleBindingV1_namespaceHandling (t * testing.T ) {
325+ var conf rbacv1.ClusterRoleBinding
326+ name := fmt .Sprintf ("tf-acc-test:%s" , acctest .RandStringFromCharSet (10 , acctest .CharSetAlphaNum ))
327+ resourceName := "kubernetes_cluster_role_binding_v1.test"
328+
329+ resource .ParallelTest (t , resource.TestCase {
330+ PreCheck : func () { testAccPreCheck (t ) },
331+ IDRefreshName : resourceName ,
332+ IDRefreshIgnore : []string {"metadata.0.resource_version" },
333+ ProviderFactories : testAccProviderFactories ,
334+ CheckDestroy : testAccCheckKubernetesClusterRoleBindingV1Destroy ,
335+ Steps : []resource.TestStep {
336+ {
337+ Config : testAccKubernetesClusterRoleBindingV1Config_namespaceHandling (name ),
338+ Check : resource .ComposeAggregateTestCheckFunc (
339+ testAccCheckKubernetesClusterRoleBindingV1Exists (resourceName , & conf ),
340+ resource .TestCheckResourceAttr (resourceName , "metadata.0.name" , name ),
341+ resource .TestCheckResourceAttrSet (resourceName , "metadata.0.generation" ),
342+ resource .TestCheckResourceAttrSet (resourceName , "metadata.0.resource_version" ),
343+ resource .TestCheckResourceAttrSet (resourceName , "metadata.0.uid" ),
344+ resource .TestCheckResourceAttr (resourceName , "role_ref.#" , "1" ),
345+ resource .TestCheckResourceAttr (resourceName , "role_ref.0.api_group" , "rbac.authorization.k8s.io" ),
346+ resource .TestCheckResourceAttr (resourceName , "role_ref.0.kind" , "ClusterRole" ),
347+ resource .TestCheckResourceAttr (resourceName , "role_ref.0.name" , "cluster-admin" ),
348+ resource .TestCheckResourceAttr (resourceName , "subject.#" , "3" ),
349+ // Checking Group subject
350+ resource .TestCheckResourceAttr (resourceName , "subject.0.api_group" , "rbac.authorization.k8s.io" ),
351+ resource .TestCheckResourceAttr (resourceName , "subject.0.kind" , "Group" ),
352+ resource .TestCheckResourceAttr (resourceName , "subject.0.name" , "testgroup" ),
353+ resource .TestCheckResourceAttr (resourceName , "subject.0.namespace" , "" ),
354+ // Checking User subject
355+ resource .TestCheckResourceAttr (resourceName , "subject.1.api_group" , "rbac.authorization.k8s.io" ),
356+ resource .TestCheckResourceAttr (resourceName , "subject.1.kind" , "User" ),
357+ resource .TestCheckResourceAttr (resourceName , "subject.1.name" , "testuser" ),
358+ resource .TestCheckResourceAttr (resourceName , "subject.1.namespace" , "" ),
359+ // Checking ServiceAccount subject
360+ resource .TestCheckResourceAttr (resourceName , "subject.2.api_group" , "" ),
361+ resource .TestCheckResourceAttr (resourceName , "subject.2.kind" , "ServiceAccount" ),
362+ resource .TestCheckResourceAttr (resourceName , "subject.2.name" , "default" ),
363+ resource .TestCheckResourceAttr (resourceName , "subject.2.namespace" , "default" ),
364+ ),
365+ },
366+ },
367+ })
368+ }
369+
370+ func testAccKubernetesClusterRoleBindingV1Config_namespaceHandling (name string ) string {
371+ return fmt .Sprintf (`resource "kubernetes_cluster_role_binding_v1" "test" {
372+ metadata {
373+ name = "%s"
374+ }
375+
376+ role_ref {
377+ api_group = "rbac.authorization.k8s.io"
378+ kind = "ClusterRole"
379+ name = "cluster-admin"
380+ }
381+
382+ # Group subject with namespace explicitly set to ""
383+ subject {
384+ kind = "Group"
385+ name = "testgroup"
386+ api_group = "rbac.authorization.k8s.io"
387+ namespace = ""
388+ }
389+
390+ # User subject with namespace explicitly set to ""
391+ subject {
392+ kind = "User"
393+ name = "testuser"
394+ api_group = "rbac.authorization.k8s.io"
395+ namespace = ""
396+ }
397+
398+ # ServiceAccount subject with no namespace specified
399+ subject {
400+ kind = "ServiceAccount"
401+ name = "default"
402+ api_group = ""
403+ }
404+ }
405+ ` , name )
406+ }
407+
324408func testAccCheckKubernetesClusterRoleBindingV1Destroy (s * terraform.State ) error {
325409 conn , err := testAccProvider .Meta ().(KubeClientsets ).MainClientset ()
326410
0 commit comments