package api import ( "net/http" "testing" ) var testMember = struct { Member Password string `json:"password"` }{ Member: Member{ Num: 10, Name: "foo", Email: "foo@example.com", Role: "admin", Balance: 10000, }, Password: "password", } func TestMemberAddList(t *testing.T) { tapi := newTestAPI(t) defer tapi.close() tapi.addTestMember() var members []Member resp := tapi.do("GET", "/member", nil, &members) if resp.StatusCode != http.StatusOK { t.Fatal("Can't get members:", resp.Status) } if len(members) != 1 { t.Fatal("Wrong number of members", len(members), members) } if members[0].Name != "foo" { t.Error("Wrong name:", members[0].Name) } if members[0].Email != "foo@example.com" { t.Error("Wrong email:", members[0].Email) } } func TestMemberGetDelete(t *testing.T) { tapi := newTestAPI(t) defer tapi.close() resp := tapi.do("GET", "/member/10", nil, nil) if resp.StatusCode != http.StatusNotFound { t.Error("Expected not found:", resp.Status, resp.Body) } tapi.addTestMember() var gotMember Member resp = tapi.do("GET", "/member/10", nil, &gotMember) if resp.StatusCode != http.StatusOK { t.Error("Can't find the member:", resp.Status) } if gotMember.Num != 10 { t.Error("Wrong member:", gotMember.Num) } resp = tapi.do("DELETE", "/member/10", nil, nil) if resp.StatusCode != http.StatusOK { t.Error("Can't find the member:", resp.Status) } resp = tapi.do("GET", "/member/10", nil, nil) if resp.StatusCode != http.StatusNotFound { t.Error("Expected not found after delete:", resp.Status, resp.Body) } } func TestMemberUpdate(t *testing.T) { tapi := newTestAPI(t) defer tapi.close() tapi.addTestMember() member := testMember member.Balance = 1000 resp := tapi.do("PUT", "/member/10", member, nil) if resp.StatusCode != http.StatusAccepted { t.Fatal("Can't update member:", resp.Status) } var gotMember Member resp = tapi.do("GET", "/member/10", nil, &gotMember) if resp.StatusCode != http.StatusOK { t.Error("Can't find the member:", resp.Status) } if gotMember.Balance != 1000 { t.Error("Wrong balance:", gotMember) } } func (tapi *testAPI) addTestMember() { resp := tapi.do("POST", "/member", testMember, nil) if resp.StatusCode != http.StatusCreated { tapi.t.Fatal("Can't create member:", resp.Status) } }