@@ -6,96 +6,56 @@ import (
66 "testing"
77
88 "github.com/rs/zerolog"
9+ "github.com/stretchr/testify/assert"
910)
1011
11- func TestProhibitedMethodsMiddleware (t * testing.T ) {
12- logger := zerolog .New (nil )
13- app := & application {
14- logger : & logger ,
15- }
16-
17- tests := []struct {
18- name string
19- method string
20- want int
21- }{
22- {
23- name : "GET" ,
24- method : http .MethodGet ,
25- want : http .StatusOK ,
26- },
27- {
28- name : "POST" ,
29- method : http .MethodGet ,
30- want : http .StatusOK ,
31- },
32- {
33- name : "PATCH" ,
34- method : http .MethodPatch ,
35- want : http .StatusMethodNotAllowed ,
36- }}
37-
38- for _ , tt := range tests {
39- t .Run (tt .name , func (t * testing.T ) {
40- rr := httptest .NewRecorder ()
41- r , err := http .NewRequest (tt .method , "/" , nil )
42- if err != nil {
43- t .Fatal (err )
44- }
45- next := http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
46- _ , _ = w .Write ([]byte ("OK" ))
47- })
48- app .prohibitedMethodsMiddleware (next ).ServeHTTP (rr , r )
49- rs := rr .Result ()
50-
51- if rs .StatusCode != tt .want {
52- t .Errorf ("want %d; got %d" , tt .want , rs .StatusCode )
53- }
54- defer rs .Body .Close ()
55- })
56- }
57- }
58-
59- func TestProhibitedPathsMiddleware (t * testing.T ) {
12+ func TestSafeModeMiddleware (t * testing.T ) {
6013 tests := []struct {
6114 name string
6215 path string
16+ method string
6317 safeMode bool
6418 want int
6519 }{
6620 {
67- name : "safe mode on tsdb " ,
21+ name : "tsdb ( safe mode on) " ,
6822 path : "/admin/tsdb" ,
23+ method : http .MethodGet ,
6924 safeMode : true ,
7025 want : http .StatusForbidden ,
7126 },
7227 {
73- name : "safe mode off tsdb " ,
28+ name : "tsdb ( safe mode off) " ,
7429 path : "/admin/tsdb" ,
30+ method : http .MethodGet ,
7531 safeMode : false ,
7632 want : http .StatusOK ,
7733 },
7834 {
79- name : "safe mode on api write " ,
35+ name : "api write ( safe mode on) " ,
8036 path : "/api/v1/write" ,
37+ method : http .MethodGet ,
8138 safeMode : true ,
8239 want : http .StatusForbidden ,
8340 },
8441 {
85- name : "safe mode off api write " ,
42+ name : "api write ( safe mode off) " ,
8643 path : "/api/v1/write" ,
44+ method : http .MethodGet ,
8745 safeMode : false ,
8846 want : http .StatusOK ,
8947 },
9048 {
91- name : "safe mode on random path " ,
49+ name : "random path ( safe mode on) " ,
9250 path : "/api/v1/test" ,
93- safeMode : false ,
51+ method : http .MethodGet ,
52+ safeMode : true ,
9453 want : http .StatusOK ,
9554 },
9655 {
97- name : "safe mode off random path " ,
56+ name : "random path ( safe mode off) " ,
9857 path : "/api/v1/test" ,
58+ method : http .MethodGet ,
9959 safeMode : false ,
10060 want : http .StatusOK ,
10161 },
@@ -110,19 +70,19 @@ func TestProhibitedPathsMiddleware(t *testing.T) {
11070 }
11171
11272 rr := httptest .NewRecorder ()
113- r , err := http .NewRequest (http . MethodGet , tt .path , nil )
73+ r , err := http .NewRequest (tt . method , tt .path , nil )
11474 if err != nil {
11575 t .Fatal (err )
11676 }
11777 next := http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
11878 _ , _ = w .Write ([]byte ("OK" ))
11979 })
120- app .prohibitedPathsMiddleware (next ).ServeHTTP (rr , r )
80+ app .safeModeMiddleware (next ).ServeHTTP (rr , r )
12181 rs := rr .Result ()
82+ got := rs .StatusCode
83+
84+ assert .Equal (t , tt .want , got )
12285
123- if rs .StatusCode != tt .want {
124- t .Errorf ("want %d; got %d" , tt .want , rs .StatusCode )
125- }
12686 defer rs .Body .Close ()
12787 })
12888 }
0 commit comments