package org.jolokia.osgi.security; import javax.servlet.http.HttpServletRequest; import org.jolokia.config.ConfigKey; import org.jolokia.test.util.MockLoginContext; import org.osgi.service.http.HttpContext; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import static org.easymock.EasyMock.*; import static org.testng.Assert.*; public class JaasAuthenticatorTest { private JaasAuthenticator auth; private AuthorizationHeaderParser.Result info; @BeforeMethod public void setUp() throws Exception { auth = new JaasAuthenticator("jolokia"); info = AuthorizationHeaderParser.parse("Basic cm9sYW5kOnMhY3IhdA=="); } @Test public void testAuthenticateNoLoginModule() throws Exception { HttpServletRequest req = createMock(HttpServletRequest.class); replay(req); assertFalse(auth.doAuthenticate(req, info)); } @Test public void testAuthenticationPositive() throws Exception { HttpServletRequest req = prepareRequest(); new MockLoginContext("jolokia",true); assertTrue(auth.doAuthenticate(req, info)); } @Test public void testAuthenticationNegative() throws Exception { HttpServletRequest req = prepareRequest(); new MockLoginContext("jolokia",false); assertFalse(auth.doAuthenticate(req, info)); } private HttpServletRequest prepareRequest() { HttpServletRequest req = createMock(HttpServletRequest.class); req.setAttribute(HttpContext.AUTHENTICATION_TYPE, HttpServletRequest.BASIC_AUTH); req.setAttribute(HttpContext.REMOTE_USER, "roland"); req.setAttribute(ConfigKey.JAAS_SUBJECT_REQUEST_ATTRIBUTE, MockLoginContext.SUBJECT); replay(req); return req; } }