Derek McQuay
901d8e5070
basically copied this from my previous work in starz. Wanted to get google oauth working before changing much around.
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)
|
|
}
|
|
}
|