1
+ //go:build e2e
2
+
1
3
/*
2
4
Copyright 2023 The Flux CD contributors.
3
5
@@ -17,49 +19,63 @@ limitations under the License.
17
19
package gitea
18
20
19
21
import (
22
+ "net/url"
23
+ "os"
24
+ "regexp"
20
25
"testing"
21
26
22
27
"github.com/fluxcd/go-git-providers/gitprovider"
23
28
)
24
29
25
30
func Test_DomainVariations (t * testing.T ) {
31
+
32
+ giteaBaseUrl = "http://try.gitea.io"
33
+ if giteaBaseUrlVar := os .Getenv ("GITEA_BASE_URL" ); giteaBaseUrlVar != "" {
34
+ giteaBaseUrl = giteaBaseUrlVar
35
+ }
36
+
37
+ u , err := url .Parse (giteaBaseUrl )
38
+ if err != nil {
39
+ t .Fatalf ("failed parsing base URL %q: %s" , giteaBaseUrl , err )
40
+ }
41
+
26
42
tests := []struct {
27
- name string
28
- opts gitprovider.ClientOption
29
- want string
30
- expectedErrs [] error
43
+ name string
44
+ opts gitprovider.ClientOption
45
+ want string
46
+ expectedErrPattern string
31
47
}{
32
48
{
33
- name : "try.gitea.io domain" ,
34
- opts : gitprovider .WithDomain ("try.gitea.io" ),
35
- want : "try.gitea.io " ,
49
+ name : "custom domain without protocol uses HTTPS by default " ,
50
+ opts : gitprovider .WithDomain (u . Host ),
51
+ expectedErrPattern : "http: server gave HTTP response to HTTPS client " ,
36
52
},
37
53
{
38
- name : "custom domain without protocol" ,
39
- opts : gitprovider .WithDomain ("try.gitea.io" ),
40
- want : "try.gitea.io" ,
41
- },
42
- {
43
- name : "custom domain with https protocol" ,
44
- opts : gitprovider .WithDomain ("https://try.gitea.io" ),
45
- want : "https://try.gitea.io" ,
46
- },
47
- {
48
- name : "custom domain with http protocol" ,
49
- opts : gitprovider .WithDomain ("http://try.gitea.io" ),
50
- want : "http://try.gitea.io" ,
54
+ name : "custom domain with scheme" ,
55
+ opts : gitprovider .WithDomain (giteaBaseUrl ),
56
+ want : giteaBaseUrl ,
51
57
},
52
58
}
53
59
for _ , tt := range tests {
54
60
t .Run (tt .name , func (t * testing.T ) {
55
61
c1 , err := NewClient ("token" , tt .opts )
56
62
if err != nil {
57
- t .Fatal (err )
63
+ if tt .expectedErrPattern == "" {
64
+ t .Fatalf ("unexpected error: %s" , err )
65
+ }
66
+ m , mErr := regexp .MatchString (tt .expectedErrPattern , err .Error ())
67
+ if mErr != nil {
68
+ t .Fatalf ("unexpected error from matching error: %s" , mErr )
69
+ }
70
+ if ! m {
71
+ t .Fatalf ("unexpected error %q; expected %q" , err , tt .expectedErrPattern )
72
+ }
73
+ return // all assertions passed
74
+ } else if tt .expectedErrPattern != "" {
75
+ t .Fatalf ("expected error %q but got none" , tt .expectedErrPattern )
58
76
}
59
- assertEqual (t , tt .want , c1 .SupportedDomain ())
60
77
61
- c2 , _ := NewClient ("token" , tt .opts )
62
- assertEqual (t , tt .want , c2 .SupportedDomain ())
78
+ assertEqual (t , tt .want , c1 .SupportedDomain ())
63
79
})
64
80
}
65
81
}
0 commit comments