@@ -63,14 +63,14 @@ func TestAccContainerCluster_basic(t *testing.T) {
6363 ImportStateVerifyIgnore: []string{"deletion_protection"},
6464 },
6565 {
66- ResourceName: "google_container_cluster.primary",
66+ ResourceName: "google_container_cluster.primary",
6767 ImportStateId: fmt.Sprintf("%s/us-central1-a/%s", envvar.GetTestProjectFromEnv(), clusterName),
6868 ImportState: true,
6969 ImportStateVerify: true,
7070 ImportStateVerifyIgnore: []string{"deletion_protection"},
7171 },
7272 {
73- ResourceName: "google_container_cluster.primary",
73+ ResourceName: "google_container_cluster.primary",
7474 ImportState: true,
7575 ImportStateVerify: true,
7676 ImportStateVerifyIgnore: []string{"deletion_protection"},
@@ -79,6 +79,39 @@ func TestAccContainerCluster_basic(t *testing.T) {
7979 })
8080}
8181
82+ // This is to ensure that updates don't get trigerred with incorrect interpration of
83+ // nil serviceAccount keys as empty array.
84+ func TestAccContainerCluster_basic_noCpaUpgrade(t *testing.T) {
85+ t.Parallel()
86+
87+ clusterName := fmt.Sprintf("tf-test-cluster-%s", acctest.RandString(t, 10))
88+ networkName := acctest.BootstrapSharedTestNetwork(t, "gke-cluster")
89+ subnetworkName := acctest.BootstrapSubnet(t, "gke-cluster", networkName)
90+ acctest.VcrTest(t, resource.TestCase{
91+ PreCheck: func() { acctest.AccTestPreCheck(t) },
92+ ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
93+ CheckDestroy: testAccCheckContainerClusterDestroyProducer(t),
94+ Steps: []resource.TestStep{
95+ {
96+ Config: testAccContainerCluster_basic(clusterName, networkName, subnetworkName),
97+ Check: resource.ComposeAggregateTestCheckFunc(
98+ resource.TestCheckResourceAttrSet("google_container_cluster.primary", "services_ipv4_cidr"),
99+ resource.TestCheckResourceAttrSet("google_container_cluster.primary", "self_link"),
100+ resource.TestCheckResourceAttr("google_container_cluster.primary", "networking_mode", "VPC_NATIVE"),
101+ ),
102+ },
103+ {
104+ Config: testAccContainerCluster_basic(clusterName, networkName, subnetworkName),
105+ ConfigPlanChecks: resource.ConfigPlanChecks{
106+ PreApply: []plancheck.PlanCheck{
107+ plancheck.ExpectResourceAction("google_container_cluster.primary", plancheck.ResourceActionNoop),
108+ },
109+ },
110+ },
111+ },
112+ })
113+ }
114+
82115func TestAccContainerCluster_resourceManagerTags(t *testing.T) {
83116 t.Parallel()
84117
0 commit comments