github.com/fanux/shipyard@v0.0.0-20161009071005-6515ce223235/controller/api/nodes_test.go (about) 1 package api 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "net/http" 7 "net/http/httptest" 8 "testing" 9 10 "github.com/shipyard/shipyard" 11 "github.com/shipyard/shipyard/controller/mock_test" 12 "github.com/stretchr/testify/assert" 13 ) 14 15 func TestApiGetNode(t *testing.T) { 16 api, err := getTestApi() 17 if err != nil { 18 t.Fatal(err) 19 } 20 21 ts := httptest.NewServer(http.HandlerFunc(api.node)) 22 defer ts.Close() 23 24 res, err := http.Get(ts.URL) 25 if err != nil { 26 t.Fatal(err) 27 } 28 29 assert.Equal(t, res.StatusCode, 200, "expected response code 200") 30 node := &shipyard.Node{} 31 if err := json.NewDecoder(res.Body).Decode(&node); err != nil { 32 t.Fatal(err) 33 } 34 35 assert.NotEqual(t, node.ID, nil, "expected node; received nil") 36 37 assert.Equal(t, node.Name, mock_test.TestNode.Name, fmt.Sprintf("expected name %s; got %s", mock_test.TestNode.Name, node.Name)) 38 } 39 40 func TestApiGetNodes(t *testing.T) { 41 api, err := getTestApi() 42 if err != nil { 43 t.Fatal(err) 44 } 45 46 ts := httptest.NewServer(http.HandlerFunc(api.nodes)) 47 defer ts.Close() 48 49 res, err := http.Get(ts.URL) 50 if err != nil { 51 t.Fatal(err) 52 } 53 54 assert.Equal(t, res.StatusCode, 200, "expected response code 200") 55 nodes := []*shipyard.Node{} 56 if err := json.NewDecoder(res.Body).Decode(&nodes); err != nil { 57 t.Fatal(err) 58 } 59 60 assert.NotEqual(t, len(nodes), 0, "expected nodes; received none") 61 62 node := nodes[0] 63 64 assert.Equal(t, node.Name, mock_test.TestNode.Name, fmt.Sprintf("expected name %s; got %s", mock_test.TestNode.Name, node.Name)) 65 }