| 181 | } |
| 182 | |
| 183 | func Test_App_MethodNotAllowed(t *testing.T) { |
| 184 | t.Parallel() |
| 185 | app := New() |
| 186 | |
| 187 | app.Use(func(c Ctx) error { |
| 188 | return c.Next() |
| 189 | }) |
| 190 | |
| 191 | app.Post("/", testEmptyHandler) |
| 192 | |
| 193 | app.Options("/", testEmptyHandler) |
| 194 | |
| 195 | resp, err := app.Test(httptest.NewRequest(MethodPost, "/", http.NoBody)) |
| 196 | require.NoError(t, err) |
| 197 | require.Equal(t, 200, resp.StatusCode) |
| 198 | require.Empty(t, resp.Header.Get(HeaderAllow)) |
| 199 | |
| 200 | resp, err = app.Test(httptest.NewRequest(MethodGet, "/", http.NoBody)) |
| 201 | require.NoError(t, err) |
| 202 | require.Equal(t, 405, resp.StatusCode) |
| 203 | require.Equal(t, "POST, OPTIONS", resp.Header.Get(HeaderAllow)) |
| 204 | |
| 205 | resp, err = app.Test(httptest.NewRequest(MethodPatch, "/", http.NoBody)) |
| 206 | require.NoError(t, err) |
| 207 | require.Equal(t, 405, resp.StatusCode) |
| 208 | require.Equal(t, "POST, OPTIONS", resp.Header.Get(HeaderAllow)) |
| 209 | |
| 210 | resp, err = app.Test(httptest.NewRequest(MethodPut, "/", http.NoBody)) |
| 211 | require.NoError(t, err) |
| 212 | require.Equal(t, 405, resp.StatusCode) |
| 213 | require.Equal(t, "POST, OPTIONS", resp.Header.Get(HeaderAllow)) |
| 214 | |
| 215 | app.Get("/", testEmptyHandler) |
| 216 | |
| 217 | resp, err = app.Test(httptest.NewRequest(MethodTrace, "/", http.NoBody)) |
| 218 | require.NoError(t, err) |
| 219 | require.Equal(t, 405, resp.StatusCode) |
| 220 | require.Equal(t, "GET, HEAD, POST, OPTIONS", resp.Header.Get(HeaderAllow)) |
| 221 | |
| 222 | resp, err = app.Test(httptest.NewRequest(MethodPatch, "/", http.NoBody)) |
| 223 | require.NoError(t, err) |
| 224 | require.Equal(t, 405, resp.StatusCode) |
| 225 | require.Equal(t, "GET, HEAD, POST, OPTIONS", resp.Header.Get(HeaderAllow)) |
| 226 | |
| 227 | app.Head("/", testEmptyHandler) |
| 228 | |
| 229 | resp, err = app.Test(httptest.NewRequest(MethodPut, "/", http.NoBody)) |
| 230 | require.NoError(t, err) |
| 231 | require.Equal(t, 405, resp.StatusCode) |
| 232 | require.Equal(t, "GET, HEAD, POST, OPTIONS", resp.Header.Get(HeaderAllow)) |
| 233 | } |
| 234 | |
| 235 | func Test_App_QueryMethod_AllowHeader(t *testing.T) { |
| 236 | t.Parallel() |