// Copyright (C) 2003-2009 by Object Mentor, Inc. All rights reserved.
// Released under the terms of the CPL Common Public License version 1.0.
package fitnesse.authentication;
import junit.framework.TestCase;
import fitnesse.FitNesseContext;
import fitnesse.Responder;
import fitnesse.http.MockRequest;
import fitnesse.http.Request;
import fitnesse.http.Response;
import fitnesse.testutil.SimpleAuthenticator;
import fitnesse.wiki.InMemoryPage;
import fitnesse.wiki.PageData;
import fitnesse.wiki.WikiPage;
public class AuthenticatorTest extends TestCase {
SimpleAuthenticator authenticator;
private WikiPage root;
private MockRequest request;
private Responder responder;
private Class<? extends Responder> responderType;
private DummySecureResponder privilegedResponder;
private FitNesseContext context;
class DummySecureResponder implements SecureResponder {
public SecureOperation getSecureOperation() {
return new AlwaysSecureOperation();
}
public Response makeResponse(FitNesseContext context, Request request) {
return null;
}
protected void refactorReferences(FitNesseContext context, WikiPage pageToBeMoved, String newParentName) {
}
}
public void setUp() {
root = InMemoryPage.makeRoot("RooT");
WikiPage frontpage = root.addChildPage("FrontPage");
makeReadSecure(frontpage);
authenticator = new SimpleAuthenticator();
privilegedResponder = new DummySecureResponder();
request = new MockRequest();
request.setResource("FrontPage");
context = new FitNesseContext(root);
}
private void makeReadSecure(WikiPage frontpage) {
PageData data = frontpage.getData();
data.setAttribute(PageData.PropertySECURE_READ);
frontpage.commit(data);
}
public void tearDown() {
}
public void testNotAuthenticated() {
makeResponder();
assertEquals(UnauthorizedResponder.class, responderType);
}
public void testAuthenticated() {
authenticator.authenticated = true;
makeResponder();
assertEquals(DummySecureResponder.class, responderType);
}
private void makeResponder() {
responder = authenticator.authenticate(context, request, privilegedResponder);
responderType = responder.getClass();
}
}