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  }