@@ -182,7 +182,7 @@ func TestIsValidRedirect(t *testing.T) {
182182 opts.ClientSecret = "fgkdsgj"
183183 opts.CookieSecret = "ljgiogbj"
184184 // Should match domains that are exactly foo.bar and any subdomain of bar.foo
185− opts.WhitelistDomains = []string{"foo.bar", ".bar.foo"}
185+ opts.WhitelistDomains = []string{"foo.bar", ".bar.foo", "port.bar:8080", ".sub.port.bar:8080"}
186186 opts.Validate()
187187
188188 proxy := NewOAuthProxy(opts, func(string) bool { return true })
@@ -226,11 +226,26 @@ func TestIsValidRedirect(t *testing.T) {
226226 invalidHTTPS2 := proxy.IsValidRedirect("https://evil.corp/redirect?rd=foo.bar")
227227 assert.Equal(t, false, invalidHTTPS2)
228228
229− validPort := proxy.IsValidRedirect("http://foo.bar:3838/redirect")
230− assert.Equal(t, true, validPort)
229+ invalidPort := proxy.IsValidRedirect("https://evil.corp:3838/redirect")
230+ assert.Equal(t, false, invalidPort)
231231
232− validPortSubdomain := proxy.IsValidRedirect("http://baz.bar.foo:3838/redirect")
233− assert.Equal(t, true, validPortSubdomain)
232+ validAnyPort := proxy.IsValidRedirect("http://foo.bar:3838/redirect")
233+ assert.Equal(t, true, validAnyPort)
234+
235+ validAnyPortSubdomain := proxy.IsValidRedirect("http://baz.bar.foo:3838/redirect")
236+ assert.Equal(t, true, validAnyPortSubdomain)
237+
238+ validSpecificPort := proxy.IsValidRedirect("http://port.bar:8080/redirect")
239+ assert.Equal(t, true, validSpecificPort)
240+
241+ invalidSpecificPort := proxy.IsValidRedirect("http://port.bar:3838/redirect")
242+ assert.Equal(t, false, invalidSpecificPort)
243+
244+ validSpecificPortSubdomain := proxy.IsValidRedirect("http://foo.sub.port.bar:8080/redirect")
245+ assert.Equal(t, true, validSpecificPortSubdomain)
246+
247+ invalidSpecificPortSubdomain := proxy.IsValidRedirect("http://foo.sub.port.bar:3838/redirect")
248+ assert.Equal(t, false, invalidSpecificPortSubdomain)
234249}
235250
236251type TestProvider struct {