@@ -3,84 +3,121 @@ package http_test
3
3
import (
4
4
. "github.com/bmuschko/link-verifier/http"
5
5
. "github.com/stretchr/testify/assert"
6
+ "net/http"
7
+ "net/http/httptest"
6
8
"testing"
9
+ "time"
7
10
)
8
11
9
12
const (
10
- validUrl = "http://www.google.com/"
11
- incompleteUrl = "https://www.googleapis.com/urlshortener/v1/url"
12
- unknownUrl = "http://www.unknown1x.com/"
13
- invalidUrl = "123://www.invalid.com/"
13
+ invalidUrl = "123://www.invalid.com/"
14
14
)
15
15
16
16
func TestSetTimeout (t * testing.T ) {
17
- SetTimeout (20 )
17
+ h := NewHTTP ()
18
+ h .SetTimeout (20 )
19
+
20
+ Equal (t , h .GetTimeout (), time .Duration (int (time .Second )* 20 ))
18
21
}
19
22
20
23
func TestHeadValidUrl (t * testing.T ) {
21
- result := Head (validUrl )
24
+ server := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
25
+ w .WriteHeader (http .StatusOK )
26
+ }))
27
+ defer server .Close ()
28
+
29
+ h := NewHTTP ()
30
+ result := h .Head (server .URL )
22
31
23
- Equal (t , validUrl , result .Url )
32
+ Equal (t , server . URL , result .Url )
24
33
True (t , result .Success )
25
34
Nil (t , result .Error )
26
- Equal (t , 200 , result .StatusCode )
35
+ Equal (t , http . StatusOK , result .StatusCode )
27
36
}
28
37
29
- func TestHeadUrlForBadRequest (t * testing.T ) {
30
- t .Skip ("Needs to emulate an HTTP server to reproducible results" )
31
- result := Head (incompleteUrl )
38
+ func TestGetValidUrl (t * testing.T ) {
39
+ server := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
40
+ w .WriteHeader (http .StatusOK )
41
+ }))
42
+ defer server .Close ()
32
43
33
- Equal (t , incompleteUrl , result .Url )
34
- False (t , result .Success )
44
+ h := NewHTTP ()
45
+ result := h .Get (server .URL )
46
+
47
+ Equal (t , server .URL , result .Url )
48
+ True (t , result .Success )
35
49
Nil (t , result .Error )
36
- Equal (t , 400 , result .StatusCode )
50
+ Equal (t , http . StatusOK , result .StatusCode )
37
51
}
38
52
39
- func TestHeadNonExistentUrl (t * testing.T ) {
40
- result := Head (unknownUrl )
53
+ func TestHeadUrlForBadRequest (t * testing.T ) {
54
+ server := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
55
+ w .WriteHeader (http .StatusBadRequest )
56
+ }))
57
+ defer server .Close ()
58
+
59
+ h := NewHTTP ()
60
+ result := h .Head (server .URL )
41
61
42
- Equal (t , unknownUrl , result .Url )
62
+ Equal (t , server . URL , result .Url )
43
63
False (t , result .Success )
44
- NotNil (t , result .Error )
64
+ Nil (t , result .Error )
65
+ Equal (t , http .StatusBadRequest , result .StatusCode )
45
66
}
46
67
47
- func TestHeadInvalidUrl (t * testing.T ) {
48
- result := Head (invalidUrl )
68
+ func TestGetUrlForBadRequest (t * testing.T ) {
69
+ server := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
70
+ w .WriteHeader (http .StatusBadRequest )
71
+ }))
72
+ defer server .Close ()
49
73
50
- Equal (t , invalidUrl , result .Url )
74
+ h := NewHTTP ()
75
+ result := h .Get (server .URL )
76
+
77
+ Equal (t , server .URL , result .Url )
51
78
False (t , result .Success )
52
- NotNil (t , result .Error )
79
+ Nil (t , result .Error )
80
+ Equal (t , http .StatusBadRequest , result .StatusCode )
53
81
}
54
82
55
- func TestGetValidUrl (t * testing.T ) {
56
- result := Get (validUrl )
83
+ func TestHeadNotFoundUrl (t * testing.T ) {
84
+ server := httptest .NewServer (http .NotFoundHandler ())
85
+ defer server .Close ()
57
86
58
- Equal (t , validUrl , result .Url )
59
- True (t , result .Success )
87
+ h := NewHTTP ()
88
+ result := h .Head (server .URL )
89
+
90
+ Equal (t , server .URL , result .Url )
91
+ False (t , result .Success )
60
92
Nil (t , result .Error )
61
- Equal (t , 200 , result .StatusCode )
93
+ Equal (t , http . StatusNotFound , result .StatusCode )
62
94
}
63
95
64
- func TestGetUrlForBadRequest (t * testing.T ) {
65
- t . Skip ( "Needs to emulate an HTTP server to reproducible results" )
66
- result := Get ( incompleteUrl )
96
+ func TestGetNotFoundUrl (t * testing.T ) {
97
+ server := httptest . NewServer ( http . NotFoundHandler () )
98
+ defer server . Close ( )
67
99
68
- Equal (t , incompleteUrl , result .Url )
100
+ h := NewHTTP ()
101
+ result := h .Get (server .URL )
102
+
103
+ Equal (t , server .URL , result .Url )
69
104
False (t , result .Success )
70
105
Nil (t , result .Error )
71
- Equal (t , 400 , result .StatusCode )
106
+ Equal (t , http . StatusNotFound , result .StatusCode )
72
107
}
73
108
74
- func TestGetNonExistentUrl (t * testing.T ) {
75
- result := Get (unknownUrl )
109
+ func TestHeadInvalidUrl (t * testing.T ) {
110
+ h := NewHTTP ()
111
+ result := h .Head (invalidUrl )
76
112
77
- Equal (t , unknownUrl , result .Url )
113
+ Equal (t , invalidUrl , result .Url )
78
114
False (t , result .Success )
79
115
NotNil (t , result .Error )
80
116
}
81
117
82
118
func TestGetInvalidUrl (t * testing.T ) {
83
- result := Get (invalidUrl )
119
+ h := NewHTTP ()
120
+ result := h .Get (invalidUrl )
84
121
85
122
Equal (t , invalidUrl , result .Url )
86
123
False (t , result .Success )
0 commit comments