Skip to content

Commit 7bd3dd2

Browse files
committed
fix(kubernetes): update Read tests to register GET mock handlers
Old Read stubs returned nil so tests passed nil meta or no GET handler. New Reads make real HTTP calls, so tests now register a 200 GET response to keep the ID-unchanged assertions valid after Create/Read chains.
1 parent 08e04f8 commit 7bd3dd2

15 files changed

Lines changed: 58 additions & 7 deletions

internal/resource_kubernetes_clusterrole_cov_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ func TestKubernetesClusterRoleCreate_MissingName(t *testing.T) {
5050
// TestKubernetesClusterRoleReadNoop covers the no-op Read handler.
5151
func TestKubernetesClusterRoleReadNoop(t *testing.T) {
5252
mock := NewMockServer(t)
53+
mock.On("GET", "/endpoints/1/kubernetes/apis/rbac.authorization.k8s.io/v1/clusterroles/cluster-reader",
54+
RespondString(http.StatusOK, "application/json", "{}"))
5355

5456
r := resourceKubernetesClusterRoles()
5557
d := r.TestResourceData()

internal/resource_kubernetes_clusterrolebinding_cov_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ func TestKubernetesClusterRoleBindingCreate_HTTPError(t *testing.T) {
5353
// TestKubernetesClusterRoleBindingReadNoop covers the no-op Read handler.
5454
func TestKubernetesClusterRoleBindingReadNoop(t *testing.T) {
5555
mock := NewMockServer(t)
56+
mock.On("GET", "/endpoints/1/kubernetes/apis/rbac.authorization.k8s.io/v1/clusterrolebindings/global-admin",
57+
RespondString(http.StatusOK, "application/json", "{}"))
5658

5759
r := resourceKubernetesClusterRoleBindings()
5860
d := r.TestResourceData()

internal/resource_kubernetes_configmaps_cov_test.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,14 @@ func TestKubernetesConfigMapsDelete_404IsSuccess(t *testing.T) {
6363
}
6464

6565
func TestKubernetesConfigMapsRead_NoOp(t *testing.T) {
66+
mock := NewMockServer(t)
67+
mock.On("GET", "/endpoints/1/kubernetes/api/v1/namespaces/ns/configmaps/keep",
68+
RespondString(http.StatusOK, "application/json", "{}"))
69+
6670
r := resourceKubernetesConfigMaps()
6771
d := r.TestResourceData()
6872
d.SetId("1:ns:keep")
69-
if err := rcRead(r, d, nil); err != nil {
73+
if err := rcRead(r, d, mock.Client()); err != nil {
7074
t.Fatalf("Read should be no-op, got %v", err)
7175
}
7276
if d.Id() != "1:ns:keep" {

internal/resource_kubernetes_cronjob_cov_test.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,14 @@ func TestKubernetesCronJobDelete_404IsSuccess(t *testing.T) {
6363
}
6464

6565
func TestKubernetesCronJobRead_NoOp(t *testing.T) {
66+
mock := NewMockServer(t)
67+
mock.On("GET", "/endpoints/1/kubernetes/apis/batch/v1/namespaces/ns/cronjobs/keep",
68+
RespondString(http.StatusOK, "application/json", "{}"))
69+
6670
r := resourceKubernetesCronJob()
6771
d := r.TestResourceData()
6872
d.SetId("1:ns:keep")
69-
if err := rcRead(r, d, nil); err != nil {
73+
if err := rcRead(r, d, mock.Client()); err != nil {
7074
t.Fatalf("Read should be no-op, got %v", err)
7175
}
7276
if d.Id() != "1:ns:keep" {

internal/resource_kubernetes_helm_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@ func TestKubernetesHelmCreate_HappyPath(t *testing.T) {
1212
mock := NewMockServer(t)
1313

1414
mock.On("POST", "/endpoints/3/kubernetes/helm", RespondJSON(http.StatusCreated, map[string]interface{}{}))
15+
mock.On("GET", "/endpoints/3/kubernetes/helm/my-nginx", RespondJSON(http.StatusOK, map[string]interface{}{
16+
"chartReference": map[string]interface{}{
17+
"chartPath": "nginx",
18+
"repoURL": "https://charts.bitnami.com/bitnami",
19+
},
20+
}))
1521

1622
r := resourceKubernetesHelm()
1723
d := r.TestResourceData()
@@ -108,6 +114,8 @@ func TestKubernetesHelmDelete_HappyPath(t *testing.T) {
108114
// TestKubernetesHelmRead_Noop verifies Read is a no-op.
109115
func TestKubernetesHelmRead_Noop(t *testing.T) {
110116
mock := NewMockServer(t)
117+
mock.On("GET", "/endpoints/3/kubernetes/helm/my-nginx",
118+
RespondJSON(http.StatusOK, map[string]interface{}{"chartReference": map[string]interface{}{"chartPath": "nginx", "repoURL": "https://charts.bitnami.com/bitnami"}}))
111119

112120
r := resourceKubernetesHelm()
113121
d := r.TestResourceData()

internal/resource_kubernetes_job_cov_test.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,14 @@ func TestKubernetesJobDelete_404IsSuccess(t *testing.T) {
6363
}
6464

6565
func TestKubernetesJobRead_NoOp(t *testing.T) {
66+
mock := NewMockServer(t)
67+
mock.On("GET", "/endpoints/1/kubernetes/apis/batch/v1/namespaces/ns/jobs/keep",
68+
RespondString(http.StatusOK, "application/json", "{}"))
69+
6670
r := resourceKubernetesJob()
6771
d := r.TestResourceData()
6872
d.SetId("1:ns:keep")
69-
if err := rcRead(r, d, nil); err != nil {
73+
if err := rcRead(r, d, mock.Client()); err != nil {
7074
t.Fatalf("Read should be no-op, got %v", err)
7175
}
7276
if d.Id() != "1:ns:keep" {

internal/resource_kubernetes_namespace_system_cov2_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package internal
22

33
import (
4+
"net/http"
45
"testing"
56
)
67

78
// TestKubernetesNamespaceSystemCov2_Read_NoOp verifies Read is a pure no-op
89
// (returns nil and touches no endpoint).
910
func TestKubernetesNamespaceSystemCov2_Read_NoOp(t *testing.T) {
1011
mock := NewMockServer(t)
12+
mock.On("GET", "/kubernetes/1/namespaces/kube-system",
13+
RespondJSON(http.StatusOK, map[string]interface{}{"IsSystem": false}))
1114

1215
r := resourceKubernetesNamespaceSystem()
1316
d := r.TestResourceData()

internal/resource_kubernetes_namespace_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ func TestKubernetesNamespaceCreate_HappyPath_Unlicensed(t *testing.T) {
1414
// Unlicensed: /licenses returns empty list.
1515
mock.On("GET", "/licenses", RespondJSON(http.StatusOK, []map[string]interface{}{}))
1616
mock.On("POST", "/kubernetes/1/namespaces", RespondJSON(http.StatusOK, map[string]interface{}{}))
17+
mock.On("GET", "/kubernetes/1/namespaces/my-ns", RespondJSON(http.StatusOK, map[string]interface{}{"Name": "my-ns"}))
1718

1819
r := resourceKubernetesNamespace()
1920
d := r.TestResourceData()
@@ -70,6 +71,7 @@ func TestKubernetesNamespaceCreate_HappyPath_Licensed(t *testing.T) {
7071
{"id": 1, "company": "ACME"},
7172
}))
7273
mock.On("POST", "/kubernetes/2/namespaces", RespondJSON(http.StatusOK, map[string]interface{}{}))
74+
mock.On("GET", "/kubernetes/2/namespaces/team-a", RespondJSON(http.StatusOK, map[string]interface{}{"Name": "team-a"}))
7375

7476
r := resourceKubernetesNamespace()
7577
d := r.TestResourceData()

internal/resource_kubernetes_role_cov_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ func TestKubernetesRoleCreate_MissingName(t *testing.T) {
5353
// TestKubernetesRoleReadNoop covers the no-op Read handler.
5454
func TestKubernetesRoleReadNoop(t *testing.T) {
5555
mock := NewMockServer(t)
56+
mock.On("GET", "/endpoints/1/kubernetes/apis/rbac.authorization.k8s.io/v1/namespaces/default/roles/pod-reader",
57+
RespondString(http.StatusOK, "application/json", "{}"))
5658

5759
r := resourceKubernetesRoles()
5860
d := r.TestResourceData()

internal/resource_kubernetes_rolebinding_cov_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ func TestKubernetesRoleBindingCreate_MissingName(t *testing.T) {
5353
// TestKubernetesRoleBindingReadNoop covers the no-op Read handler.
5454
func TestKubernetesRoleBindingReadNoop(t *testing.T) {
5555
mock := NewMockServer(t)
56+
mock.On("GET", "/endpoints/1/kubernetes/apis/rbac.authorization.k8s.io/v1/namespaces/default/rolebindings/read-pods",
57+
RespondString(http.StatusOK, "application/json", "{}"))
5658

5759
r := resourceKubernetesRoleBindings()
5860
d := r.TestResourceData()

0 commit comments

Comments
 (0)