/* * Copyright 2006-2008 Sxip Identity Corporation */ package org.openid4java.samples; import java.util.ArrayList; import java.util.List; import org.mortbay.jetty.Server; import org.mortbay.jetty.servlet.Context; import org.mortbay.jetty.servlet.ServletHolder; import org.openid4java.consumer.SampleConsumer; import org.openid4java.message.ParameterList; import org.openid4java.server.SampleServer; import org.openid4java.server.ServerException; import net.sourceforge.jwebunit.junit.WebTester; //import com.gargoylesoftware.htmlunit.Page; //import com.gargoylesoftware.htmlunit.WebClient; //import com.gargoylesoftware.htmlunit.html.HtmlForm; //import com.gargoylesoftware.htmlunit.html.HtmlPage; //import com.meterware.httpunit.HttpInternalErrorException; //import com.meterware.httpunit.WebConversation; //import com.meterware.httpunit.WebForm; //import com.meterware.httpunit.WebResponse; import junit.framework.TestCase; public class ConsumerAndProviderTest extends TestCase { private Server _server; private String _baseUrl; public ConsumerAndProviderTest(final String testName) throws Exception { super(testName); int servletPort = Integer.parseInt(System.getProperty("SERVLET_PORT", "8989")); _server = new Server(servletPort); Context context = new Context(_server, "/", Context.SESSIONS); _baseUrl = "http://localhost:" + servletPort; // + // context.getContextPath(); SampleConsumer consumer = new SampleConsumer(_baseUrl + "/loginCallback"); context.addServlet(new ServletHolder(new LoginServlet(consumer)), "/login"); context.addServlet(new ServletHolder(new LoginCallbackServlet(consumer)), "/loginCallback"); context.addServlet(new ServletHolder(new UserInfoServlet()), "/user"); SampleServer server = new SampleServer(_baseUrl + "/provider") { protected List userInteraction(ParameterList request) throws ServerException { List back = new ArrayList(); back.add("userSelectedClaimedId"); // userSelectedClaimedId back.add(Boolean.TRUE); // authenticatedAndApproved back.add("user@example.com"); // email return back; } }; context.addServlet(new ServletHolder(new ProviderServlet(server)), "/provider"); } public void setUp() throws Exception { _server.start(); } protected void tearDown() throws Exception { _server.stop(); _server.join(); } public void testCycleWithXrdsUser() throws Exception { HttpServletSupport.lastException = null; HttpServletSupport.count_ = 0; WebTester wc = new WebTester(); try { wc.setScriptingEnabled(false); wc.beginAt(_baseUrl + "/login"); wc.setTextField("openid_identifier", _baseUrl + "/user"); wc.submit(); wc.clickLink("login"); wc.assertTextPresent("success"); wc.assertTextPresent("emailFromFetch:user@example.com"); wc.assertTextPresent("emailFromSReg:user@example.com"); } catch (Exception exc) { System.err.println("last page before exception :" + wc.getPageSource()); if (HttpServletSupport.lastException != null) { throw HttpServletSupport.lastException; } else { throw exc; } } } public void testCycleWithHtmlUser() throws Exception { HttpServletSupport.lastException = null; HttpServletSupport.count_ = 0; WebTester wc = new WebTester(); try { wc.setScriptingEnabled(false); wc.beginAt(_baseUrl + "/login"); wc.setTextField("openid_identifier", _baseUrl + "/user?format=html"); wc.submit(); wc.clickLink("login"); wc.assertTextPresent("success"); wc.assertTextPresent("emailFromFetch:user@example.com"); wc.assertTextPresent("emailFromSReg:user@example.com"); } catch (Exception exc) { System.err.println("last page before exception :" + wc.getPageSource()); if (HttpServletSupport.lastException != null) { throw HttpServletSupport.lastException; } else { throw exc; } } } }