github.com/volatiletech/authboss@v2.4.1+incompatible/defaults/router_test.go (about) 1 package defaults 2 3 import ( 4 "io/ioutil" 5 "net/http" 6 "net/http/httptest" 7 "strings" 8 "testing" 9 ) 10 11 func TestRouter(t *testing.T) { 12 t.Parallel() 13 14 r := NewRouter() 15 var get, post, del string 16 wantGet, wantPost, wantDelete := "testget", "testpost", "testdelete" 17 18 r.Get("/test", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 19 b, err := ioutil.ReadAll(r.Body) 20 if err != nil { 21 panic(err) 22 } 23 24 get = string(b) 25 })) 26 r.Post("/test", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 27 b, err := ioutil.ReadAll(r.Body) 28 if err != nil { 29 panic(err) 30 } 31 32 post = string(b) 33 })) 34 r.Delete("/test", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 35 b, err := ioutil.ReadAll(r.Body) 36 if err != nil { 37 panic(err) 38 } 39 40 del = string(b) 41 })) 42 43 wr := httptest.NewRecorder() 44 req := httptest.NewRequest("GET", "/test", strings.NewReader("testget")) 45 r.ServeHTTP(wr, req) 46 if get != wantGet { 47 t.Error("want:", wantGet, "got:", get) 48 } 49 if len(post) != 0 || len(del) != 0 { 50 t.Error("should be empty:", post, del) 51 } 52 53 wr = httptest.NewRecorder() 54 req = httptest.NewRequest("POST", "/test", strings.NewReader("testpost")) 55 r.ServeHTTP(wr, req) 56 if post != wantPost { 57 t.Error("want:", wantPost, "got:", post) 58 } 59 if len(del) != 0 { 60 t.Error("should be empty:", del) 61 } 62 63 wr = httptest.NewRecorder() 64 req = httptest.NewRequest("DELETE", "/test", strings.NewReader("testdelete")) 65 r.ServeHTTP(wr, req) 66 if del != wantDelete { 67 t.Error("want:", wantDelete, "got:", del) 68 } 69 } 70 71 func TestRouterBadMethod(t *testing.T) { 72 t.Parallel() 73 74 r := NewRouter() 75 wr := httptest.NewRecorder() 76 req := httptest.NewRequest("OPTIONS", "/", nil) 77 78 r.ServeHTTP(wr, req) 79 80 if wr.Code != http.StatusMethodNotAllowed { 81 t.Error("want method not allowed code, got:", wr.Code) 82 } 83 }