/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.sun.dft.glassfish.lb.redirect.authPassthroughEnabledSettings; import com.meterware.httpunit.GetMethodWebRequest; import com.meterware.httpunit.WebConversation; import com.meterware.httpunit.WebRequest; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; import com.meterware.httpunit.WebResponse; import com.sun.dft.glassfish.config.BaseTestCase; import com.sun.dft.glassfish.helpers.HttpMessageLogger; import com.sun.dft.glassfish.utils.TestUtils; import com.sun.net.ssl.HostnameVerifier; import org.testng.Assert; import org.testng.annotations.AfterTest; /** * * @author root */ public class HttpServiceTrue extends BaseTestCase { @BeforeTest protected void setUp() throws Exception { com.sun.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() { public boolean verify(String string, String string1) { return true; } }); asadminHelper.deploy("glassfish-samples/RedirectApp.war", TestUtils.getDefaultClusterName()); } @Test(description = "Test Redirection via Servlet - HttpServletResponse.sendRedirect() method - http request") public void testLbHttpRequestRedirectionViaServlet() throws Exception { String webserverHostHttpsPort = webserverHelper.getHost() + ":" + webserverHelper.getHttpsPort(); String request1 = "https://" + webserverHostHttpsPort + "/RedirectApp/RedirectServlet"; // need to explicity set https-routing to false just in case a previous test left it as true. asadminHelper.set("lb-configs.lb-config.gf-ha-qe-lb-config.https-routing", "false"); checkPoint("Setting Https routing to false"); asadminHelper.set("lb-configs.lb-config.gf-ha-qe-lb-config.property.rewrite-location", "false"); checkPoint("Rewrite location is set to false"); asadminHelper.set(TestUtils.getDefaultClusterName() + "-config.http-service.property.authPassthroughEnabled", "true"); checkPoint("Setting authPassthroughEnabled for all listeners to true"); asadminHelper.stopCluster(); asadminHelper.startCluster(); checkPoint("Restarting cluster since dynamic reconfig is not available after setting authPassthroughEnabled "); lbconfigHelper.lbReconfig(); checkPoint("Servlet based redirection - uses HttpServletResponse.sendRedirect() method"); checkPoint("** Sending Request 1 to webserver > " + request1); WebConversation webConversation = new WebConversation(); WebRequest webRequest = new GetMethodWebRequest(request1); WebResponse response = null; try { TestUtils.sleep(5000, "5 seconds should be sufficiently large for redirection to complete"); response = webConversation.getResponse(webRequest); HttpMessageLogger.logHttpRequestResponse(webConversation, webRequest, response); } catch (Exception e) { checkPoint("Response is forbidden : " + e.getMessage()); } checkPoint("Expecting Redirection to Pass and to obtain a response with scheme https."); Assert.assertTrue(response.getText().contains("https")); checkPoint("Setting Rewrite location back to true"); checkPoint("Unsetting authPassthroughEnabled for all listeners"); } @AfterTest public void tearDown() { asadminHelper.set("lb-configs.lb-config.gf-ha-qe-lb-config.property.rewrite-location", "true"); asadminHelper.set("configs.config." + TestUtils.getDefaultClusterName() + "-config.http-service.property.authPassthroughEnabled", ""); asadminHelper.stopCluster(); asadminHelper.startCluster(); asadminHelper.undeploy("RedirectApp", TestUtils.getDefaultClusterName()); } }