keycloak-memoizeit

Details

pom.xml 2(+1 -1)

diff --git a/pom.xml b/pom.xml
index 7d5ca67..cfe307f 100755
--- a/pom.xml
+++ b/pom.xml
@@ -249,7 +249,7 @@
 				<groupId>org.jboss.arquillian.graphene</groupId>
 				<artifactId>graphene-webdriver</artifactId>
 				<type>pom</type>
-				<version>2.0.0.Beta2</version>
+				<version>2.0.0.Beta1</version>
 			</dependency>
         </dependencies>
     </dependencyManagement>
diff --git a/services/src/test/java/org/keycloak/services/email/EmailSenderTest.java b/services/src/test/java/org/keycloak/services/email/EmailSenderTest.java
index a2f0961..08354dd 100644
--- a/services/src/test/java/org/keycloak/services/email/EmailSenderTest.java
+++ b/services/src/test/java/org/keycloak/services/email/EmailSenderTest.java
@@ -1,6 +1,8 @@
 package org.keycloak.services.email;
 
 import java.io.IOException;
+import java.lang.Thread.UncaughtExceptionHandler;
+import java.net.SocketException;
 
 import javax.mail.MessagingException;
 import javax.mail.internet.AddressException;
@@ -33,6 +35,18 @@ public class EmailSenderTest {
     @After
     public void after() throws InterruptedException {
         if (greenMail != null) {
+            // Suppress error from GreenMail on shutdown
+            Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
+                @Override
+                public void uncaughtException(Thread t, Throwable e) {
+                    if (!(e.getCause() instanceof SocketException && t.getClass().getName()
+                            .equals("com.icegreen.greenmail.smtp.SmtpHandler"))) {
+                        System.err.print("Exception in thread \"" + t.getName() + "\" ");
+                        e.printStackTrace(System.err);
+                    }
+                }
+            });
+
             greenMail.stop();
         }
     }
diff --git a/testsuite/src/test/java/org/keycloak/testsuite/GreenMailRule.java b/testsuite/src/test/java/org/keycloak/testsuite/GreenMailRule.java
new file mode 100644
index 0000000..ef1f107
--- /dev/null
+++ b/testsuite/src/test/java/org/keycloak/testsuite/GreenMailRule.java
@@ -0,0 +1,48 @@
+package org.keycloak.testsuite;
+
+import java.lang.Thread.UncaughtExceptionHandler;
+import java.net.SocketException;
+
+import javax.mail.internet.MimeMessage;
+
+import org.junit.rules.ExternalResource;
+
+import com.icegreen.greenmail.util.GreenMail;
+import com.icegreen.greenmail.util.ServerSetup;
+
+public class GreenMailRule extends ExternalResource {
+
+    private GreenMail greenMail;
+
+    @Override
+    protected void before() throws Throwable {
+        ServerSetup setup = new ServerSetup(3025, "localhost", "smtp");
+
+        greenMail = new GreenMail(setup);
+        greenMail.start();
+    }
+
+    @Override
+    protected void after() {
+        if (greenMail != null) {
+            // Suppress error from GreenMail on shutdown
+            Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
+                @Override
+                public void uncaughtException(Thread t, Throwable e) {
+                    if (!(e.getCause() instanceof SocketException && t.getClass().getName()
+                            .equals("com.icegreen.greenmail.smtp.SmtpHandler"))) {
+                        System.err.print("Exception in thread \"" + t.getName() + "\" ");
+                        e.printStackTrace(System.err);
+                    }
+                }
+            });
+
+            greenMail.stop();
+        }
+    }
+
+    public MimeMessage[] getReceivedMessages() {
+        return greenMail.getReceivedMessages();
+    }
+
+}
diff --git a/testsuite/src/test/java/org/keycloak/testsuite/RequiredActionEmailVerificationTest.java b/testsuite/src/test/java/org/keycloak/testsuite/RequiredActionEmailVerificationTest.java
index afc308e..6ca1a01 100644
--- a/testsuite/src/test/java/org/keycloak/testsuite/RequiredActionEmailVerificationTest.java
+++ b/testsuite/src/test/java/org/keycloak/testsuite/RequiredActionEmailVerificationTest.java
@@ -34,7 +34,7 @@ import org.jboss.shrinkwrap.api.ShrinkWrap;
 import org.jboss.shrinkwrap.api.spec.WebArchive;
 import org.junit.After;
 import org.junit.Assert;
-import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.keycloak.testsuite.pages.AppPage;
@@ -42,9 +42,6 @@ import org.keycloak.testsuite.pages.LoginPage;
 import org.keycloak.testsuite.pages.RegisterPage;
 import org.openqa.selenium.WebDriver;
 
-import com.icegreen.greenmail.util.GreenMail;
-import com.icegreen.greenmail.util.ServerSetup;
-
 /**
  * @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
  */
@@ -79,15 +76,8 @@ public class RequiredActionEmailVerificationTest {
     @Page
     protected RegisterPage registerPage;
 
-    private GreenMail greenMail;
-
-    @Before
-    public void before() {
-        ServerSetup setup = new ServerSetup(3025, "localhost", "smtp");
-
-        greenMail = new GreenMail(setup);
-        greenMail.start();
-    }
+    @Rule
+    public GreenMailRule greenMail = new GreenMailRule();
 
     @After
     public void after() {
@@ -95,9 +85,6 @@ public class RequiredActionEmailVerificationTest {
         if (appPage.isCurrent()) {
             appPage.logout();
         }
-        if (greenMail != null) {
-            greenMail.stop();
-        }
     }
 
     @Test
diff --git a/testsuite/src/test/java/org/keycloak/testsuite/ResetPasswordTest.java b/testsuite/src/test/java/org/keycloak/testsuite/ResetPasswordTest.java
index c5dc1e3..53b859c 100644
--- a/testsuite/src/test/java/org/keycloak/testsuite/ResetPasswordTest.java
+++ b/testsuite/src/test/java/org/keycloak/testsuite/ResetPasswordTest.java
@@ -31,16 +31,12 @@ import org.jboss.arquillian.graphene.page.Page;
 import org.jboss.arquillian.junit.Arquillian;
 import org.jboss.shrinkwrap.api.ShrinkWrap;
 import org.jboss.shrinkwrap.api.spec.WebArchive;
-import org.junit.After;
 import org.junit.Assert;
-import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.keycloak.testsuite.pages.ChangePasswordPage;
 
-import com.icegreen.greenmail.util.GreenMail;
-import com.icegreen.greenmail.util.ServerSetup;
-
 /**
  * @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
  */
@@ -53,26 +49,12 @@ public class ResetPasswordTest extends AbstractDroneTest {
                 .addAsWebInfResource("web-properties-email-verfication.xml", "web.xml");
     }
 
-    private GreenMail greenMail;
+    @Rule
+    public GreenMailRule greenMail = new GreenMailRule();
 
     @Page
     protected ChangePasswordPage changePasswordPage;
 
-    @Before
-    public void before() {
-        ServerSetup setup = new ServerSetup(3025, "localhost", "smtp");
-
-        greenMail = new GreenMail(setup);
-        greenMail.start();
-    }
-
-    @After
-    public void after() {
-        if (greenMail != null) {
-            greenMail.stop();
-        }
-    }
-
     @Test
     public void resetPassword() throws IOException, MessagingException {
         appPage.open();