From 4f124691d0af73156f8cd747471c666698b4d22c Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Thu, 8 Dec 2016 22:08:11 +0100 Subject: [PATCH] use shiro-unit for manager permission tests --- scm-core/pom.xml | 2 +- scm-test/pom.xml | 6 ++ .../main/java/sonia/scm/ManagerTestBase.java | 58 +++++++++---------- .../repository/RepositoryManagerTestBase.java | 18 +----- scm-webapp/pom.xml | 7 +++ .../DefaultRepositoryManagerTest.java | 11 ++++ .../scm/user/DefaultUserManagerTest.java | 23 ++++---- .../resources/sonia/scm/repository/shiro.ini | 5 ++ 8 files changed, 70 insertions(+), 60 deletions(-) create mode 100644 scm-webapp/src/test/resources/sonia/scm/repository/shiro.ini diff --git a/scm-core/pom.xml b/scm-core/pom.xml index 7045c52051..5712172e07 100644 --- a/scm-core/pom.xml +++ b/scm-core/pom.xml @@ -126,7 +126,7 @@ ${ssp.version} true - + diff --git a/scm-test/pom.xml b/scm-test/pom.xml index a839d36dde..6c9f5f598e 100644 --- a/scm-test/pom.xml +++ b/scm-test/pom.xml @@ -33,6 +33,12 @@ junit ${junit.version} + + + com.github.sdorra + shiro-unit + 1.0.0 + org.mockito diff --git a/scm-test/src/main/java/sonia/scm/ManagerTestBase.java b/scm-test/src/main/java/sonia/scm/ManagerTestBase.java index ccf34a0629..24bd2a0ebb 100644 --- a/scm-test/src/main/java/sonia/scm/ManagerTestBase.java +++ b/scm-test/src/main/java/sonia/scm/ManagerTestBase.java @@ -33,6 +33,13 @@ package sonia.scm; +import java.io.IOException; +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.rules.TemporaryFolder; +import sonia.scm.util.MockUtil; + /** * * @author Sebastian Sdorra @@ -40,10 +47,28 @@ package sonia.scm; * @param * @param */ -public abstract class ManagerTestBase extends AbstractTestBase +public abstract class ManagerTestBase { + @Rule + public TemporaryFolder tempFolder = new TemporaryFolder(); + + protected SCMContextProvider contextProvider; + + protected Manager manager; + + @Before + public void setUp() throws IOException { + contextProvider = MockUtil.getSCMContextProvider(tempFolder.newFolder()); + manager = createManager(); + manager.init(contextProvider); + } + + @After + public void tearDown() throws IOException { + manager.close(); + } + /** * Method description * @@ -52,33 +77,4 @@ public abstract class ManagerTestBase createManager(); - /** - * Method description - * - * - * @throws Exception - */ - @Override - protected void postSetUp() throws Exception - { - manager = createManager(); - manager.init(contextProvider); - } - - /** - * Method description - * - * - * @throws Exception - */ - @Override - protected void preTearDown() throws Exception - { - manager.close(); - } - - //~--- fields --------------------------------------------------------------- - - /** Field description */ - protected Manager manager; } diff --git a/scm-test/src/main/java/sonia/scm/repository/RepositoryManagerTestBase.java b/scm-test/src/main/java/sonia/scm/repository/RepositoryManagerTestBase.java index e8d8caf603..bd12ab67be 100644 --- a/scm-test/src/main/java/sonia/scm/repository/RepositoryManagerTestBase.java +++ b/scm-test/src/main/java/sonia/scm/repository/RepositoryManagerTestBase.java @@ -36,6 +36,7 @@ package sonia.scm.repository; //~--- non-JDK imports -------------------------------------------------------- import com.github.legman.Subscribe; +import com.github.sdorra.shiro.SubjectAware; import org.apache.shiro.subject.Subject; @@ -47,7 +48,6 @@ import sonia.scm.Manager; import sonia.scm.ManagerTestBase; import sonia.scm.event.ScmEventBus; import sonia.scm.repository.api.HookContext; -import sonia.scm.util.MockUtil; import static org.junit.Assert.*; @@ -61,8 +61,7 @@ import java.util.Collection; * * @author Sebastian Sdorra */ -public abstract class RepositoryManagerTestBase - extends ManagerTestBase +public abstract class RepositoryManagerTestBase extends ManagerTestBase { /** @@ -378,19 +377,6 @@ public abstract class RepositoryManagerTestBase assertEquals(2, hook.eventsReceived); } - //~--- set methods ---------------------------------------------------------- - - /** - * Method description - * - */ - @Before - public void setAdminSubject() - { - Subject admin = MockUtil.createAdminSubject(); - - setSubject(admin); - } //~--- methods -------------------------------------------------------------- diff --git a/scm-webapp/pom.xml b/scm-webapp/pom.xml index 06a76353d7..7fcbfba541 100644 --- a/scm-webapp/pom.xml +++ b/scm-webapp/pom.xml @@ -243,6 +243,13 @@ + + com.github.sdorra + shiro-unit + 1.0.0 + test + + sonia.scm.plugins scm-git-plugin diff --git a/scm-webapp/src/test/java/sonia/scm/repository/DefaultRepositoryManagerTest.java b/scm-webapp/src/test/java/sonia/scm/repository/DefaultRepositoryManagerTest.java index 94c9c2b4df..4de03b3f11 100644 --- a/scm-webapp/src/test/java/sonia/scm/repository/DefaultRepositoryManagerTest.java +++ b/scm-webapp/src/test/java/sonia/scm/repository/DefaultRepositoryManagerTest.java @@ -35,6 +35,8 @@ package sonia.scm.repository; //~--- non-JDK imports -------------------------------------------------------- +import com.github.sdorra.shiro.ShiroRule; +import com.github.sdorra.shiro.SubjectAware; import com.google.common.collect.ImmutableSet; import org.junit.Test; @@ -60,14 +62,23 @@ import java.io.IOException; import java.util.HashSet; import java.util.Set; +import org.junit.Rule; /** * * @author Sebastian Sdorra */ +@SubjectAware( + username = "trillian", + password = "secret", + configuration = "classpath:sonia/scm/repository/shiro.ini" +) public class DefaultRepositoryManagerTest extends RepositoryManagerTestBase { + @Rule + public ShiroRule shiro = new ShiroRule(); + /** * Method description * diff --git a/scm-webapp/src/test/java/sonia/scm/user/DefaultUserManagerTest.java b/scm-webapp/src/test/java/sonia/scm/user/DefaultUserManagerTest.java index 9931e52ad7..8a4894fa11 100644 --- a/scm-webapp/src/test/java/sonia/scm/user/DefaultUserManagerTest.java +++ b/scm-webapp/src/test/java/sonia/scm/user/DefaultUserManagerTest.java @@ -35,6 +35,8 @@ package sonia.scm.user; //~--- non-JDK imports -------------------------------------------------------- +import com.github.sdorra.shiro.ShiroRule; +import com.github.sdorra.shiro.SubjectAware; import com.google.common.collect.Lists; import org.junit.Before; @@ -51,13 +53,22 @@ import static org.mockito.Mockito.*; import java.util.Collections; import java.util.List; +import org.junit.Rule; /** * * @author Sebastian Sdorra */ +@SubjectAware( + username = "trillian", + password = "secret", + configuration = "classpath:sonia/scm/repository/shiro.ini" +) public class DefaultUserManagerTest extends UserManagerTestBase { + + @Rule + public ShiroRule shiro = new ShiroRule(); /** * Method description @@ -107,18 +118,6 @@ public class DefaultUserManagerTest extends UserManagerTestBase verify(userDAO, times(2)).add(any(User.class)); } - //~--- set methods ---------------------------------------------------------- - - /** - * Method description - * - */ - @Before - public void setAdminSubject() - { - setSubject(MockUtil.createAdminSubject()); - } - //~--- methods -------------------------------------------------------------- /** diff --git a/scm-webapp/src/test/resources/sonia/scm/repository/shiro.ini b/scm-webapp/src/test/resources/sonia/scm/repository/shiro.ini new file mode 100644 index 0000000000..ac6822a96d --- /dev/null +++ b/scm-webapp/src/test/resources/sonia/scm/repository/shiro.ini @@ -0,0 +1,5 @@ +[users] +trillian = secret, admin + +[roles] +admin = *