169 lines
5.0 KiB
Go
169 lines
5.0 KiB
Go
|
package chipmunk
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"fmt"
|
||
|
"io"
|
||
|
"net/http"
|
||
|
"net/http/httptest"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestAdd(t *testing.T) {
|
||
|
defer clearContacts()
|
||
|
sm := http.NewServeMux()
|
||
|
AddRoutes(sm)
|
||
|
ts := httptest.NewServer(sm)
|
||
|
|
||
|
//adding normal user
|
||
|
u := fmt.Sprintf("%s%s?name=derek&number=1234", ts.URL, prefix["add"])
|
||
|
req, err := http.NewRequest("POST", u, nil)
|
||
|
resp, err := http.DefaultClient.Do(req)
|
||
|
if err != nil {
|
||
|
t.Fatalf("couldn't POST: %v", err)
|
||
|
}
|
||
|
if got, want := resp.StatusCode, http.StatusOK; got != want {
|
||
|
buf := &bytes.Buffer{}
|
||
|
io.Copy(buf, resp.Body)
|
||
|
t.Logf("%s", buf.Bytes())
|
||
|
t.Fatalf("bad request got incorrect status: got %d, want %d", got, want)
|
||
|
}
|
||
|
|
||
|
//testing poorly formed query
|
||
|
u = fmt.Sprintf("%s%s?this=derek&shouldfail=1234", ts.URL, prefix["add"])
|
||
|
req, err = http.NewRequest("POST", u, nil)
|
||
|
resp, err = http.DefaultClient.Do(req)
|
||
|
if err != nil {
|
||
|
t.Fatalf("couldn't POST: %v", err)
|
||
|
}
|
||
|
if got, want := resp.StatusCode, http.StatusBadRequest; got != want {
|
||
|
buf := &bytes.Buffer{}
|
||
|
io.Copy(buf, resp.Body)
|
||
|
t.Logf("%s", buf.Bytes())
|
||
|
t.Fatalf("bad request got incorrect status: got %d, want %d", got, want)
|
||
|
}
|
||
|
|
||
|
//adding same user twice
|
||
|
u = fmt.Sprintf("%s%s?name=derek&number=1234", ts.URL, prefix["add"])
|
||
|
req, err = http.NewRequest("POST", u, nil)
|
||
|
resp, err = http.DefaultClient.Do(req)
|
||
|
if err != nil {
|
||
|
t.Fatalf("couldn't POST: %v", err)
|
||
|
}
|
||
|
if got, want := resp.StatusCode, http.StatusBadRequest; got != want {
|
||
|
buf := &bytes.Buffer{}
|
||
|
io.Copy(buf, resp.Body)
|
||
|
t.Logf("%s", buf.Bytes())
|
||
|
t.Fatalf("bad request got incorrect status: got %d, want %d", got, want)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestDel(t *testing.T) {
|
||
|
defer clearContacts()
|
||
|
sm := http.NewServeMux()
|
||
|
AddRoutes(sm)
|
||
|
ts := httptest.NewServer(sm)
|
||
|
|
||
|
//adding normal user
|
||
|
u := fmt.Sprintf("%s%s?name=derek&number=1234", ts.URL, prefix["add"])
|
||
|
req, err := http.NewRequest("POST", u, nil)
|
||
|
resp, err := http.DefaultClient.Do(req)
|
||
|
if err != nil {
|
||
|
t.Fatalf("couldn't POST: %v", err)
|
||
|
}
|
||
|
if got, want := resp.StatusCode, http.StatusOK; got != want {
|
||
|
buf := &bytes.Buffer{}
|
||
|
io.Copy(buf, resp.Body)
|
||
|
t.Logf("%s", buf.Bytes())
|
||
|
t.Fatalf("bad request got incorrect status: got %d, want %d", got, want)
|
||
|
}
|
||
|
|
||
|
//remove user that doesn't exists
|
||
|
u = fmt.Sprintf("%s%s?name=doesnotexist", ts.URL, prefix["delete"])
|
||
|
req, err = http.NewRequest("DELETE", u, nil)
|
||
|
resp, err = http.DefaultClient.Do(req)
|
||
|
if err != nil {
|
||
|
t.Fatalf("couldn't DELETE: %v", err)
|
||
|
}
|
||
|
if got, want := resp.StatusCode, http.StatusNoContent; got != want {
|
||
|
buf := &bytes.Buffer{}
|
||
|
io.Copy(buf, resp.Body)
|
||
|
t.Logf("%s", buf.Bytes())
|
||
|
t.Fatalf("bad request got incorrect status: got %d, want %d", got, want)
|
||
|
}
|
||
|
|
||
|
//remove user that exists
|
||
|
u = fmt.Sprintf("%s%s?name=derek", ts.URL, prefix["delete"])
|
||
|
req, err = http.NewRequest("DELETE", u, nil)
|
||
|
resp, err = http.DefaultClient.Do(req)
|
||
|
if err != nil {
|
||
|
t.Fatalf("couldn't DELETE: %v", err)
|
||
|
}
|
||
|
if got, want := resp.StatusCode, http.StatusOK; got != want {
|
||
|
buf := &bytes.Buffer{}
|
||
|
io.Copy(buf, resp.Body)
|
||
|
t.Logf("%s", buf.Bytes())
|
||
|
t.Fatalf("bad request got incorrect status: got %d, want %d", got, want)
|
||
|
}
|
||
|
// attempt to get deleted user, should fail
|
||
|
u = fmt.Sprintf("%s%s?name=derek", ts.URL, prefix["search"])
|
||
|
req, err = http.NewRequest("GET", u, nil)
|
||
|
resp, err = http.DefaultClient.Do(req)
|
||
|
if err != nil {
|
||
|
t.Fatalf("couldn't GET: %v", err)
|
||
|
}
|
||
|
if got, want := resp.StatusCode, http.StatusNoContent; got != want {
|
||
|
buf := &bytes.Buffer{}
|
||
|
io.Copy(buf, resp.Body)
|
||
|
t.Logf("%s", buf.Bytes())
|
||
|
t.Fatalf("bad request got incorrect status: got %d, want %d", got, want)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestEdit(t *testing.T) {
|
||
|
defer clearContacts()
|
||
|
sm := http.NewServeMux()
|
||
|
AddRoutes(sm)
|
||
|
ts := httptest.NewServer(sm)
|
||
|
|
||
|
//adding normal user
|
||
|
u := fmt.Sprintf("%s%s?name=derek&number=1234", ts.URL, prefix["add"])
|
||
|
req, err := http.NewRequest("POST", u, nil)
|
||
|
resp, err := http.DefaultClient.Do(req)
|
||
|
if err != nil {
|
||
|
t.Fatalf("couldn't POST: %v", err)
|
||
|
}
|
||
|
if got, want := resp.StatusCode, http.StatusOK; got != want {
|
||
|
buf := &bytes.Buffer{}
|
||
|
io.Copy(buf, resp.Body)
|
||
|
t.Logf("%s", buf.Bytes())
|
||
|
t.Fatalf("bad request got incorrect status: got %d, want %d", got, want)
|
||
|
}
|
||
|
//edit user
|
||
|
u = fmt.Sprintf("%s%s?name=derek&edit=drock", ts.URL, prefix["edit"])
|
||
|
req, err = http.NewRequest("POST", u, nil)
|
||
|
resp, err = http.DefaultClient.Do(req)
|
||
|
if err != nil {
|
||
|
t.Fatalf("couldn't POST: %v", err)
|
||
|
}
|
||
|
if got, want := resp.StatusCode, http.StatusOK; got != want {
|
||
|
buf := &bytes.Buffer{}
|
||
|
io.Copy(buf, resp.Body)
|
||
|
t.Logf("%s", buf.Bytes())
|
||
|
t.Fatalf("bad request got incorrect status: got %d, want %d", got, want)
|
||
|
}
|
||
|
// get the edited user
|
||
|
u = fmt.Sprintf("%s%s?name=drock", ts.URL, prefix["search"])
|
||
|
req, err = http.NewRequest("GET", u, nil)
|
||
|
resp, err = http.DefaultClient.Do(req)
|
||
|
if err != nil {
|
||
|
t.Fatalf("couldn't GET: %v", err)
|
||
|
}
|
||
|
if got, want := resp.StatusCode, http.StatusOK; got != want {
|
||
|
buf := &bytes.Buffer{}
|
||
|
io.Copy(buf, resp.Body)
|
||
|
t.Logf("%s", buf.Bytes())
|
||
|
t.Fatalf("bad request got incorrect status: got %d, want %d", got, want)
|
||
|
}
|
||
|
}
|