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  }