You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2016/09/19 19:31:45 UTC
[3/5] wicket git commit: WICKET-6242 testing signIn method atomicity
WICKET-6242 testing signIn method atomicity
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/56f947ee
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/56f947ee
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/56f947ee
Branch: refs/heads/wicket-7.x
Commit: 56f947ee52e3b42e69481bac78838e6ec8325573
Parents: d542553
Author: Pedro Henrique Oliveira dos Santos <pe...@apache.org>
Authored: Sat Sep 10 17:56:07 2016 -0300
Committer: Pedro Henrique Oliveira dos Santos <pe...@apache.org>
Committed: Sat Sep 10 17:56:18 2016 -0300
----------------------------------------------------------------------
.../AuthenticatedWebSessionTest.java | 90 ++++++++++++++++++++
1 file changed, 90 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/56f947ee/wicket-auth-roles/src/test/java/org/apache/wicket/authroles/authentication/AuthenticatedWebSessionTest.java
----------------------------------------------------------------------
diff --git a/wicket-auth-roles/src/test/java/org/apache/wicket/authroles/authentication/AuthenticatedWebSessionTest.java b/wicket-auth-roles/src/test/java/org/apache/wicket/authroles/authentication/AuthenticatedWebSessionTest.java
new file mode 100644
index 0000000..c444d81
--- /dev/null
+++ b/wicket-auth-roles/src/test/java/org/apache/wicket/authroles/authentication/AuthenticatedWebSessionTest.java
@@ -0,0 +1,90 @@
+package org.apache.wicket.authroles.authentication;
+
+import static java.util.Locale.getDefault;
+import static java.util.concurrent.TimeUnit.SECONDS;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+import org.apache.wicket.Application;
+import org.apache.wicket.ThreadContext;
+import org.apache.wicket.authroles.authorization.strategies.role.Roles;
+import org.apache.wicket.request.Request;
+import org.apache.wicket.request.Response;
+import org.apache.wicket.session.ISessionStore;
+import org.apache.wicket.util.tester.WicketTestCase;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author Pedro Santos
+ */
+public class AuthenticatedWebSessionTest extends WicketTestCase {
+ private Request request;
+ private Response response;
+ private ISessionStore sessionStore;
+ private AuthenticatedWebSession session;
+
+ @Before
+ public void initialize() {
+ request = mock(Request.class);
+ response = mock(Response.class);
+ sessionStore = mock(ISessionStore.class);
+ when(request.getLocale()).thenReturn(getDefault());
+ session = new TestAuthenticatedWebSession(request);
+ }
+
+ @Test
+ public void shouldLookupForSessionOnce() throws InterruptedException {
+ ExecutorService executorService = Executors.newFixedThreadPool(10);
+ for (int i = 0; i < 10; i++)
+ executorService.submit(new SiginTask(tester.getApplication()));
+ executorService.shutdown();
+ executorService.awaitTermination(5, SECONDS);
+ // counting lookup calls since sesion.bind() is final
+ // TODO: test for bind calls itself
+ verify(sessionStore, times(1)).lookup(request);
+ }
+
+ class SiginTask implements Runnable {
+ Application application;
+
+ public SiginTask(Application application) {
+ this.application = application;
+ }
+
+ @Override
+ public void run() {
+ ThreadContext.setRequestCycle(application.createRequestCycle(request, response));
+ session.signIn("user", "pass");
+ }
+
+ }
+
+ class TestAuthenticatedWebSession extends AuthenticatedWebSession {
+ private static final long serialVersionUID = 1L;
+
+ public TestAuthenticatedWebSession(Request request) {
+ super(request);
+ }
+
+ @Override
+ protected boolean authenticate(String username, String password) {
+ return true;
+ }
+
+ @Override
+ protected ISessionStore getSessionStore() {
+ return sessionStore;
+ }
+
+ @Override
+ public Roles getRoles() {
+ return null;
+ }
+ }
+}