/* * Copyright 2001-2008 Geert Bevin <gbevin[remove] at uwyn dot com> and * Steven Grimm <koreth[remove] at midwinter dot com> * Licensed under the Apache License, Version 2.0 (the "License") * $Id: TestMemoryAuthenticated.java 3918 2008-04-14 17:35:35Z gbevin $ */ package com.uwyn.rife.authentication.elements; import com.meterware.httpunit.GetMethodWebRequest; import com.meterware.httpunit.WebConversation; import com.meterware.httpunit.WebForm; import com.meterware.httpunit.WebRequest; import com.meterware.httpunit.WebResponse; import com.uwyn.rife.TestCaseServerside; import com.uwyn.rife.engine.SiteBuilder; import com.uwyn.rife.resources.ResourceFinderClasspath; import com.uwyn.rife.test.MockConversation; import com.uwyn.rife.test.MockForm; import com.uwyn.rife.test.MockRequest; import com.uwyn.rife.test.MockResponse; import com.uwyn.rife.test.ParsedHtml; import com.uwyn.rife.tools.ExceptionUtils; public class TestMemoryAuthenticated extends TestCaseServerside { public TestMemoryAuthenticated(int siteType, String name) { super(siteType, name); } public void testMemoryAuthenticatedBasicInput() throws Exception { setupSite("site/authentication_memory_input.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/basic"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "guest"); form.setParameter("password", "guestpass"); response = form.submit(); assertEquals(0, response.getForms().length); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/basic"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "gbevin"); form.setParameter("password", "yeolpass"); response = form.submit(); assertEquals(0, response.getForms().length); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/basic"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "invalid"); form.setParameter("password", "invalid"); response = form.submit(); assertEquals(1, response.getForms().length); } public void testMemoryAuthenticatedBasicCookie() throws Exception { setupSite("site/authentication_memory_cookie.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/basic"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "guest"); form.setParameter("password", "guestpass"); response = form.submit(); assertEquals("authid", response.getNewCookieNames()[0]); assertEquals(0, response.getForms().length); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/basic"); assertEquals(0, response.getForms().length); conversation = new WebConversation(); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/basic"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "gbevin"); form.setParameter("password", "yeolpass"); response = form.submit(); assertEquals("authid", response.getNewCookieNames()[0]); assertEquals(0, response.getForms().length); conversation = new WebConversation(); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/basic"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "invalid"); form.setParameter("password", "invalid"); response = form.submit(); assertEquals(0, response.getNewCookieNames().length); assertEquals(1, response.getForms().length); } public void testMemoryAuthenticatedXhtmlInput() throws Exception { setupSite("site/authentication_memory_input.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/xhtml"); response = conversation.getResponse(request); assertTrue(response.getText().indexOf("This is XHtml :") != -1); form = response.getForms()[0]; form.setParameter("login", "guest"); form.setParameter("password", "guestpass"); response = form.submit(); assertEquals(0, response.getForms().length); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/xhtml"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "gbevin"); form.setParameter("password", "yeolpass"); response = form.submit(); assertEquals(0, response.getForms().length); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/xhtml"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "invalid"); form.setParameter("password", "invalid"); response = form.submit(); assertEquals(1, response.getForms().length); } public void testMemoryAuthenticatedXhtmlCookie() throws Exception { setupSite("site/authentication_memory_cookie.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/xhtml"); response = conversation.getResponse(request); assertTrue(response.getText().indexOf("This is XHtml :") != -1); form = response.getForms()[0]; form.setParameter("login", "guest"); form.setParameter("password", "guestpass"); response = form.submit(); assertEquals("authid", response.getNewCookieNames()[0]); assertEquals(0, response.getForms().length); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/xhtml"); assertEquals(0, response.getForms().length); conversation = new WebConversation(); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/xhtml"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "gbevin"); form.setParameter("password", "yeolpass"); response = form.submit(); assertEquals("authid", response.getNewCookieNames()[0]); assertEquals(0, response.getForms().length); conversation = new WebConversation(); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/xhtml"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "invalid"); form.setParameter("password", "invalid"); response = form.submit(); assertEquals(0, response.getNewCookieNames().length); assertEquals(1, response.getForms().length); } public void testMemoryAuthenticatedEncryptedInput() throws Exception { setupSite("site/authentication_memory_input.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/basic"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "guest"); form.setParameter("password", "guestpass"); response = form.submit(); assertEquals(0, response.getForms().length); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/basic"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "gbevinencrypted"); form.setParameter("password", "yeolpass"); response = form.submit(); assertEquals(0, response.getForms().length); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/basic"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "guestencrypted"); form.setParameter("password", "guestpass"); response = form.submit(); assertEquals(0, response.getForms().length); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/basic"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "gbevin"); form.setParameter("password", "yeolpass"); response = form.submit(); assertEquals(0, response.getForms().length); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/basic"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "invalid"); form.setParameter("password", "invalid"); response = form.submit(); assertEquals(1, response.getForms().length); } public void testMemoryAuthenticatedEncryptedCookie() throws Exception { setupSite("site/authentication_memory_cookie.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/basic"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "guest"); form.setParameter("password", "guestpass"); response = form.submit(); assertEquals("authid", response.getNewCookieNames()[0]); assertEquals(0, response.getForms().length); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/basic"); assertEquals(0, response.getForms().length); conversation = new WebConversation(); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/basic"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "gbevinencrypted"); form.setParameter("password", "yeolpass"); response = form.submit(); assertEquals("authid", response.getNewCookieNames()[0]); assertEquals(0, response.getForms().length); conversation = new WebConversation(); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/basic"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "guestencrypted"); form.setParameter("password", "guestpass"); response = form.submit(); assertEquals("authid", response.getNewCookieNames()[0]); assertEquals(0, response.getForms().length); conversation = new WebConversation(); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/basic"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "gbevin"); form.setParameter("password", "yeolpass"); response = form.submit(); assertEquals("authid", response.getNewCookieNames()[0]); assertEquals(0, response.getForms().length); conversation = new WebConversation(); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/basic"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "invalid"); form.setParameter("password", "invalid"); response = form.submit(); assertEquals(0, response.getNewCookieNames().length); assertEquals(1, response.getForms().length); } public void testMemoryAuthenticatedOtheridInput() throws Exception { setupSite("site/authentication_memory_input.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; String auth_id; request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/basic"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "guest"); form.setParameter("password", "guestpass"); response = form.submit(); assertEquals(0, response.getForms().length); auth_id = response.getTitle(); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/basic"); request.setParameter("authid", auth_id); response = conversation.getResponse(request); assertEquals(0, response.getForms().length); assertEquals(auth_id, response.getTitle()); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/otherid"); request.setParameter("authid", auth_id); response = conversation.getResponse(request); assertEquals(1, response.getForms().length); assertTrue(!auth_id.equals(response.getTitle())); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/otherid"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "guest"); form.setParameter("password", "guestpass"); response = form.submit(); assertEquals(0, response.getForms().length); auth_id = response.getTitle(); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/otherid"); request.setParameter("authid", auth_id); response = conversation.getResponse(request); assertEquals(0, response.getForms().length); assertEquals(auth_id, response.getTitle()); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/basic"); request.setParameter("authid", auth_id); response = conversation.getResponse(request); assertEquals(1, response.getForms().length); assertTrue(!auth_id.equals(response.getTitle())); } public void testMemoryAuthenticatedOtheridCookie() throws Exception { SiteBuilder builder = new SiteBuilder("site/authentication_memory_cookie.xml", ResourceFinderClasspath.getInstance()); MockConversation conversation = new MockConversation(builder.getSite()); MockResponse response; MockForm form; ParsedHtml parsed; String auth_id; response = conversation.doRequest("/authentication/memory/basic"); parsed = response.getParsedHtml(); form = parsed.getForms().get(0); form.setParameter("login", "guest"); form.setParameter("password", "guestpass"); response = form.submit(); parsed = response.getParsedHtml(); assertEquals(0, parsed.getForms().size()); assertEquals("authid", response.getNewCookieNames().get(0)); auth_id = conversation.getCookieValue("authid"); conversation = new MockConversation(builder.getSite()); conversation.addCookie("authid", auth_id); response = conversation.doRequest("/authentication/memory/basic"); parsed = response.getParsedHtml(); assertEquals(0, parsed.getForms().size()); auth_id = parsed.getTitle(); conversation = new MockConversation(builder.getSite()); conversation.addCookie("authid", auth_id); response = conversation.doRequest("/authentication/memory/otherid"); parsed = response.getParsedHtml(); assertEquals(0, response.getNewCookieNames().size()); assertEquals(1, parsed.getForms().size()); conversation = new MockConversation(builder.getSite()); conversation.addCookie("authid", auth_id); response = conversation.doRequest("/authentication/memory/otherid"); parsed = response.getParsedHtml(); form = parsed.getForms().get(0); form.setParameter("login", "guest"); form.setParameter("password", "guestpass"); response = form.submit(); parsed = response.getParsedHtml(); assertEquals(0, parsed.getForms().size()); assertEquals("authid", response.getNewCookieNames().get(0)); auth_id = conversation.getCookieValue("authid"); conversation = new MockConversation(builder.getSite()); conversation.addCookie("authid", auth_id); response = conversation.doRequest("/authentication/memory/otherid"); parsed = response.getParsedHtml(); assertEquals(0, parsed.getForms().size()); response = conversation.doRequest("/authentication/memory/basic"); parsed = response.getParsedHtml(); assertEquals(1, parsed.getForms().size()); } public void testMemoryAuthenticatedRoleInput() throws Exception { setupSite("site/authentication_memory_input.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/role"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "guest"); form.setParameter("password", "guestpass"); response = form.submit(); assertEquals(1, response.getForms().length); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/role"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "gbevin"); form.setParameter("password", "yeolpass"); response = form.submit(); assertEquals(0, response.getForms().length); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/role2"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "gbevin"); form.setParameter("password", "yeolpass"); response = form.submit(); assertEquals(0, response.getForms().length); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/role"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "johndoe"); form.setParameter("password", "thepassofbass"); response = form.submit(); assertEquals(1, response.getForms().length); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/role2"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "johndoe"); form.setParameter("password", "thepassofbass"); response = form.submit(); assertEquals(0, response.getForms().length); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/role"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "invalid"); form.setParameter("password", "invalid"); response = form.submit(); assertEquals(1, response.getForms().length); } public void testMemoryAuthenticatedRoleCookie() throws Exception { setupSite("site/authentication_memory_cookie.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/role"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "guest"); form.setParameter("password", "guestpass"); response = form.submit(); assertEquals(0, response.getNewCookieNames().length); assertEquals(1, response.getForms().length); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/role"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "gbevin"); form.setParameter("password", "yeolpass"); response = form.submit(); assertEquals("authid", response.getNewCookieNames()[0]); assertEquals(0, response.getForms().length); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/role"); assertEquals(0, response.getForms().length); conversation = new WebConversation(); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/role2"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "gbevin"); form.setParameter("password", "yeolpass"); response = form.submit(); assertEquals("authid", response.getNewCookieNames()[0]); assertEquals(0, response.getForms().length); conversation = new WebConversation(); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/role"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "johndoe"); form.setParameter("password", "thepassofbass"); response = form.submit(); assertEquals(0, response.getNewCookieNames().length); assertEquals(1, response.getForms().length); conversation = new WebConversation(); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/role2"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "johndoe"); form.setParameter("password", "thepassofbass"); response = form.submit(); assertEquals("authid", response.getNewCookieNames()[0]); assertEquals(0, response.getForms().length); conversation = new WebConversation(); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/role"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "invalid"); form.setParameter("password", "invalid"); response = form.submit(); assertEquals(0, response.getNewCookieNames().length); assertEquals(1, response.getForms().length); } public void testMemoryAuthenticatedRoleIsolationInput() throws Exception { setupSite("site/authentication_memory_input.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; String auth_id = null; request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/role"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "gbevin"); form.setParameter("password", "yeolpass"); response = form.submit(); assertEquals(0, response.getForms().length); auth_id = response.getTitle(); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/role"); request.setParameter("authid", auth_id); response = conversation.getResponse(request); assertEquals(auth_id, response.getTitle()); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/role2"); request.setParameter("authid", auth_id); response = conversation.getResponse(request); assertEquals(auth_id, response.getTitle()); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/role2"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "johndoe"); form.setParameter("password", "thepassofbass"); response = form.submit(); assertEquals(0, response.getForms().length); auth_id = response.getTitle(); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/role2"); request.setParameter("authid", auth_id); response = conversation.getResponse(request); assertEquals(auth_id, response.getTitle()); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/role"); request.setParameter("authid", auth_id); response = conversation.getResponse(request); assertEquals(1, response.getForms().length); } public void testMemoryAuthenticatedRoleIsolationCookie() throws Exception { SiteBuilder builder = new SiteBuilder("site/authentication_memory_cookie.xml", ResourceFinderClasspath.getInstance()); MockConversation conversation = new MockConversation(builder.getSite()); MockResponse response; MockForm form; ParsedHtml parsed; String auth_id; response = conversation.doRequest("/authentication/memory/role"); parsed = response.getParsedHtml(); form = parsed.getForms().get(0); form.setParameter("login", "gbevin"); form.setParameter("password", "yeolpass"); response = form.submit(); parsed = response.getParsedHtml(); assertEquals(0, parsed.getForms().size()); assertEquals("authid", response.getNewCookieNames().get(0)); auth_id = conversation.getCookieValue("authid"); conversation = new MockConversation(builder.getSite()); conversation.addCookie("authid", auth_id); response = conversation.doRequest("/authentication/memory/role"); parsed = response.getParsedHtml(); assertEquals(0, parsed.getForms().size()); conversation = new MockConversation(builder.getSite()); conversation.addCookie("authid", auth_id); response = conversation.doRequest("/authentication/memory/role2"); parsed = response.getParsedHtml(); assertEquals(0, parsed.getForms().size()); conversation = new MockConversation(builder.getSite()); response = conversation.doRequest("/authentication/memory/role2"); parsed = response.getParsedHtml(); form = parsed.getForms().get(0); form.setParameter("login", "johndoe"); form.setParameter("password", "thepassofbass"); response = form.submit(); parsed = response.getParsedHtml(); assertEquals(0, parsed.getForms().size()); assertEquals("authid", response.getNewCookieNames().get(0)); auth_id = conversation.getCookieValue("authid"); conversation = new MockConversation(builder.getSite()); conversation.addCookie("authid", auth_id); response = conversation.doRequest("/authentication/memory/role2"); parsed = response.getParsedHtml(); assertEquals(0, parsed.getForms().size()); conversation = new MockConversation(builder.getSite()); conversation.addCookie("authid", auth_id); response = conversation.doRequest("/authentication/memory/role"); parsed = response.getParsedHtml(); assertEquals(1, parsed.getForms().size()); } public void testMemoryAuthenticatedSessiondurationInput() throws Exception { setupSite("site/authentication_memory_input.xml"); WebConversation conversation = new WebConversation(); WebRequest request = null; WebResponse response = null; WebForm form = null; String auth_id; request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/sessionduration"); response = conversation.getResponse(request); form = response.getForms()[0]; form.setParameter("login", "guest"); form.setParameter("password", "guestpass"); response = form.submit(); assertEquals(0, response.getForms().length); auth_id = response.getTitle(); request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/sessionduration"); request.setParameter("authid", auth_id); response = conversation.getResponse(request); assertEquals(0, response.getForms().length); assertEquals(auth_id, response.getTitle()); try { Thread.sleep(2000); } catch (InterruptedException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } request = new GetMethodWebRequest("http://localhost:8181/authentication/memory/sessionduration"); request.setParameter("authid", auth_id); response = conversation.getResponse(request); assertEquals(1, response.getForms().length); } public void testMemoryAuthenticatedSessiondurationCookie() throws Exception { SiteBuilder builder = new SiteBuilder("site/authentication_memory_cookie.xml", ResourceFinderClasspath.getInstance()); MockConversation conversation = new MockConversation(builder.getSite()); MockResponse response; MockForm form; ParsedHtml parsed; String auth_id; response = conversation.doRequest("/authentication/memory/sessionduration"); parsed = response.getParsedHtml(); form = parsed.getForms().get(0); form.setParameter("login", "guest"); form.setParameter("password", "guestpass"); response = form.submit(); parsed = response.getParsedHtml(); assertEquals(0, parsed.getForms().size()); assertEquals("authid", response.getNewCookieNames().get(0)); auth_id = conversation.getCookieValue("authid"); conversation = new MockConversation(builder.getSite()); conversation.addCookie("authid", auth_id); response = conversation.doRequest("/authentication/memory/sessionduration"); parsed = response.getParsedHtml(); assertEquals(0, parsed.getForms().size()); try { Thread.sleep(2000); } catch (InterruptedException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } conversation = new MockConversation(builder.getSite()); conversation.addCookie("authid", auth_id); response = conversation.doRequest("/authentication/memory/sessionduration"); parsed = response.getParsedHtml(); assertEquals(1, parsed.getForms().size()); } /** * Tests that we can get through an authenticated element that has its * "enforce_authenticated" flag set to false. */ public void testMemoryAuthenticatedNotEnforcedInput() throws Exception { SiteBuilder builder = new SiteBuilder("site/authentication_memory_input.xml", ResourceFinderClasspath.getInstance()); MockConversation conversation = new MockConversation(builder.getSite()); MockResponse response; MockRequest request; MockForm form; ParsedHtml parsed; String auth_id; /* Can we get through the page as an anonymous user? */ response = conversation.doRequest("/authentication/memory/enforce"); parsed = response.getParsedHtml(); assertEquals("forms", 0, parsed.getForms().size()); assertEquals("login name", "(none)", parsed.getLinkWithId("userLogin").getText()); /* Now hit a protected page so we can get an authid cookie. */ response = conversation.doRequest("/authentication/memory/enforce2"); parsed = response.getParsedHtml(); form = parsed.getForms().get(0); form.setParameter("login", "guest"); form.setParameter("password", "guestpass"); response = form.submit(); parsed = response.getParsedHtml(); assertEquals("forms (after login)", 0, parsed.getForms().size()); assertEquals("login name (after login)", "guest", parsed.getLinkWithId("userLogin").getText()); auth_id = parsed.getTitle(); /* And hit the unprotected page again to be sure it recognizes us. */ conversation = new MockConversation(builder.getSite()); request = new MockRequest(); request.setParameter("authid", auth_id); response = conversation.doRequest("/authentication/memory/enforce", request); parsed = response.getParsedHtml(); assertEquals("forms (unenforced after login)", 0, parsed.getForms().size()); assertEquals("login name (unenforced after login)", "guest", parsed.getLinkWithId("userLogin").getText()); } /** * Tests that we can get through an authenticated element that has its * "enforce_authenticated" flag set to false. */ public void testMemoryAuthenticatedNotEnforcedCookie() throws Exception { SiteBuilder builder = new SiteBuilder("site/authentication_memory_cookie.xml", ResourceFinderClasspath.getInstance()); MockConversation conversation = new MockConversation(builder.getSite()); MockResponse response; MockForm form; ParsedHtml parsed; String auth_id; /* Can we get through the page as an anonymous user? */ response = conversation.doRequest("/authentication/memory/enforce"); parsed = response.getParsedHtml(); assertEquals("forms", 0, parsed.getForms().size()); assertEquals("login name", "(none)", parsed.getLinkWithId("userLogin").getText()); /* Now hit a protected page so we can get an authid cookie. */ response = conversation.doRequest("/authentication/memory/enforce2"); parsed = response.getParsedHtml(); form = parsed.getForms().get(0); form.setParameter("login", "guest"); form.setParameter("password", "guestpass"); response = form.submit(); parsed = response.getParsedHtml(); assertEquals("forms (after login)", 0, parsed.getForms().size()); assertEquals("login name (after login)", "guest", parsed.getLinkWithId("userLogin").getText()); auth_id = conversation.getCookieValue("authid"); /* And hit the unprotected page again to be sure it recognizes us. */ conversation = new MockConversation(builder.getSite()); conversation.addCookie("authid", auth_id); response = conversation.doRequest("/authentication/memory/enforce"); parsed = response.getParsedHtml(); assertEquals("forms (unenforced after login)", 0, parsed.getForms().size()); assertEquals("login name (unenforced after login)", "guest", parsed.getLinkWithId("userLogin").getText()); } }