Package

Source Code of RedirectTest

import org.junit.Test;

import play.libs.URLs;
import play.mvc.Http.Request;
import play.mvc.Http.Response;
import play.test.FunctionalTest;

public class RedirectTest extends FunctionalTest {

  @Test
  public void redirectHttp_expectOk() {

    final Response response = GET("/redirector/index?target=http://google.com");
    assertStatus(302, response);
    final String location = response.headers.get("Location").value();

    assertEquals("http://google.com", location);

  }

  // prove fix of [#1557] - also support non-http redirects
  @Test
  public void redirectFtp_expectOk() {

    final Response response = GET("/redirector/index?target=ftp://google.com");
    assertStatus(302, response);
    final String location = response.headers.get("Location").value();

    assertEquals("ftp://google.com", location);

  }

  @Test
  public void redirectrelative_expectOk() {
    final Request req = newRequest();
    req.port = 2003;
    final Response response = GET(req, "/redirector/index?target=/someurl");
    assertStatus(302, response);
    final String location = response.headers.get("Location").value();

    // note: only works if port is not 80
    // in that case relative url is returned for ease of testing
    assertEquals("http://" + req.domain + ":" + req.port + "/someurl", location);

  }
 
  //[#1675] exponential redirect regression
  @Test
  public void timeSpendInRederect_expectContstant() {

    long shortUrlmSecs = timeRedirectRequest("result-a/");
    long longUrlmSecs =  timeRedirectRequest("result-abcdefghijklmnopq/");
    // on core2 duo timing used to be 30ms vs 2000ms - so afactor 2 seems reasonable
    // should be constant now
    String msg = String.format("long redirect takes exponentially longer %s vs %s", shortUrlmSecs, longUrlmSecs);
    assertTrue(msg, longUrlmSecs < 400 );
    assertTrue(msg, shortUrlmSecs < 400 );
  }
  //[#1675] make sure Action redirects still work
  @Test
  public void actionRedirect_expectOK() {

    final Request req = newRequest();
    req.port = 2003;
    final Response response = GET(req, "/redirector/index?target=Application.hello");
    assertStatus(302, response);
    final String location = response.headers.get("Location").value();

    // note: only works if port is not 80
    // in that case relative url is returned for ease of testing
    assertEquals("http://" + req.domain + ":" + req.port + "/sayHello", location);
   
  }


 
 

  private long timeRedirectRequest(String target){
    long start = System.currentTimeMillis();
    final Request req = newRequest();
    final Response response = GET(req, "/redirector/index?target=" + URLs.encodePart(target));
    assertStatus(302, response);   
    return( System.currentTimeMillis() - start);
  }

}
TOP

Related Classes of RedirectTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.