package com.gitblit.tests; import static org.hamcrest.CoreMatchers.is; import java.util.HashMap; import org.junit.Test; import com.gitblit.IStoredSettings; import com.gitblit.auth.RedmineAuthProvider; import com.gitblit.manager.AuthenticationManager; import com.gitblit.manager.RuntimeManager; import com.gitblit.manager.UserManager; import com.gitblit.models.UserModel; import com.gitblit.tests.mock.MemorySettings; import com.gitblit.utils.XssFilter; import com.gitblit.utils.XssFilter.AllowXssFilter; public class RedmineAuthenticationTest extends GitblitUnitTest { private static final String JSON = "{\"user\":{\"created_on\":\"2011-03-28T00:41:29Z\",\"lastname\":\"foo\"," + "\"last_login_on\":\"2012-09-06T23:59:26Z\",\"firstname\":\"baz\"," + "\"id\":4,\"login\":\"RedmineUserId\",\"mail\":\"baz@example.com\"}}"; MemorySettings getSettings() { return new MemorySettings(new HashMap()); } RedmineAuthProvider newRedmineAuthentication(IStoredSettings settings) { XssFilter xssFilter = new AllowXssFilter(); RuntimeManager runtime = new RuntimeManager(settings, xssFilter, GitBlitSuite.BASEFOLDER).start(); UserManager users = new UserManager(runtime, null).start(); RedmineAuthProvider redmine = new RedmineAuthProvider(); redmine.setup(runtime, users); return redmine; } RedmineAuthProvider newRedmineAuthentication() { return newRedmineAuthentication(getSettings()); } AuthenticationManager newAuthenticationManager() { XssFilter xssFilter = new AllowXssFilter(); RuntimeManager runtime = new RuntimeManager(getSettings(), xssFilter, GitBlitSuite.BASEFOLDER).start(); UserManager users = new UserManager(runtime, null).start(); RedmineAuthProvider redmine = new RedmineAuthProvider(); redmine.setup(runtime, users); redmine.setTestingCurrentUserAsJson(JSON); AuthenticationManager auth = new AuthenticationManager(runtime, users); auth.addAuthenticationProvider(redmine); return auth; } @Test public void testAuthenticate() throws Exception { RedmineAuthProvider redmine = newRedmineAuthentication(); redmine.setTestingCurrentUserAsJson(JSON); UserModel userModel = redmine.authenticate("RedmineAdminId", "RedmineAPIKey".toCharArray()); assertThat(userModel.getName(), is("redmineadminid")); assertThat(userModel.getDisplayName(), is("baz foo")); assertThat(userModel.emailAddress, is("baz@example.com")); assertNotNull(userModel.cookie); } @Test public void testAuthenticationManager() throws Exception { AuthenticationManager auth = newAuthenticationManager(); UserModel userModel = auth.authenticate("RedmineAdminId", "RedmineAPIKey".toCharArray(), null); assertThat(userModel.getName(), is("redmineadminid")); assertThat(userModel.getDisplayName(), is("baz foo")); assertThat(userModel.emailAddress, is("baz@example.com")); assertNotNull(userModel.cookie); } }