github.com/kumasuke120/mockuma@v1.1.9/internal/server/handler_test.go (about) 1 package server 2 3 import ( 4 "errors" 5 "fmt" 6 "net/http" 7 "net/http/httptest" 8 "strings" 9 "testing" 10 11 "github.com/stretchr/testify/assert" 12 ) 13 14 func TestMockHandler_ServeHTTP(t *testing.T) { 15 //noinspection GoImportUsedAsName 16 assert := assert.New(t) 17 18 handlers := []http.Handler{newMockHandler(mappings), newMockHandler(mappingsWithCORS)} 19 20 for _, handler := range handlers { 21 req1 := httptest.NewRequest("POST", "/hello", nil) 22 rr1 := httptest.NewRecorder() 23 handler.ServeHTTP(rr1, req1) 24 assert.Equal(http.StatusOK, rr1.Code) 25 26 req2 := httptest.NewRequest("", "/hello", nil) 27 rr2 := httptest.NewRecorder() 28 handler.ServeHTTP(rr2, req2) 29 assert.Equal(http.StatusMethodNotAllowed, rr2.Code) 30 31 req3 := httptest.NewRequest("", "/notfound", nil) 32 rr3 := httptest.NewRecorder() 33 handler.ServeHTTP(rr3, req3) 34 assert.Equal(http.StatusNotFound, rr3.Code) 35 36 req4 := httptest.NewRequest("", "/m", nil) 37 rr4 := httptest.NewRecorder() 38 handler.ServeHTTP(rr4, req4) 39 assert.Equal(http.StatusBadRequest, rr4.Code) 40 41 req5 := httptest.NewRequest("POST", "/m", strings.NewReader("120")) 42 rr5 := httptest.NewRecorder() 43 handler.ServeHTTP(rr5, req5) 44 assert.Equal(http.StatusOK, rr5.Code) 45 assert.Equal("TEST/v1", rr5.Header().Get("Server")) 46 47 req6 := httptest.NewRequest("GET", "/m?p1=v1&p2=v1&p2=v2", nil) 48 rr6 := httptest.NewRecorder() 49 handler.ServeHTTP(rr6, req6) 50 assert.Equal(http.StatusBadGateway, rr6.Code) 51 } 52 53 req7 := httptest.NewRequest("OPTIONS", "/m", nil) 54 req7.Header.Add("Origin", "https://www.example.com") 55 req7.Header.Add("Access-Control-Request-Method", "GET") 56 rr7 := httptest.NewRecorder() 57 handlers[1].ServeHTTP(rr7, req7) 58 fmt.Println(rr7.Header()) 59 assert.Equal("1800", rr7.Header().Get("Access-Control-Max-Age")) 60 assert.Equal("https://www.example.com", rr7.Header().Get("Access-Control-Allow-Origin")) 61 } 62 63 func TestMockHandler_handleExecuteError(t *testing.T) { 64 //noinspection GoImportUsedAsName 65 assert := assert.New(t) 66 67 handler := newMockHandler(mappings).(*mockHandler) 68 69 req1 := httptest.NewRequest("GET", "/", nil) 70 rr1 := httptest.NewRecorder() 71 handler.handleExecuteError(rr1, req1, &forwardError{err: errors.New("test")}) 72 assert.Equal(http.StatusBadGateway, rr1.Code) 73 74 req2 := httptest.NewRequest("GET", "/", nil) 75 rr2 := httptest.NewRecorder() 76 handler.handleExecuteError(rr2, req2, errors.New("test")) 77 assert.Equal(http.StatusInternalServerError, rr2.Code) 78 } 79 80 func TestMockHandler_listAllMappings(t *testing.T) { 81 handler := newMockHandler(mappings).(*mockHandler) 82 handler.listAllMappings() 83 }