@ -207,6 +207,48 @@ func TestLoginViewRedirect(t *testing.T) {
appURL : "http://localhost:3000/" ,
status : 302 ,
} ,
{
desc : "non-Grafana URL without scheme" ,
url : "example.com" ,
redirectURL : "/" ,
appURL : "http://localhost:3000/" ,
status : 302 ,
} ,
{
desc : "non-Grafana URL without scheme" ,
url : "www.example.com" ,
redirectURL : "/" ,
appURL : "http://localhost:3000/" ,
status : 302 ,
} ,
{
desc : "URL path is a host with two leading slashes" ,
url : "//example.com" ,
redirectURL : "/" ,
appURL : "http://localhost:3000/" ,
status : 302 ,
} ,
{
desc : "URL path is a host with three leading slashes" ,
url : "///example.com" ,
redirectURL : "/" ,
appURL : "http://localhost:3000/" ,
status : 302 ,
} ,
{
desc : "URL path is an IP address with two leading slashes" ,
url : "//0.0.0.0" ,
redirectURL : "/" ,
appURL : "http://localhost:3000/" ,
status : 302 ,
} ,
{
desc : "URL path is an IP address with three leading slashes" ,
url : "///0.0.0.0" ,
redirectURL : "/" ,
appURL : "http://localhost:3000/" ,
status : 302 ,
} ,
}
for _ , c := range redirectCases {
@ -232,7 +274,7 @@ func TestLoginViewRedirect(t *testing.T) {
if c . status == 302 {
location , ok := sc . resp . Header ( ) [ "Location" ]
assert . True ( t , ok )
assert . Equal ( t , location [ 0 ] , c . redirectURL )
assert . Equal ( t , c . redirectURL , location [ 0 ] )
setCookie , ok := sc . resp . Header ( ) [ "Set-Cookie" ]
assert . True ( t , ok , "Set-Cookie exists" )
@ -333,6 +375,48 @@ func TestLoginPostRedirect(t *testing.T) {
appURL : "https://localhost:3000/" ,
err : login . ErrAbsoluteRedirectTo ,
} ,
{
desc : "invalid URL" ,
url : ":foo" ,
appURL : "http://localhost:3000/" ,
err : login . ErrInvalidRedirectTo ,
} ,
{
desc : "non-Grafana URL without scheme" ,
url : "example.com" ,
appURL : "http://localhost:3000/" ,
err : login . ErrForbiddenRedirectTo ,
} ,
{
desc : "non-Grafana URL without scheme" ,
url : "www.example.com" ,
appURL : "http://localhost:3000/" ,
err : login . ErrForbiddenRedirectTo ,
} ,
{
desc : "URL path is a host with two leading slashes" ,
url : "//example.com" ,
appURL : "http://localhost:3000/" ,
err : login . ErrForbiddenRedirectTo ,
} ,
{
desc : "URL path is a host with three leading slashes" ,
url : "///example.com" ,
appURL : "http://localhost:3000/" ,
err : login . ErrForbiddenRedirectTo ,
} ,
{
desc : "URL path is an IP address with two leading slashes" ,
url : "//0.0.0.0" ,
appURL : "http://localhost:3000/" ,
err : login . ErrForbiddenRedirectTo ,
} ,
{
desc : "URL path is an IP address with three leading slashes" ,
url : "///0.0.0.0" ,
appURL : "http://localhost:3000/" ,
err : login . ErrForbiddenRedirectTo ,
} ,
}
for _ , c := range redirectCases {