From fb7373aa62ba8358db1c3c4595c943d400d6bc9e Mon Sep 17 00:00:00 2001 From: Alexander Todorov Date: Tue, 7 Apr 2020 07:38:13 -0400 Subject: [PATCH] tests: Use the require package --- internal/client/client_test.go | 130 +++++++++------------------------ 1 file changed, 34 insertions(+), 96 deletions(-) diff --git a/internal/client/client_test.go b/internal/client/client_test.go index cf44873a9..52350298c 100644 --- a/internal/client/client_test.go +++ b/internal/client/client_test.go @@ -4,45 +4,31 @@ package client import ( "net/http" - "strings" "testing" "github.com/google/go-cmp/cmp" + "github.com/stretchr/testify/require" ) func TestRequest(t *testing.T) { // Make a request to the status route resp, err := Request(testState.socket, "GET", "/api/status", "", map[string]string{}) - if err != nil { - t.Fatalf("Request good route failed: %v", err) - } - if resp.StatusCode != 200 { - t.Fatalf("Request good route: %d != 200", resp.StatusCode) - } + require.NoError(t, err) + require.Equal(t, 200, resp.StatusCode) // Make a request to a bad route resp, err = Request(testState.socket, "GET", "/invalidroute", "", map[string]string{}) - if err != nil { - t.Fatalf("Request bad route failed: %v", err) - } - if resp.StatusCode != http.StatusNotFound { - t.Fatalf("Request bad route: %d != 404", resp.StatusCode) - } + require.NoError(t, err) + require.Equal(t, http.StatusNotFound, resp.StatusCode) // Test that apiError returns an error response _, err = apiError(resp) - if err != nil { - t.Fatalf("apiError could not parse the response: %s", err) - } + require.NoError(t, err) // Make a request with a bad offset to trigger a JSON response with Status set to 400 resp, err = Request(testState.socket, "GET", "/api/v0/blueprints/list?offset=bad", "", map[string]string{}) - if err != nil { - t.Fatalf("Request bad offset failed: %v", err) - } - if resp.StatusCode != http.StatusBadRequest { - t.Fatalf("Request bad offset: %d != 400", resp.StatusCode) - } + require.NoError(t, err) + require.Equal(t, http.StatusBadRequest, resp.StatusCode) } func TestAPIErrorMsg(t *testing.T) { @@ -54,9 +40,7 @@ func TestAPIErrorMsg(t *testing.T) { func TestAPIResponse(t *testing.T) { resp := APIResponse{Status: true} - if resp.String() != "" { - t.Fatalf("Empty APIResponse Errors doesn't return empty string: %v", resp.String()) - } + require.Equal(t, "", resp.String()) resp = APIResponse{Status: false, Errors: []APIErrorMsg{ @@ -74,73 +58,39 @@ func TestAPIResponse(t *testing.T) { func TestGetRaw(t *testing.T) { // Get raw data b, resp, err := GetRaw(testState.socket, "GET", "/api/status") - if err != nil { - t.Fatalf("GetRaw failed with a client error: %v", err) - } - if resp != nil { - t.Fatalf("GetRaw request failed: %v", err) - } - if len(b) == 0 { - t.Fatal("GetRaw returned an empty string") - } + require.NoError(t, err) + require.Nil(t, resp) + require.Greater(t, len(b), 0) + // Get an API error b, resp, err = GetRaw(testState.socket, "GET", "/api/v0/blueprints/list?offset=bad") - if err != nil { - t.Fatalf("GetRaw bad request failed with a client error: %v", err) - } - if resp == nil { - t.Fatalf("GetRaw bad request did not return an error: %v", b) - } - if resp.Status != false { - t.Fatalf("Status != false: %#v", resp) - } - if len(resp.AllErrors()) < 1 { - t.Fatalf("GetRaw error did not return error message: %#v", resp) - } else if resp.Errors[0].ID != "BadLimitOrOffset" { - t.Fatalf("GetRaw error ID is not BadLimitOrOffset: %#v", resp) - } + require.NoError(t, err) + require.NotNilf(t, resp, "GetRaw bad request did not return an error: %v", b) + require.False(t, resp.Status) + require.GreaterOrEqual(t, len(resp.AllErrors()), 1) + require.Equal(t, "BadLimitOrOffset", resp.Errors[0].ID) } func TestGetJSONAll(t *testing.T) { // Get all the projects b, resp, err := GetJSONAll(testState.socket, "/api/v0/projects/list") - if err != nil { - t.Fatalf("GetJSONAll failed with a client error: %v", err) - } - if resp != nil { - t.Fatalf("GetJSONAll request failed: %v", resp) - } - if len(b) < 100 { - t.Fatalf("GetJSONAll response is too short: %#v", b) - } + require.NoError(t, err) + require.Nil(t, resp) + require.GreaterOrEqualf(t, len(b), 100, "GetJSONAll response is too short: %#v", b) // Run it on a route that doesn't support offset/limit - b, resp, err = GetJSONAll(testState.socket, "/api/status") - if err == nil { - t.Fatalf("GetJSONAll bad route failed: %v", b) - } - if err.Error() != "Response is missing the total value" { - t.Fatalf("GetJSONAll bad route has unexpected total value: %v", resp) - } + _, _, err = GetJSONAll(testState.socket, "/api/status") + require.EqualError(t, err, "Response is missing the total value") } func TestPostRaw(t *testing.T) { // There are no routes that accept raw POST w/o Content-Type so this ends up testing the error path b, resp, err := PostRaw(testState.socket, "/api/v0/blueprints/new", "nobody", nil) - if err != nil { - t.Fatalf("PostRaw bad request failed with a client error: %v", err) - } - if resp == nil { - t.Fatalf("PostRaw bad request did not return an error: %v", b) - } - if resp.Status != false { - t.Fatalf("PostRaw bad request status != false: %#v", resp) - } - if len(resp.AllErrors()) < 1 { - t.Fatalf("GetRaw error did not return error message: %#v", resp) - } else if resp.Errors[0].ID != "BlueprintsError" { - t.Fatalf("GetRaw error ID is not BlueprintsError: %#v", resp) - } + require.NoError(t, err) + require.NotNilf(t, resp, "PostRaw bad request did not return an error: %v", b) + require.False(t, resp.Status) + require.GreaterOrEqualf(t, len(resp.AllErrors()), 1, "GetRaw error did not return error message: %#v", resp) + require.Equalf(t, "BlueprintsError", resp.Errors[0].ID, "GetRaw error ID is not BlueprintsError: %#v", resp) } func TestPostTOML(t *testing.T) { @@ -148,15 +98,9 @@ func TestPostTOML(t *testing.T) { description = "TOML test blueprint" version = "0.0.1"` b, resp, err := PostTOML(testState.socket, "/api/v0/blueprints/new", blueprint) - if err != nil { - t.Fatalf("PostTOML client failed: %v", err) - } - if resp != nil { - t.Fatalf("PostTOML request failed: %v", resp) - } - if !strings.Contains(string(b), "true") { - t.Fatalf("PostTOML failed: %#v", string(b)) - } + require.NoError(t, err) + require.Nil(t, resp) + require.Contains(t, string(b), "true") } func TestPostJSON(t *testing.T) { @@ -164,13 +108,7 @@ func TestPostJSON(t *testing.T) { "description": "JSON test blueprint", "version": "0.0.1"}` b, resp, err := PostJSON(testState.socket, "/api/v0/blueprints/new", blueprint) - if err != nil { - t.Fatalf("PostJSON client failed: %v", err) - } - if resp != nil { - t.Fatalf("PostJSON request failed: %v", resp) - } - if !strings.Contains(string(b), "true") { - t.Fatalf("PostJSON failed: %#v", string(b)) - } + require.NoError(t, err) + require.Nil(t, resp) + require.Contains(t, string(b), "true") }