github.com/fanux/shipyard@v0.0.0-20161009071005-6515ce223235/controller/api/accounts_test.go (about) 1 package api 2 3 import ( 4 "bytes" 5 "encoding/json" 6 "fmt" 7 "net/http" 8 "net/http/httptest" 9 "testing" 10 11 "github.com/shipyard/shipyard/auth" 12 "github.com/shipyard/shipyard/controller/mock_test" 13 "github.com/stretchr/testify/assert" 14 ) 15 16 func TestApiGetAccounts(t *testing.T) { 17 api, err := getTestApi() 18 if err != nil { 19 t.Fatal(err) 20 } 21 22 ts := httptest.NewServer(http.HandlerFunc(api.accounts)) 23 defer ts.Close() 24 25 res, err := http.Get(ts.URL) 26 if err != nil { 27 t.Fatal(err) 28 } 29 30 assert.Equal(t, res.StatusCode, 200, "expected response code 200") 31 accts := []*auth.Account{} 32 if err := json.NewDecoder(res.Body).Decode(&accts); err != nil { 33 t.Fatal(err) 34 } 35 36 assert.NotEqual(t, len(accts), 0, "expected accounts; received none") 37 38 acct := accts[0] 39 40 assert.Equal(t, acct.ID, mock_test.TestAccount.ID, fmt.Sprintf("expected ID %s; got %s", mock_test.TestAccount.ID, acct.ID)) 41 } 42 43 func TestApiPostAccounts(t *testing.T) { 44 api, err := getTestApi() 45 if err != nil { 46 t.Fatal(err) 47 } 48 49 ts := httptest.NewServer(http.HandlerFunc(api.saveAccount)) 50 defer ts.Close() 51 52 data := []byte(`{"username": "testuser", "password": "foo"}`) 53 54 res, err := http.Post(ts.URL, "application/json", bytes.NewBuffer(data)) 55 if err != nil { 56 t.Fatal(err) 57 } 58 59 assert.Equal(t, res.StatusCode, 204, "expected response code 204") 60 } 61 62 func TestApiDeleteAccount(t *testing.T) { 63 api, err := getTestApi() 64 if err != nil { 65 t.Fatal(err) 66 } 67 68 transport := &http.Transport{} 69 client := &http.Client{Transport: transport} 70 71 ts := httptest.NewServer(http.HandlerFunc(api.saveAccount)) 72 defer ts.Close() 73 74 data := []byte(`{"username": "testuser", "password": "foo"}`) 75 76 req, err := http.NewRequest("DELETE", ts.URL, bytes.NewBuffer(data)) 77 if err != nil { 78 t.Fatal(err) 79 } 80 81 res, err := client.Do(req) 82 if err != nil { 83 t.Fatal(err) 84 } 85 86 assert.Equal(t, res.StatusCode, 204, "expected response code 204") 87 }