(t *testing.T)
| 385 | } |
| 386 | |
| 387 | func TestRedirect(t *testing.T) { |
| 388 | _, err := tc().SetRedirectPolicy(NoRedirectPolicy()).R().Get("/unlimited-redirect") |
| 389 | tests.AssertIsNil(t, err) |
| 390 | |
| 391 | _, err = tc().SetRedirectPolicy(MaxRedirectPolicy(3)).R().Get("/unlimited-redirect") |
| 392 | tests.AssertNotNil(t, err) |
| 393 | tests.AssertContains(t, err.Error(), "stopped after 3 redirects", true) |
| 394 | |
| 395 | _, err = tc().SetRedirectPolicy(MaxRedirectPolicy(20)).SetRedirectPolicy(DefaultRedirectPolicy()).R().Get("/unlimited-redirect") |
| 396 | tests.AssertNotNil(t, err) |
| 397 | tests.AssertContains(t, err.Error(), "stopped after 10 redirects", true) |
| 398 | |
| 399 | _, err = tc().SetRedirectPolicy(SameDomainRedirectPolicy()).R().Get("/redirect-to-other") |
| 400 | tests.AssertNotNil(t, err) |
| 401 | tests.AssertContains(t, err.Error(), "different domain name is not allowed", true) |
| 402 | |
| 403 | _, err = tc().SetRedirectPolicy(SameHostRedirectPolicy()).R().Get("/redirect-to-other") |
| 404 | tests.AssertNotNil(t, err) |
| 405 | tests.AssertContains(t, err.Error(), "different host name is not allowed", true) |
| 406 | |
| 407 | _, err = tc().SetRedirectPolicy(AllowedHostRedirectPolicy("localhost", "127.0.0.1")).R().Get("/redirect-to-other") |
| 408 | tests.AssertNotNil(t, err) |
| 409 | tests.AssertContains(t, err.Error(), "redirect host [dummy.local] is not allowed", true) |
| 410 | |
| 411 | _, err = tc().SetRedirectPolicy(AllowedDomainRedirectPolicy("localhost", "127.0.0.1")).R().Get("/redirect-to-other") |
| 412 | tests.AssertNotNil(t, err) |
| 413 | tests.AssertContains(t, err.Error(), "redirect domain [dummy.local] is not allowed", true) |
| 414 | |
| 415 | c := tc().SetRedirectPolicy(AlwaysCopyHeaderRedirectPolicy("Authorization")) |
| 416 | newHeader := make(http.Header) |
| 417 | oldHeader := make(http.Header) |
| 418 | oldHeader.Set("Authorization", "test") |
| 419 | c.GetClient().CheckRedirect(&http.Request{ |
| 420 | Header: newHeader, |
| 421 | }, []*http.Request{{ |
| 422 | Header: oldHeader, |
| 423 | }}) |
| 424 | tests.AssertEqual(t, "test", newHeader.Get("Authorization")) |
| 425 | } |
| 426 | |
| 427 | func TestSensitiveHeadersRedirectPolicy(t *testing.T) { |
| 428 | // Cross-domain redirect: sensitive header should be stripped |
nothing calls this directly
no test coverage detected
searching dependent graphs…