diff --git a/internal/checks/kube/rbac_test.go b/internal/checks/kube/rbac_test.go index 31b9fbd..ccf3059 100644 --- a/internal/checks/kube/rbac_test.go +++ b/internal/checks/kube/rbac_test.go @@ -2,9 +2,7 @@ package kube import ( "context" - "encoding/json" "net/http" - "net/http/httptest" "testing" authorizationv1 "k8s.io/api/authorization/v1" @@ -28,6 +26,7 @@ func Test_CheckRBAC(t *testing.T) { Name: "all allowed", Response: &selfSubjectAccessReviewAllowed, F: func(t *testing.T, results []*api.CheckResult) { + assert.False(t, "results should not be empty", len(results) == 0) for _, result := range results { assert.True(t, result.Name+" should not error", result.Details["error"] == nil) assert.True(t, result.Name+" should pass", result.State == api.StatePassed) @@ -38,6 +37,7 @@ func Test_CheckRBAC(t *testing.T) { Name: "all denied", Response: &selfSubjectAccessReviewDenied, F: func(t *testing.T, results []*api.CheckResult) { + assert.False(t, "results should not be empty", len(results) == 0) for _, result := range results { assert.True(t, result.Name+" should have an error", result.Details["error"] != nil) assert.True(t, result.Name+" should fail", result.State == api.StateFailed) @@ -51,12 +51,7 @@ func Test_CheckRBAC(t *testing.T) { t.Run(test.Name, func(t *testing.T) { t.Parallel() - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(http.StatusOK) - err := json.NewEncoder(w).Encode(test.Response) - assert.Success(t, "failed to encode response", err) - })) + server := newTestHTTPServer(t, http.StatusOK, test.Response) defer server.Close() client, err := kubernetes.NewForConfig(&rest.Config{Host: server.URL}) @@ -72,11 +67,7 @@ func Test_CheckRBAC(t *testing.T) { func Test_CheckRBAC_ClientError(t *testing.T) { t.Parallel() - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(http.StatusInternalServerError) - })) - defer server.Close() + server := newTestHTTPServer(t, http.StatusInternalServerError, nil) client, err := kubernetes.NewForConfig(&rest.Config{Host: server.URL}) assert.Success(t, "failed to create client", err) diff --git a/internal/checks/kube/resources.go b/internal/checks/kube/resources.go index f84e1e4..079e790 100644 --- a/internal/checks/kube/resources.go +++ b/internal/checks/kube/resources.go @@ -1 +1,12 @@ package kube + +import ( + "context" + + "github.com/cdr/coder-doctor/internal/api" +) + +func (k *KubernetesChecker) CheckResources(ctx context.Context) []*api.CheckResult { + results := make([]*api.CheckResult, 0) + return results +} diff --git a/internal/checks/kube/util_test.go b/internal/checks/kube/util_test.go new file mode 100644 index 0000000..feacc9d --- /dev/null +++ b/internal/checks/kube/util_test.go @@ -0,0 +1,22 @@ +package kube + +import ( + "encoding/json" + "net/http" + "net/http/httptest" + "testing" + + "cdr.dev/slog/sloggers/slogtest/assert" +) + +// newTestHTTPServer creates a HTTP server that just returns the given status code and response. +func newTestHTTPServer(t *testing.T, statusCode int, resp interface{}) *httptest.Server { + t.Helper() + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(statusCode) + err := json.NewEncoder(w).Encode(resp) + assert.Success(t, "failed to encode response", err) + })) + return srv +} diff --git a/internal/checks/kube/version_test.go b/internal/checks/kube/version_test.go index ec1f4bf..d2a4356 100644 --- a/internal/checks/kube/version_test.go +++ b/internal/checks/kube/version_test.go @@ -2,9 +2,7 @@ package kube import ( "context" - "encoding/json" "net/http" - "net/http/httptest" "testing" "github.com/Masterminds/semver/v3" @@ -102,12 +100,7 @@ func TestVersions(t *testing.T) { t.Run(test.Name, func(t *testing.T) { t.Parallel() - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(http.StatusOK) - err := json.NewEncoder(w).Encode(test.KubernetesVersion) - assert.Success(t, "failed to encode response", err) - })) + server := newTestHTTPServer(t, http.StatusOK, test.KubernetesVersion) defer server.Close() client, err := kubernetes.NewForConfig(&rest.Config{ @@ -125,10 +118,7 @@ func TestVersions(t *testing.T) { func TestUnknownRoute(t *testing.T) { t.Parallel() - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(http.StatusNotFound) - })) + server := newTestHTTPServer(t, http.StatusNotFound, nil) defer server.Close() client, err := kubernetes.NewForConfig(&rest.Config{ @@ -145,14 +135,8 @@ func TestUnknownRoute(t *testing.T) { func TestCorruptResponse(t *testing.T) { t.Parallel() - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(http.StatusOK) - err := json.NewEncoder(w).Encode(map[string]interface{}{ - "gitVersion": 10, - }) - assert.Success(t, "failed to encode response", err) - })) + garbage := map[string]interface{}{"gitVersion": 10} + server := newTestHTTPServer(t, http.StatusOK, garbage) defer server.Close() client, err := kubernetes.NewForConfig(&rest.Config{