@@ -23,22 +23,24 @@ import (
23
23
)
24
24
25
25
const (
26
- AccessControlAllowOrigin = "Access-Control-Allow-Origin"
27
- AccessControlAllowMethods = "Access-Control-Allow-Methods"
28
- AccessControlAllowHeaders = "Access-Control-Allow-Headers"
29
- AccessControlMaxAge = "Access-Control-Max-Age"
30
- AccessControlAllowCredential = "Access-Control-Allow-Credentials"
31
- AnnotationCorsEnable = "cors-enable"
32
- AnnotationCorsOrigin = "cors-allow-origin"
33
- AnnotationCorsMethods = "cors-allow-methods"
34
- AnnotationCorsHeaders = "cors-allow-headers"
35
- AnnotationCorsAge = "cors-max-age"
36
- AnnotationCorsCredential = "cors-allow-credentials"
37
- Star = "*"
26
+ AccessControlAllowOrigin = "Access-Control-Allow-Origin"
27
+ AccessControlAllowMethods = "Access-Control-Allow-Methods"
28
+ AccessControlAllowHeaders = "Access-Control-Allow-Headers"
29
+ AccessControlMaxAge = "Access-Control-Max-Age"
30
+ AccessControlAllowCredential = "Access-Control-Allow-Credentials"
31
+ AnnotationCorsEnable = "cors-enable"
32
+ AnnotationCorsOrigin = "cors-allow-origin"
33
+ AnnotationCorsMethods = "cors-allow-methods"
34
+ AnnotationCorsHeaders = "cors-allow-headers"
35
+ AnnotationCorsAge = "cors-max-age"
36
+ AnnotationCorsCredential = "cors-allow-credentials"
37
+ AnnotationsCorsRespondToOptions = "cors-respond-to-options"
38
+ Star = "*"
38
39
)
39
40
40
41
func (suite * CorsSuite ) Test_Configmap_Alone () {
41
42
suite .Run ("Default" , suite .Default (false ))
43
+ suite .Run ("DefaultWithNoContent" , suite .DefaultWithNoContent (false ))
42
44
suite .Run ("CorsOriginAlone" , suite .CorsOriginAlone (false ))
43
45
suite .Run ("CorsMethodsAlone" , suite .CorsMethodsAlone (false ))
44
46
suite .Run ("CorsMethodsHeadersAlone" , suite .CorsMethodsHeadersAlone (false ))
@@ -51,6 +53,7 @@ func (suite *CorsSuite) Test_Configmap_Alone() {
51
53
52
54
func (suite * CorsSuite ) Test_Ingress_Alone () {
53
55
suite .Run ("Default" , suite .Default (true ))
56
+ suite .Run ("DefaultWithNoContent" , suite .DefaultWithNoContent (true ))
54
57
suite .Run ("CorsOriginAlone" , suite .CorsOriginAlone (true ))
55
58
suite .Run ("CorsMethodsAlone" , suite .CorsMethodsAlone (true ))
56
59
suite .Run ("CorsMethodsHeadersAlone" , suite .CorsMethodsHeadersAlone (true ))
@@ -60,18 +63,31 @@ func (suite *CorsSuite) Test_Ingress_Alone() {
60
63
suite .Run ("CorsMethodsCredentialDisable" , suite .CorsMethodsCredentialDisable (true ))
61
64
}
62
65
63
- func (suite * CorsSuite ) eventuallyReturns (expecedHeaders , unexpectedHeaders http.Header ) {
66
+ func (suite * CorsSuite ) eventuallyReturns (expectedHeaders , unexpectedHeaders http.Header ) {
67
+ suite .eventuallyReturnsWithNoContentOption (expectedHeaders , unexpectedHeaders , false )
68
+ }
69
+
70
+ func (suite * CorsSuite ) eventuallyReturnsWithNoContentOption (expectedHeaders , unexpectedHeaders http.Header , noContent bool ) {
64
71
suite .Eventually (func () bool {
65
- res , cls , err := suite .client .Do ()
72
+ do := suite .client .Do
73
+ if noContent {
74
+ do = suite .client .DoOptions
75
+ }
76
+ res , cls , err := do ()
66
77
if err != nil {
67
78
suite .T ().Logf ("Connection ERROR: %s" , err .Error ())
68
79
return false
69
80
}
70
81
defer cls ()
82
+
71
83
if res .StatusCode == 503 {
72
84
return false
73
85
}
74
- for expectedHeader , expectedValues := range expecedHeaders {
86
+ if noContent && res .StatusCode != 204 {
87
+ return false
88
+ }
89
+
90
+ for expectedHeader , expectedValues := range expectedHeaders {
75
91
values , ok := res .Header [expectedHeader ]
76
92
if ! ok || len (values ) != 1 || values [0 ] != expectedValues [0 ] {
77
93
return false
@@ -122,6 +138,37 @@ func (suite *CorsSuite) Default(ingressCors bool) func() {
122
138
}
123
139
}
124
140
141
+ func (suite * CorsSuite ) DefaultWithNoContent (ingressCors bool ) func () {
142
+ return func () {
143
+ expectedHeaders := http.Header {
144
+ AccessControlAllowOrigin : {Star },
145
+ AccessControlAllowMethods : {Star },
146
+ AccessControlAllowHeaders : {Star },
147
+ }
148
+ unexpectedHeaders := http.Header {
149
+ AccessControlAllowCredential : {},
150
+ }
151
+ annotations := & suite .tmplData .IngAnnotations
152
+ if ! ingressCors {
153
+ annotations = & suite .tmplData .ConfigMapAnnotations
154
+ }
155
+ * annotations = []struct { Key , Value string }{
156
+ {AnnotationCorsEnable , q ("true" )},
157
+ {AnnotationsCorsRespondToOptions , q ("true" )},
158
+ }
159
+
160
+ yamlFile := "config/deploy.yaml.tmpl"
161
+ ns := suite .test .GetNS ()
162
+ if ! ingressCors {
163
+ yamlFile = "config/configmap.yaml.tmpl"
164
+ ns = ""
165
+ }
166
+ suite .Require ().NoError (suite .test .Apply (yamlFile , ns , suite .tmplData ))
167
+
168
+ suite .eventuallyReturnsWithNoContentOption (expectedHeaders , unexpectedHeaders , true )
169
+ }
170
+ }
171
+
125
172
func (suite * CorsSuite ) CorsOriginAlone (ingressCors bool ) func () {
126
173
return func () {
127
174
expectedHeaders := http.Header {
0 commit comments