Skip to content

Commit

Permalink
Update unit-tests and remove port whenever possible
Browse files Browse the repository at this point in the history
  • Loading branch information
ciarams87 committed Jul 6, 2023
1 parent 8fde1dd commit a4e9fed
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 15 deletions.
7 changes: 6 additions & 1 deletion internal/nginx/config/servers.go
Original file line number Diff line number Diff line change
Expand Up @@ -205,10 +205,15 @@ func createReturnValForRedirectFilter(filter *v1beta1.HTTPRequestRedirectFilter,
scheme := "$scheme"
if filter.Scheme != nil {
scheme = *filter.Scheme
// Don't specify the port in the return url if the scheme is
// well known and the port is already set to the correct well known port
if (port == 80 && scheme == "http") || (port == 443 && scheme == "https") {
hostnamePort = hostname
}
if filter.Port == nil {
// Don't specify the port in the return url if the scheme is
// well known and the port is not specified by the user
if *filter.Scheme == "http" || *filter.Scheme == "https" {
if scheme == "http" || scheme == "https" {
hostnamePort = hostname
}
}
Expand Down
56 changes: 42 additions & 14 deletions internal/nginx/config/servers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -910,23 +910,36 @@ func TestCreateReturnValForRedirectFilter(t *testing.T) {
Scheme: helpers.GetPointer("https"),
Hostname: helpers.GetPointer(v1beta1.PreciseHostname("foo.example.com")),
Port: (*v1beta1.PortNumber)(helpers.GetInt32Pointer(2022)),
StatusCode: helpers.GetPointer(101),
StatusCode: helpers.GetPointer(301),
},
listenerPort: listenerPortCustom,
expected: &http.Return{
Code: 101,
Code: 301,
Body: "https://foo.example.com:2022$request_uri",
},
msg: "all fields are set",
},
{
filter: &v1beta1.HTTPRequestRedirectFilter{
Scheme: helpers.GetPointer("https"),
Hostname: helpers.GetPointer(v1beta1.PreciseHostname("foo.example.com")),
StatusCode: helpers.GetPointer(301),
},
listenerPort: listenerPortCustom,
expected: &http.Return{
Code: 301,
Body: "https://foo.example.com$request_uri",
},
msg: "listenerPort is custom, scheme is set, no port",
},
{
filter: &v1beta1.HTTPRequestRedirectFilter{
Hostname: helpers.GetPointer(v1beta1.PreciseHostname("foo.example.com")),
StatusCode: helpers.GetPointer(101),
StatusCode: helpers.GetPointer(301),
},
listenerPort: listenerPortHTTPS,
expected: &http.Return{
Code: 101,
Code: 301,
Body: "$scheme://foo.example.com:443$request_uri",
},
msg: "no scheme, listenerPort https, no port is set",
Expand All @@ -935,11 +948,11 @@ func TestCreateReturnValForRedirectFilter(t *testing.T) {
filter: &v1beta1.HTTPRequestRedirectFilter{
Scheme: helpers.GetPointer("https"),
Hostname: helpers.GetPointer(v1beta1.PreciseHostname("foo.example.com")),
StatusCode: helpers.GetPointer(101),
StatusCode: helpers.GetPointer(301),
},
listenerPort: listenerPortHTTPS,
expected: &http.Return{
Code: 101,
Code: 301,
Body: "https://foo.example.com$request_uri",
},
msg: "scheme is https, listenerPort https, no port is set",
Expand All @@ -948,27 +961,42 @@ func TestCreateReturnValForRedirectFilter(t *testing.T) {
filter: &v1beta1.HTTPRequestRedirectFilter{
Scheme: helpers.GetPointer("http"),
Hostname: helpers.GetPointer(v1beta1.PreciseHostname("foo.example.com")),
StatusCode: helpers.GetPointer(101),
StatusCode: helpers.GetPointer(301),
},
listenerPort: listenerPortHTTP,
expected: &http.Return{
Code: 101,
Code: 301,
Body: "http://foo.example.com$request_uri",
},
msg: "scheme is http, listenerPort http, no port is set",
},
{
filter: &v1beta1.HTTPRequestRedirectFilter{
Scheme: helpers.GetPointer("custom"),
Scheme: helpers.GetPointer("http"),
Hostname: helpers.GetPointer(v1beta1.PreciseHostname("foo.example.com")),
StatusCode: helpers.GetPointer(101),
Port: (*v1beta1.PortNumber)(helpers.GetInt32Pointer(80)),
StatusCode: helpers.GetPointer(301),
},
listenerPort: listenerPortHTTP,
listenerPort: listenerPortCustom,
expected: &http.Return{
Code: 301,
Body: "http://foo.example.com$request_uri",
},
msg: "scheme is http, port http",
},
{
filter: &v1beta1.HTTPRequestRedirectFilter{
Scheme: helpers.GetPointer("https"),
Hostname: helpers.GetPointer(v1beta1.PreciseHostname("foo.example.com")),
Port: (*v1beta1.PortNumber)(helpers.GetInt32Pointer(443)),
StatusCode: helpers.GetPointer(301),
},
listenerPort: listenerPortCustom,
expected: &http.Return{
Code: 101,
Body: "custom://foo.example.com:80$request_uri",
Code: 301,
Body: "https://foo.example.com$request_uri",
},
msg: "scheme is custom, listenerPort http, no port is set",
msg: "scheme is https, port https",
},
}

Expand Down

0 comments on commit a4e9fed

Please sign in to comment.