@@ -93,6 +93,44 @@ func TestRobotsTxt(t *testing.T) {
93 assert.Equal(t, "User-agent: *\nDisallow: /", rw.Body.String())
93 assert.Equal(t, "User-agent: *\nDisallow: /", rw.Body.String())
96+func TestIsValidRedirect(t *testing.T) {
98+ opts.ClientID = "bazquux"
99+ opts.ClientSecret = "foobar"
100+ opts.CookieSecret = "xyzzyplugh"
101+ opts.WhitelistDomains = []string{"foo.bar"}
104+ proxy := NewOAuthProxy(opts, func(string) bool { return true })
106+ noRD := proxy.IsValidRedirect("")
107+ assert.Equal(t, false, noRD)
109+ singleSlash := proxy.IsValidRedirect("/redirect")
110+ assert.Equal(t, true, singleSlash)
112+ doubleSlash := proxy.IsValidRedirect("//redirect")
113+ assert.Equal(t, false, doubleSlash)
115+ validHTTP := proxy.IsValidRedirect("http://baz.foo.bar/redirect")
116+ assert.Equal(t, true, validHTTP)
118+ validHTTPS := proxy.IsValidRedirect("https://baz.foo.bar/redirect")
119+ assert.Equal(t, true, validHTTPS)
121+ invalidHTTP1 := proxy.IsValidRedirect("http://foo.bar.evil.corp/redirect")
122+ assert.Equal(t, false, invalidHTTP1)
124+ invalidHTTPS1 := proxy.IsValidRedirect("https://foo.bar.evil.corp/redirect")
125+ assert.Equal(t, false, invalidHTTPS1)
127+ invalidHTTP2 := proxy.IsValidRedirect("http://evil.corp/redirect?rd=foo.bar")
128+ assert.Equal(t, false, invalidHTTP2)
130+ invalidHTTPS2 := proxy.IsValidRedirect("https://evil.corp/redirect?rd=foo.bar")
131+ assert.Equal(t, false, invalidHTTPS2)
96type TestProvider struct {
134type TestProvider struct {
97 *providers.ProviderData
135 *providers.ProviderData
98 EmailAddress string
136 EmailAddress string