package api import ( "net/http" "testing" ) func TestSignIn(t *testing.T) { tapi := newTestAPI(t) defer tapi.close() var member struct { Member Password string `json:"password"` } member.Num = 10 member.Name = "foo" member.Role = "admin" member.Password = "password" resp := tapi.do("POST", "/member", member, nil) if resp.StatusCode != http.StatusCreated { t.Fatal("Can't create member:", resp.Status) } tapi.token = "" resp = tapi.do("GET", "/member", nil, nil) if resp.StatusCode != http.StatusUnauthorized { t.Error("Got members without auth") } var respMember struct { Token string `json:"token"` Member Member `json:"member"` } jsonAuth := creds{ Name: member.Name, Password: member.Password, } resp = tapi.do("POST", "/signin", jsonAuth, &respMember) if resp.StatusCode != http.StatusOK { t.Fatal("Can't sign in:", resp.Status) } if respMember.Member.Name != member.Name { t.Fatal("Unexpected member:", respMember) } tapi.token = respMember.Token resp = tapi.do("GET", "/member", nil, nil) if resp.StatusCode != http.StatusOK { t.Fatal("Can't get members:", resp.Status) } }