1
1
package handlers
2
2
3
3
import (
4
- "encoding/json"
5
4
"net/http"
6
5
"net/http/httptest"
7
6
"testing"
8
7
9
8
"github.com/stretchr/testify/assert"
9
+ "github.com/xray-web/web-check-api/checks"
10
10
)
11
11
12
12
func TestHandleGetHeaders (t * testing.T ) {
@@ -15,45 +15,24 @@ func TestHandleGetHeaders(t *testing.T) {
15
15
t .Run ("url parameter is missing" , func (t * testing.T ) {
16
16
req := httptest .NewRequest (http .MethodGet , "/headers" , nil )
17
17
rec := httptest .NewRecorder ()
18
- HandleGetHeaders ().ServeHTTP (rec , req )
18
+ HandleGetHeaders (nil ).ServeHTTP (rec , req )
19
19
20
20
assert .Equal (t , http .StatusBadRequest , rec .Code )
21
21
assert .JSONEq (t , `{"error": "missing URL parameter"}` , rec .Body .String ())
22
22
})
23
23
24
24
t .Run ("invalid url format" , func (t * testing.T ) {
25
- req := httptest .NewRequest (http .MethodGet , "/headers?url=invalid-url" , nil )
26
- rec := httptest .NewRecorder ()
27
- HandleGetHeaders ().ServeHTTP (rec , req )
28
-
29
- assert .Equal (t , http .StatusInternalServerError , rec .Code )
30
- })
31
-
32
- t .Run ("valid url" , func (t * testing.T ) {
33
25
mockServer := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
34
26
w .Header ().Set ("Content-Type" , "application/json" )
35
27
w .Header ().Set ("X-Custom-Header" , "value" )
36
28
w .WriteHeader (http .StatusOK )
37
29
}))
38
30
defer mockServer .Close ()
39
31
40
- req := httptest .NewRequest (http .MethodGet , "/headers?url=" + mockServer . URL , nil )
32
+ req := httptest .NewRequest (http .MethodGet , "/headers?url=invalid-url" , nil )
41
33
rec := httptest .NewRecorder ()
42
- HandleGetHeaders ().ServeHTTP (rec , req )
43
-
44
- assert .Equal (t , http .StatusOK , rec .Code )
45
-
46
- var responseBody map [string ]interface {}
47
- err := json .Unmarshal (rec .Body .Bytes (), & responseBody )
48
- assert .NoError (t , err )
34
+ HandleGetHeaders (checks .NewHeaders (mockServer .Client ())).ServeHTTP (rec , req )
49
35
50
- expectedHeaders := map [string ]interface {}{
51
- "Content-Type" : "application/json" ,
52
- "X-Custom-Header" : "value" ,
53
- }
54
-
55
- for key , expectedValue := range expectedHeaders {
56
- assert .Equal (t , expectedValue , responseBody [key ])
57
- }
36
+ assert .Equal (t , http .StatusInternalServerError , rec .Code )
58
37
})
59
38
}
0 commit comments