From a502d96a860456ec5e8c96761db70f7cabb74751 Mon Sep 17 00:00:00 2001 From: Paul Martin <paul@paulsputer.com> Date: Sat, 30 Apr 2016 04:19:14 -0400 Subject: [PATCH] Merge pull request #1073 from gitblit/1062-DocEditorUpdates --- src/test/java/com/gitblit/tests/HtpasswdAuthenticationTest.java | 124 ++++++++++++++++++++++++++++++++++++++++ 1 files changed, 122 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/gitblit/tests/HtpasswdAuthenticationTest.java b/src/test/java/com/gitblit/tests/HtpasswdAuthenticationTest.java index 3b1d51e..26a49b2 100644 --- a/src/test/java/com/gitblit/tests/HtpasswdAuthenticationTest.java +++ b/src/test/java/com/gitblit/tests/HtpasswdAuthenticationTest.java @@ -27,10 +27,13 @@ import com.gitblit.IStoredSettings; import com.gitblit.auth.HtpasswdAuthProvider; +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; /** * Test the Htpasswd user service. @@ -47,6 +50,7 @@ private HtpasswdAuthProvider htpasswd; + private AuthenticationManager auth; private MemorySettings getSettings(String userfile, String groupfile, Boolean overrideLA) { @@ -68,14 +72,27 @@ private void setupUS() { htpasswd = newHtpasswdAuthentication(getSettings()); + auth = newAuthenticationManager(getSettings()); } private HtpasswdAuthProvider newHtpasswdAuthentication(IStoredSettings settings) { - RuntimeManager runtime = new RuntimeManager(settings, GitBlitSuite.BASEFOLDER).start(); - UserManager users = new UserManager(runtime).start(); + XssFilter xssFilter = new AllowXssFilter(); + RuntimeManager runtime = new RuntimeManager(settings, xssFilter, GitBlitSuite.BASEFOLDER).start(); + UserManager users = new UserManager(runtime, null).start(); HtpasswdAuthProvider htpasswd = new HtpasswdAuthProvider(); htpasswd.setup(runtime, users); return htpasswd; + } + + private AuthenticationManager newAuthenticationManager(IStoredSettings settings) { + XssFilter xssFilter = new AllowXssFilter(); + RuntimeManager runtime = new RuntimeManager(settings, xssFilter, GitBlitSuite.BASEFOLDER).start(); + UserManager users = new UserManager(runtime, null).start(); + HtpasswdAuthProvider htpasswd = new HtpasswdAuthProvider(); + htpasswd.setup(runtime, users); + AuthenticationManager auth = new AuthenticationManager(runtime, users); + auth.addAuthenticationProvider(htpasswd); + return auth; } @@ -180,6 +197,52 @@ @Test + public void testAuthenticationManager() + { + MS.put(KEY_SUPPORT_PLAINTEXT_PWD, "true"); + UserModel user = auth.authenticate("user1", "pass1".toCharArray(), null); + assertNotNull(user); + assertEquals("user1", user.username); + + user = auth.authenticate("user2", "pass2".toCharArray(), null); + assertNotNull(user); + assertEquals("user2", user.username); + + // Test different encryptions + user = auth.authenticate("plain", "passWord".toCharArray(), null); + assertNotNull(user); + assertEquals("plain", user.username); + + MS.put(KEY_SUPPORT_PLAINTEXT_PWD, "false"); + user = auth.authenticate("crypt", "password".toCharArray(), null); + assertNotNull(user); + assertEquals("crypt", user.username); + + user = auth.authenticate("md5", "password".toCharArray(), null); + assertNotNull(user); + assertEquals("md5", user.username); + + user = auth.authenticate("sha", "password".toCharArray(), null); + assertNotNull(user); + assertEquals("sha", user.username); + + + // Test leading and trailing whitespace + user = auth.authenticate("trailing", "whitespace".toCharArray(), null); + assertNotNull(user); + assertEquals("trailing", user.username); + + user = auth.authenticate("tabbed", "frontAndBack".toCharArray(), null); + assertNotNull(user); + assertEquals("tabbed", user.username); + + user = auth.authenticate("leading", "whitespace".toCharArray(), null); + assertNotNull(user); + assertEquals("leading", user.username); + } + + + @Test public void testAttributes() { MS.put(KEY_SUPPORT_PLAINTEXT_PWD, "true"); @@ -256,6 +319,63 @@ @Test + public void testAuthenticationMangerDenied() + { + UserModel user = null; + MS.put(KEY_SUPPORT_PLAINTEXT_PWD, "true"); + user = auth.authenticate("user1", "".toCharArray(), null); + assertNull("User 'user1' falsely authenticated.", user); + + user = auth.authenticate("user1", "pass2".toCharArray(), null); + assertNull("User 'user1' falsely authenticated.", user); + + user = auth.authenticate("user2", "lalala".toCharArray(), null); + assertNull("User 'user2' falsely authenticated.", user); + + + user = auth.authenticate("user3", "disabled".toCharArray(), null); + assertNull("User 'user3' falsely authenticated.", user); + + user = auth.authenticate("user4", "disabled".toCharArray(), null); + assertNull("User 'user4' falsely authenticated.", user); + + + user = auth.authenticate("plain", "text".toCharArray(), null); + assertNull("User 'plain' falsely authenticated.", user); + + user = auth.authenticate("plain", "password".toCharArray(), null); + assertNull("User 'plain' falsely authenticated.", user); + + + MS.put(KEY_SUPPORT_PLAINTEXT_PWD, "false"); + + user = auth.authenticate("crypt", "".toCharArray(), null); + assertNull("User 'cyrpt' falsely authenticated.", user); + + user = auth.authenticate("crypt", "passwd".toCharArray(), null); + assertNull("User 'crypt' falsely authenticated.", user); + + user = auth.authenticate("md5", "".toCharArray(), null); + assertNull("User 'md5' falsely authenticated.", user); + + user = auth.authenticate("md5", "pwd".toCharArray(), null); + assertNull("User 'md5' falsely authenticated.", user); + + user = auth.authenticate("sha", "".toCharArray(), null); + assertNull("User 'sha' falsely authenticated.", user); + + user = auth.authenticate("sha", "letmein".toCharArray(), null); + assertNull("User 'sha' falsely authenticated.", user); + + + user = auth.authenticate(" tabbed", "frontAndBack".toCharArray(), null); + assertNull("User 'tabbed' falsely authenticated.", user); + + user = auth.authenticate(" leading", "whitespace".toCharArray(), null); + assertNull("User 'leading' falsely authenticated.", user); + } + + @Test public void testCleartextIntrusion() { MS.put(KEY_SUPPORT_PLAINTEXT_PWD, "true"); -- Gitblit v1.9.1