@@ -18,6 +18,7 @@ package notifier
18
18
19
19
import (
20
20
"context"
21
+ "crypto/x509"
21
22
"fmt"
22
23
"net/http"
23
24
"net/http/httptest"
@@ -31,30 +32,43 @@ import (
31
32
"github.com/stretchr/testify/assert"
32
33
)
33
34
34
- // newTestServer returns an HTTP server mimicking parts of Gitea's API so that tests don't
35
+ // newTestHTTPServer returns an HTTP server mimicking parts of Gitea's API so that tests don't
35
36
// need to rely on 3rd-party components to be available (like the try.gitea.io server).
36
- func newTestServer (t * testing.T ) * httptest.Server {
37
+ func newTestHTTPServer (t * testing.T ) * httptest.Server {
37
38
srv := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
38
- switch r .URL .Path {
39
- case "/api/v1/version" :
40
- fmt .Fprintf (w , `{"version":"1.18.3"}` )
41
- case "/api/v1/repos/foo/bar/commits/69b59063470310ebbd88a9156325322a124e55a3/statuses" :
42
- fmt .Fprintf (w , "[]" )
43
- case "/api/v1/repos/foo/bar/statuses/69b59063470310ebbd88a9156325322a124e55a3" :
44
- fmt .Fprintf (w , "{}" )
45
- case "/api/v1/repos/foo/bar/commits/8a9156325322a124e55a369b59063470310ebbd8/statuses" :
46
- fmt .Fprintf (w , "[]" )
47
- case "/api/v1/repos/foo/bar/statuses/8a9156325322a124e55a369b59063470310ebbd8" :
48
- fmt .Fprintf (w , "{}" )
49
- default :
50
- t .Logf ("unknown %s request at %s" , r .Method , r .URL .Path )
51
- }
39
+ handleTestRequest (t , w , r )
52
40
}))
53
41
return srv
54
42
}
55
43
44
+ // newTestHTTPSServer returns an HTTPS server mimicking parts of Gitea's API so that tests don't
45
+ // need to rely on 3rd-party components to be available (like the try.gitea.io server).
46
+ func newTestHTTPSServer (t * testing.T ) * httptest.Server {
47
+ srv := httptest .NewTLSServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
48
+ handleTestRequest (t , w , r )
49
+ }))
50
+ return srv
51
+ }
52
+
53
+ func handleTestRequest (t * testing.T , w http.ResponseWriter , r * http.Request ) {
54
+ switch r .URL .Path {
55
+ case "/api/v1/version" :
56
+ fmt .Fprintf (w , `{"version":"1.18.3"}` )
57
+ case "/api/v1/repos/foo/bar/commits/69b59063470310ebbd88a9156325322a124e55a3/statuses" :
58
+ fmt .Fprintf (w , "[]" )
59
+ case "/api/v1/repos/foo/bar/statuses/69b59063470310ebbd88a9156325322a124e55a3" :
60
+ fmt .Fprintf (w , "{}" )
61
+ case "/api/v1/repos/foo/bar/commits/8a9156325322a124e55a369b59063470310ebbd8/statuses" :
62
+ fmt .Fprintf (w , "[]" )
63
+ case "/api/v1/repos/foo/bar/statuses/8a9156325322a124e55a369b59063470310ebbd8" :
64
+ fmt .Fprintf (w , "{}" )
65
+ default :
66
+ t .Logf ("unknown %s request at %s" , r .Method , r .URL .Path )
67
+ }
68
+ }
69
+
56
70
func TestNewGiteaBasic (t * testing.T ) {
57
- srv := newTestServer (t )
71
+ srv := newTestHTTPServer (t )
58
72
defer srv .Close ()
59
73
60
74
g , err := NewGitea ("kustomization/gitops-system/0c9c2e41" , srv .URL + "/foo/bar" , "foobar" , nil )
@@ -64,32 +78,57 @@ func TestNewGiteaBasic(t *testing.T) {
64
78
assert .Equal (t , g .BaseURL , srv .URL )
65
79
}
66
80
81
+ func TestNewGiteaWithCertPool (t * testing.T ) {
82
+ srv := newTestHTTPSServer (t )
83
+ defer srv .Close ()
84
+
85
+ certpool := x509 .NewCertPool ()
86
+ certpool .AddCert (srv .Certificate ())
87
+
88
+ g , err := NewGitea ("kustomization/gitops-system/0c9c2e41" , srv .URL + "/foo/bar" , "foobar" , certpool )
89
+ assert .NoError (t , err )
90
+ assert .Equal (t , g .Owner , "foo" )
91
+ assert .Equal (t , g .Repo , "bar" )
92
+ assert .Equal (t , g .BaseURL , srv .URL )
93
+ }
94
+
95
+ func TestNewGiteaNoCertificate (t * testing.T ) {
96
+ srv := newTestHTTPSServer (t )
97
+ defer srv .Close ()
98
+
99
+ certpool := x509 .NewCertPool ()
100
+
101
+ _ , err := NewGitea ("kustomization/gitops-system/0c9c2e41" , srv .URL + "/foo/bar" , "foobar" , certpool )
102
+ assert .Error (t , err )
103
+ assert .ErrorContains (t , err , "tls: failed to verify certificate: x509: certificate signed by unknown authority" )
104
+ }
105
+
67
106
func TestNewGiteaInvalidUrl (t * testing.T ) {
68
- srv := newTestServer (t )
107
+ srv := newTestHTTPServer (t )
69
108
defer srv .Close ()
70
109
71
110
_ , err := NewGitea ("kustomization/gitops-system/0c9c2e41" , srv .URL + "/foo/bar/baz" , "foobar" , nil )
72
111
assert .ErrorContains (t , err , "invalid repository id" )
73
112
}
74
113
75
114
func TestNewGiteaEmptyToken (t * testing.T ) {
76
- srv := newTestServer (t )
115
+ srv := newTestHTTPServer (t )
77
116
defer srv .Close ()
78
117
79
118
_ , err := NewGitea ("kustomization/gitops-system/0c9c2e41" , srv .URL + "/foo/bar" , "" , nil )
80
119
assert .ErrorContains (t , err , "gitea token cannot be empty" )
81
120
}
82
121
83
122
func TestNewGiteaEmptyCommitStatus (t * testing.T ) {
84
- srv := newTestServer (t )
123
+ srv := newTestHTTPServer (t )
85
124
defer srv .Close ()
86
125
87
126
_ , err := NewGitea ("" , srv .URL + "/foo/bar" , "foobar" , nil )
88
127
assert .ErrorContains (t , err , "commit status cannot be empty" )
89
128
}
90
129
91
130
func TestGitea_Post (t * testing.T ) {
92
- srv := newTestServer (t )
131
+ srv := newTestHTTPServer (t )
93
132
defer srv .Close ()
94
133
95
134
g , err := NewGitea ("kustomization/gitops-system/0c9c2e41" , srv .URL + "/foo/bar" , "foobar" , nil )
0 commit comments