tests: Use the require package
This commit is contained in:
parent
5e49b026ca
commit
fb7373aa62
1 changed files with 34 additions and 96 deletions
|
|
@ -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")
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue