]> WPIA git - gigi.git/commitdiff
add: testType for business-only tests.
authorFelix Dörre <felix@dogcraft.de>
Sun, 10 Jul 2016 11:45:26 +0000 (13:45 +0200)
committerFelix Dörre <felix@dogcraft.de>
Mon, 11 Jul 2016 10:43:04 +0000 (12:43 +0200)
This helps to clean up several tests.

Change-Id: Ief75f96307f102621402f0b097181126404d6ad7

15 files changed:
tests/org/cacert/gigi/TestDomain.java
tests/org/cacert/gigi/TestObjectCache.java
tests/org/cacert/gigi/TestOrga.java
tests/org/cacert/gigi/TestUser.java
tests/org/cacert/gigi/TestUserGroupMembership.java
tests/org/cacert/gigi/dbObjects/TestAssurance.java
tests/org/cacert/gigi/dbObjects/TestCATS.java
tests/org/cacert/gigi/email/TestSendmail.java
tests/org/cacert/gigi/testUtils/BusinessTest.java [new file with mode: 0644]
tests/org/cacert/gigi/testUtils/ClientBusinessTest.java [new file with mode: 0644]
tests/org/cacert/gigi/testUtils/ConfiguredTest.java
tests/org/cacert/gigi/testUtils/MailReceiver.java [new file with mode: 0644]
tests/org/cacert/gigi/testUtils/ManagedTest.java
tests/org/cacert/gigi/testUtils/TestEmailReceiver.java
tests/org/cacert/gigi/util/TestNotary.java

index 91f29c7a0389daaab33e9c25be80806c69218905..285fca9a27df6fcda3cd37a5496473004d122b5b 100644 (file)
@@ -3,34 +3,26 @@ package org.cacert.gigi;
 import static org.junit.Assert.*;
 
 import org.cacert.gigi.dbObjects.Domain;
-import org.cacert.gigi.dbObjects.User;
-import org.cacert.gigi.testUtils.ManagedTest;
+import org.cacert.gigi.testUtils.ClientBusinessTest;
 import org.junit.Test;
 
-public class TestDomain extends ManagedTest {
-
-    private User us;
-
-    public TestDomain() {
-        int uid = createVerifiedUser("fn", "ln", createUniqueName() + "pr@test-email.de", TEST_PASSWORD);
-        us = User.getById(uid);
-    }
+public class TestDomain extends ClientBusinessTest {
 
     @Test
     public void testDomain() throws InterruptedException, GigiApiException {
-        assertEquals(0, us.getDomains().length);
-        Domain d = new Domain(us, us, "v1example.org");
-        Domain[] domains = us.getDomains();
+        assertEquals(0, u.getDomains().length);
+        Domain d = new Domain(u, u, "v1example.org");
+        Domain[] domains = u.getDomains();
         assertEquals(1, domains.length);
         assertEquals("v1example.org", domains[0].getSuffix());
-        assertEquals(domains[0].getOwner().getId(), us.getId());
+        assertEquals(domains[0].getOwner().getId(), u.getId());
         assertNotEquals(0, domains[0].getId());
         assertNotEquals(0, d.getId());
         assertEquals(d.getId(), domains[0].getId());
 
-        new Domain(us, us, "v2-example.org");
+        new Domain(u, u, "v2-example.org");
 
-        domains = us.getDomains();
+        domains = u.getDomains();
         assertEquals(2, domains.length);
         if ( !domains[1].getSuffix().equals("v2-example.org")) {
             Domain d1 = domains[0];
@@ -38,8 +30,8 @@ public class TestDomain extends ManagedTest {
             domains[1] = d1;
         }
         assertEquals("v2-example.org", domains[1].getSuffix());
-        assertEquals(domains[0].getOwner().getId(), us.getId());
-        assertEquals(domains[1].getOwner().getId(), us.getId());
+        assertEquals(domains[0].getOwner().getId(), u.getId());
+        assertEquals(domains[1].getOwner().getId(), u.getId());
         assertNotEquals(0, domains[0].getId());
         assertNotEquals(0, d.getId());
         assertEquals(d.getId(), domains[0].getId());
@@ -48,9 +40,9 @@ public class TestDomain extends ManagedTest {
 
     @Test
     public void testDoubleDomain() throws InterruptedException, GigiApiException {
-        new Domain(us, us, "dub-example.org");
+        new Domain(u, u, "dub-example.org");
         try {
-            new Domain(us, us, "dub-example.org");
+            new Domain(u, u, "dub-example.org");
             fail("expected exception, was able to insert domain (with different case) a second time");
         } catch (GigiApiException e) {
             // expected
@@ -59,10 +51,10 @@ public class TestDomain extends ManagedTest {
 
     @Test
     public void testDoubleDomainCase() throws InterruptedException, GigiApiException {
-        Domain d = new Domain(us, us, "dub2-ExaMple.Org");
+        Domain d = new Domain(u, u, "dub2-ExaMple.Org");
         assertEquals("dub2-example.org", d.getSuffix());
         try {
-            new Domain(us, us, "duB2-eXample.oRG");
+            new Domain(u, u, "duB2-eXample.oRG");
             fail("expected exception, was able to insert domain (with different case) a second time");
         } catch (GigiApiException e) {
             // expected
@@ -71,9 +63,9 @@ public class TestDomain extends ManagedTest {
 
     @Test
     public void testDoubleDomainDelete() throws InterruptedException, GigiApiException {
-        Domain d = new Domain(us, us, "delexample.org");
+        Domain d = new Domain(u, u, "delexample.org");
         d.delete();
-        new Domain(us, us, "delexample.org");
+        new Domain(u, u, "delexample.org");
     }
 
 }
index d2a04595b0c6014d7ad75fd5a3a4ab280b3c2f4c..69bd4390eb74ff8d5fa52c6bfb0a2fd17ad25e7b 100644 (file)
@@ -11,17 +11,15 @@ import org.cacert.gigi.dbObjects.Domain;
 import org.cacert.gigi.dbObjects.EmailAddress;
 import org.cacert.gigi.dbObjects.Name;
 import org.cacert.gigi.dbObjects.User;
-import org.cacert.gigi.testUtils.ManagedTest;
+import org.cacert.gigi.testUtils.ClientBusinessTest;
 import org.cacert.gigi.util.DayDate;
 import org.junit.Test;
 
-public class TestObjectCache extends ManagedTest {
-
-    int uid = createVerifiedUser("fname", "lname", createUniqueName() + "@example.com", TEST_PASSWORD);
+public class TestObjectCache extends ClientBusinessTest {
 
     @Test
     public void testUserCache() throws SQLException, GigiApiException {
-        assertThat(User.getById(uid), is(sameInstance(User.getById(uid))));
+        assertThat(User.getById(id), is(sameInstance(User.getById(id))));
 
         Calendar c = Calendar.getInstance();
         c.set(1950, 1, 1, 0, 0, 0);
@@ -35,7 +33,6 @@ public class TestObjectCache extends ManagedTest {
 
     @Test
     public void testDomainCache() throws GigiApiException {
-        User u = User.getById(uid);
         Domain d = new Domain(u, u, "example.org");
 
         assertThat(d, is(sameInstance(Domain.getById(d.getId()))));
@@ -44,7 +41,7 @@ public class TestObjectCache extends ManagedTest {
 
     @Test
     public void testEmailCache() throws GigiApiException {
-        EmailAddress em = new EmailAddress(User.getById(uid), createUniqueName() + "@example.org", Locale.ENGLISH);
+        EmailAddress em = new EmailAddress(u, createUniqueName() + "@example.org", Locale.ENGLISH);
 
         assertThat(em, is(sameInstance(EmailAddress.getById(em.getId()))));
         assertThat(EmailAddress.getById(em.getId()), is(sameInstance(EmailAddress.getById(em.getId()))));
index 91afa2e76b5fb34c969c3f189da4847b66fda711..b1a23129ca432371f272c20a552aca56159c0487 100644 (file)
@@ -7,10 +7,10 @@ import java.io.IOException;
 import org.cacert.gigi.dbObjects.Group;
 import org.cacert.gigi.dbObjects.Organisation;
 import org.cacert.gigi.dbObjects.User;
-import org.cacert.gigi.testUtils.ManagedTest;
+import org.cacert.gigi.testUtils.BusinessTest;
 import org.junit.Test;
 
-public class TestOrga extends ManagedTest {
+public class TestOrga extends BusinessTest {
 
     @Test
     public void testAddRm() throws GigiApiException, IOException {
index a3dfb777b3c5b2c336b41f20ac754579355ee072..f3702b0457b8f3faa3d77d661cff3d9595a82db4 100644 (file)
@@ -11,11 +11,11 @@ import org.cacert.gigi.dbObjects.Domain;
 import org.cacert.gigi.dbObjects.EmailAddress;
 import org.cacert.gigi.dbObjects.Name;
 import org.cacert.gigi.dbObjects.User;
-import org.cacert.gigi.testUtils.ManagedTest;
+import org.cacert.gigi.testUtils.BusinessTest;
 import org.cacert.gigi.util.DayDate;
 import org.junit.Test;
 
-public class TestUser extends ManagedTest {
+public class TestUser extends BusinessTest {
 
     @Test
     public void testStoreAndLoad() throws SQLException, GigiApiException {
@@ -30,7 +30,7 @@ public class TestUser extends ManagedTest {
     }
 
     @Test
-    public void testWebStoreAndLoad() throws SQLException {
+    public void testWebStoreAndLoad() throws SQLException, GigiApiException {
         int id = createVerifiedUser("aä", "b", createUniqueName() + "a@email.org", TEST_PASSWORD);
 
         Name u = User.getById(id).getName();
@@ -41,7 +41,7 @@ public class TestUser extends ManagedTest {
     }
 
     @Test
-    public void testAssurerUtilMethods() throws SQLException {
+    public void testAssurerUtilMethods() throws SQLException, GigiApiException {
         int id = createAssuranceUser("aä", "b", createUniqueName() + "a@email.org", TEST_PASSWORD);
 
         User u = User.getById(id);
@@ -112,7 +112,7 @@ public class TestUser extends ManagedTest {
     }
 
     @Test
-    public void testGetByMail() {
+    public void testGetByMail() throws GigiApiException {
         String email = createUniqueName() + "a@email.org";
         int id = createVerifiedUser("aä", "b", email, TEST_PASSWORD);
         User emailUser = User.getByEmail(email);
@@ -121,7 +121,7 @@ public class TestUser extends ManagedTest {
     }
 
     @Test
-    public void testNoCats() {
+    public void testNoCats() throws GigiApiException {
         String email = createUniqueName() + "a@email.org";
         createVerifiedUser("aä", "b", email, TEST_PASSWORD);
         User emailUser = User.getByEmail(email);
index 7ac06ff36595431101b8766ecd79f7e589e8cadd..32bb1a991de9120fadf00e2be0782ca9ff28b7f4 100644 (file)
@@ -13,10 +13,10 @@ import org.cacert.gigi.database.GigiResultSet;
 import org.cacert.gigi.dbObjects.Group;
 import org.cacert.gigi.dbObjects.ObjectCache;
 import org.cacert.gigi.dbObjects.User;
-import org.cacert.gigi.testUtils.ManagedTest;
+import org.cacert.gigi.testUtils.BusinessTest;
 import org.junit.Test;
 
-public class TestUserGroupMembership extends ManagedTest {
+public class TestUserGroupMembership extends BusinessTest {
 
     private final Group ttpGroup = Group.getByString("ttp-assurer");
 
@@ -99,7 +99,7 @@ public class TestUserGroupMembership extends ManagedTest {
     }
 
     @Test
-    public void testListGroup() {
+    public void testListGroup() throws GigiApiException {
         Group g = Group.getByString("supporter");
         int start = g.getMembers(0, 10).length;
         User ux = User.getById(createVerifiedUser("fn", "ln", createUniqueName() + "@example.org", TEST_PASSWORD));
index e7ea35e10da9230429302f3d0e335e3495a6719e..d55f079735ae348739bdf2a77434d1b0bce5e3ed 100644 (file)
@@ -5,11 +5,12 @@ import static org.junit.Assert.*;
 import java.io.IOException;
 import java.sql.Timestamp;
 
+import org.cacert.gigi.GigiApiException;
 import org.cacert.gigi.database.GigiPreparedStatement;
-import org.cacert.gigi.testUtils.ManagedTest;
+import org.cacert.gigi.testUtils.BusinessTest;
 import org.junit.Test;
 
-public class TestAssurance extends ManagedTest {
+public class TestAssurance extends BusinessTest {
 
     private final Timestamp yesterday = new Timestamp(System.currentTimeMillis() - 24L * 60 * 60 * 1000L);
 
@@ -31,7 +32,7 @@ public class TestAssurance extends ManagedTest {
 
     private final int applicantID;
 
-    public TestAssurance() {
+    public TestAssurance() throws GigiApiException {
         agentID = createAssuranceUser("a", "b", createUniqueName() + "@example.com", TEST_PASSWORD);
         applicantID = createVerifiedUser("a", "c", createUniqueName() + "@example.com", TEST_PASSWORD);
     }
index 721b7a6595a77c9c18d857590ef39274991563a2..50f1cbe4e39881829b705d5a9260681f7050cc6c 100644 (file)
@@ -7,10 +7,10 @@ import java.security.GeneralSecurityException;
 import java.sql.Date;
 
 import org.cacert.gigi.dbObjects.CATS.CATSType;
-import org.cacert.gigi.testUtils.ClientTest;
+import org.cacert.gigi.testUtils.ClientBusinessTest;
 import org.junit.Test;
 
-public class TestCATS extends ClientTest {
+public class TestCATS extends ClientBusinessTest {
 
     /**
      * at least 11 months ago (but less than 12), so is inside the window of
@@ -28,17 +28,17 @@ public class TestCATS extends ClientTest {
 
     @Test
     public void testRAChallenge() throws IOException, GeneralSecurityException {
-        CATS.enterResult(User.getById(id), CATSType.ASSURER_CHALLENGE, min12month, "en_US", "1");
+        CATS.enterResult(u, CATSType.ASSURER_CHALLENGE, min12month, "en_US", "1");
         assertFalse(CATS.isInCatsLimit(id, CATSType.ASSURER_CHALLENGE.getId()));
-        CATS.enterResult(User.getById(id), CATSType.ASSURER_CHALLENGE, min11month, "en_US", "1");
+        CATS.enterResult(u, CATSType.ASSURER_CHALLENGE, min11month, "en_US", "1");
         assertTrue(CATS.isInCatsLimit(id, CATSType.ASSURER_CHALLENGE.getId()));
     }
 
     @Test
     public void testCodeSigningChallenge() throws IOException, GeneralSecurityException {
-        CATS.enterResult(User.getById(id), CATSType.CODE_SIGNING_CHALLENGE_NAME, min12month, "en_US", "1");
+        CATS.enterResult(u, CATSType.CODE_SIGNING_CHALLENGE_NAME, min12month, "en_US", "1");
         assertFalse(CATS.isInCatsLimit(id, CATSType.CODE_SIGNING_CHALLENGE_NAME.getId()));
-        CATS.enterResult(User.getById(id), CATSType.CODE_SIGNING_CHALLENGE_NAME, min11month, "en_US", "1");
+        CATS.enterResult(u, CATSType.CODE_SIGNING_CHALLENGE_NAME, min11month, "en_US", "1");
         assertTrue(CATS.isInCatsLimit(id, CATSType.CODE_SIGNING_CHALLENGE_NAME.getId()));
     }
 }
index 3535abb006193919f20ebd288ac55dc70995576b..f918e3fe11dbeb6698966cdc9ab200df92e8b453 100644 (file)
@@ -26,6 +26,7 @@ import java.util.Random;
 import javax.net.ssl.SSLSocketFactory;
 
 import org.cacert.gigi.testUtils.ConfiguredTest;
+import org.cacert.gigi.util.ServerConstants;
 import org.junit.Test;
 
 import sun.security.x509.AlgorithmId;
@@ -84,7 +85,7 @@ public class TestSendmail extends ConfiguredTest {
             imapUntil(br, "exp");
             pw.println("log logout");
             imapUntil(br, "log");
-            assertThat(body, containsString("From: support@cacert.local"));
+            assertThat(body, containsString("From: support@" + ServerConstants.getWwwHostName().replaceAll("^www.", "")));
             assertThat(body, containsString("To: gigi-testuser@dogcraft.de"));
             assertThat(body, containsString("Subject: " + subj));
             assertThat(body, containsString(Base64.getEncoder().encodeToString(msg.getBytes("UTF-8"))));
diff --git a/tests/org/cacert/gigi/testUtils/BusinessTest.java b/tests/org/cacert/gigi/testUtils/BusinessTest.java
new file mode 100644 (file)
index 0000000..dc62b30
--- /dev/null
@@ -0,0 +1,150 @@
+package org.cacert.gigi.testUtils;
+
+import static org.junit.Assert.*;
+
+import java.io.IOException;
+import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.sql.SQLException;
+import java.util.Calendar;
+import java.util.Locale;
+import java.util.Properties;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.cacert.gigi.GigiApiException;
+import org.cacert.gigi.dbObjects.Domain;
+import org.cacert.gigi.dbObjects.EmailAddress;
+import org.cacert.gigi.dbObjects.Name;
+import org.cacert.gigi.dbObjects.User;
+import org.cacert.gigi.email.EmailProvider;
+import org.cacert.gigi.ping.PingerDaemon;
+import org.cacert.gigi.testUtils.TestEmailReceiver.TestMail;
+import org.cacert.gigi.util.DayDate;
+import org.junit.BeforeClass;
+
+public abstract class BusinessTest extends ConfiguredTest {
+
+    public static class InVMEmail extends EmailProvider implements MailReceiver {
+
+        private static InVMEmail instance;
+
+        LinkedBlockingQueue<TestMail> mails = new LinkedBlockingQueue<>();
+
+        public InVMEmail(Properties p) {
+            instance = this;
+        }
+
+        @Override
+        public void sendmail(String to, String subject, String message, String from, String replyto, String toname, String fromname, String errorsto, boolean extra) throws IOException {
+            TestMail tm = new TestEmailReceiver.TestMail(to, subject, message, fromname, replyto) {
+
+                @Override
+                public void verify() throws IOException {
+                    Pattern p = Pattern.compile("type=(email|domain)&id=([0-9]+)&hash=([a-zA-Z0-9]*)");
+                    Matcher m = p.matcher(extractLink());
+                    assertTrue(m.find());
+                    String type = m.group(1);
+                    try {
+                        if (type.equals("domain")) {
+                            Domain.getById(Integer.parseInt(m.group(2))).verify(m.group(3));
+                        } else {
+                            EmailAddress.getById(Integer.parseInt(m.group(2))).verify(m.group(3));
+                        }
+                    } catch (GigiApiException e) {
+                        throw new Error(e);
+                    }
+                }
+            };
+            mails.add(tm);
+        }
+
+        public static InVMEmail getInstance() {
+            return instance;
+        }
+
+        @Override
+        public void clearMails() {
+            mails.clear();
+        }
+
+        @Override
+        public TestMail receive() {
+            try {
+                return mails.poll(30, TimeUnit.SECONDS);
+            } catch (InterruptedException e) {
+                throw new Error(e);
+            }
+        }
+
+        @Override
+        public void setApproveRegex(Pattern compiled) {
+            throw new Error("Currently unimplemented");
+        }
+
+        @Override
+        public void setEmailCheckError(String string) {
+            throw new Error("Currently unimplemented");
+        }
+
+        @Override
+        public TestMail poll() {
+            throw new Error("Currently unimplemented");
+        }
+
+    }
+
+    @BeforeClass
+    public static void purgeDBBeforeTest() throws SQLException, IOException {
+        purgeOnlyDB();
+    }
+
+    @BeforeClass
+    public static void initMail() {
+        Properties p = new Properties();
+        p.setProperty("emailProvider", InVMEmail.class.getName());
+        EmailProvider.initSystem(p, null, null);
+        try {
+            new PingerDaemon(KeyStore.getInstance("JKS")).start();
+        } catch (KeyStoreException e) {
+            throw new Error(e);
+        }
+    }
+
+    public static User createVerifiedUser() throws GigiApiException, IOException {
+        Calendar c = Calendar.getInstance();
+        c.set(1950, 1, 1, 0, 0, 0);
+        c.set(Calendar.MILLISECOND, 0);
+
+        User u = new User(createUniqueName() + "@email.com", TEST_PASSWORD, new Name("a", "m", "c", ""), new DayDate(c.getTimeInMillis()), Locale.ENGLISH);
+        InVMEmail.getInstance().mails.poll().verify();
+        return u;
+    }
+
+    public static int createVerifiedUser(String f, String l, String mail, String pw) throws GigiApiException {
+        Calendar c = Calendar.getInstance();
+        c.set(1950, 1, 1, 0, 0, 0);
+        c.set(Calendar.MILLISECOND, 0);
+
+        User u = new User(mail, pw, new Name(f, l, "", ""), new DayDate(c.getTimeInMillis()), Locale.ENGLISH);
+        try {
+            InVMEmail.getInstance().mails.poll().verify();
+        } catch (IOException e) {
+            throw new Error(e);
+        }
+        return u.getId();
+    }
+
+    public static int createAssuranceUser(String f, String l, String mail, String pw) throws GigiApiException {
+        int u = createVerifiedUser(f, l, mail, pw);
+        makeAssurer(u);
+        return u;
+    }
+
+    @Override
+    public MailReceiver getMailReciever() {
+        return InVMEmail.getInstance();
+    }
+}
diff --git a/tests/org/cacert/gigi/testUtils/ClientBusinessTest.java b/tests/org/cacert/gigi/testUtils/ClientBusinessTest.java
new file mode 100644 (file)
index 0000000..e096be4
--- /dev/null
@@ -0,0 +1,20 @@
+package org.cacert.gigi.testUtils;
+
+import org.cacert.gigi.GigiApiException;
+import org.cacert.gigi.dbObjects.User;
+
+public class ClientBusinessTest extends BusinessTest {
+
+    protected final User u;
+
+    protected final int id;
+
+    public ClientBusinessTest() {
+        try {
+            id = createVerifiedUser("a", "b", createUniqueName() + "@example.com", TEST_PASSWORD);
+            u = User.getById(id);
+        } catch (GigiApiException e) {
+            throw new Error(e);
+        }
+    }
+}
index 9010a5975ef802619338311cc7073dc2bbd59e30..808ddd678486dd0784e340d281aca7add3e3a4a1 100644 (file)
@@ -1,5 +1,7 @@
 package org.cacert.gigi.testUtils;
 
+import static org.junit.Assert.*;
+
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
@@ -10,15 +12,25 @@ import java.security.GeneralSecurityException;
 import java.security.KeyPair;
 import java.security.KeyPairGenerator;
 import java.security.Signature;
+import java.sql.SQLException;
 import java.util.Properties;
 import java.util.TimeZone;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.cacert.gigi.GigiApiException;
 import org.cacert.gigi.database.DatabaseConnection;
 import org.cacert.gigi.database.DatabaseConnection.Link;
+import org.cacert.gigi.database.GigiPreparedStatement;
+import org.cacert.gigi.database.SQLFileManager.ImportType;
+import org.cacert.gigi.dbObjects.CATS.CATSType;
+import org.cacert.gigi.dbObjects.Domain;
+import org.cacert.gigi.dbObjects.DomainPingType;
+import org.cacert.gigi.testUtils.TestEmailReceiver.TestMail;
+import org.cacert.gigi.util.DatabaseManager;
 import org.cacert.gigi.util.DomainAssessment;
 import org.cacert.gigi.util.PEM;
+import org.cacert.gigi.util.ServerConstants;
 import org.junit.BeforeClass;
 
 import sun.security.pkcs10.PKCS10;
@@ -39,6 +51,13 @@ public abstract class ConfiguredTest {
 
     private static boolean envInited = false;
 
+    /**
+     * Some password that fulfills the password criteria.
+     */
+    public static final String TEST_PASSWORD = "xvXV12°§";
+
+    public static final String DIFFICULT_CHARS = "ÜÖÄß𐀀";
+
     @BeforeClass
     public static void initEnvironmentHook() throws IOException {
         initEnvironment();
@@ -46,15 +65,17 @@ public abstract class ConfiguredTest {
 
     public static Properties initEnvironment() throws IOException {
         TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
-        Properties props = generateProps();
         if (envInited) {
-            return props;
+            return generateProps();
         }
         envInited = true;
-        DomainAssessment.init(props);
         try (FileInputStream inStream = new FileInputStream("config/test.properties")) {
             testProps.load(inStream);
         }
+        Properties props = generateProps();
+        ServerConstants.init(props);
+        DomainAssessment.init(props);
+
         if ( !DatabaseConnection.isInited()) {
             DatabaseConnection.init(testProps);
             try {
@@ -69,6 +90,14 @@ public abstract class ConfiguredTest {
 
     private static Properties generateProps() throws Error {
         Properties mainProps = new Properties();
+        mainProps.setProperty("name.secure", testProps.getProperty("name.secure"));
+        mainProps.setProperty("name.www", testProps.getProperty("name.www"));
+        mainProps.setProperty("name.static", testProps.getProperty("name.static"));
+        mainProps.setProperty("name.api", testProps.getProperty("name.api"));
+
+        mainProps.setProperty("https.port", testProps.getProperty("serverPort.https"));
+        mainProps.setProperty("http.port", testProps.getProperty("serverPort.http"));
+
         File out = new File("financial.dat");
         if ( !out.exists()) {
             try (FileOutputStream fos = new FileOutputStream(out)) {
@@ -139,4 +168,48 @@ public abstract class ConfiguredTest {
         }
         return i;
     }
+
+    public static void makeAssurer(int uid) {
+        try (GigiPreparedStatement ps1 = new GigiPreparedStatement("INSERT INTO cats_passed SET user_id=?, variant_id=?, language='en_EN', version=1")) {
+            ps1.setInt(1, uid);
+            ps1.setInt(2, CATSType.ASSURER_CHALLENGE.getId());
+            ps1.execute();
+        }
+
+        try (GigiPreparedStatement ps2 = new GigiPreparedStatement("INSERT INTO `notary` SET `from`=?, `to`=?, points='100'")) {
+            ps2.setInt(1, uid);
+            ps2.setInt(2, uid);
+            ps2.execute();
+        }
+    }
+
+    public MailReceiver getMailReciever() {
+        throw new Error("Feature requires Business or ManagedTest.");
+    }
+
+    public void verify(Domain d) {
+        try {
+            d.addPing(DomainPingType.EMAIL, "admin");
+            TestMail testMail = getMailReciever().receive();
+            testMail.verify();
+            assertTrue(d.isVerified());
+        } catch (GigiApiException e) {
+            throw new Error(e);
+        } catch (IOException e) {
+            throw new Error(e);
+        }
+    }
+
+    public static void purgeOnlyDB() throws SQLException, IOException {
+        System.out.print("... resetting Database");
+        long ms = System.currentTimeMillis();
+        try {
+            DatabaseManager.run(new String[] {
+                    testProps.getProperty("sql.driver"), testProps.getProperty("sql.url"), testProps.getProperty("sql.user"), testProps.getProperty("sql.password")
+            }, ImportType.TRUNCATE);
+        } catch (ClassNotFoundException e) {
+            e.printStackTrace();
+        }
+        System.out.println(" in " + (System.currentTimeMillis() - ms) + " ms");
+    }
 }
diff --git a/tests/org/cacert/gigi/testUtils/MailReceiver.java b/tests/org/cacert/gigi/testUtils/MailReceiver.java
new file mode 100644 (file)
index 0000000..99a8886
--- /dev/null
@@ -0,0 +1,19 @@
+package org.cacert.gigi.testUtils;
+
+import java.util.regex.Pattern;
+
+import org.cacert.gigi.testUtils.TestEmailReceiver.TestMail;
+
+public interface MailReceiver {
+
+    void clearMails();
+
+    TestMail receive();
+
+    void setApproveRegex(Pattern compiled);
+
+    void setEmailCheckError(String string);
+
+    TestMail poll();
+
+}
index f3c0044bfa4213901ac4dbd241a8331ed06c4a57..1ea49cf404672be28a59b0175a91f36cc1cafe85 100644 (file)
@@ -37,10 +37,6 @@ import org.cacert.gigi.DevelLauncher;
 import org.cacert.gigi.GigiApiException;
 import org.cacert.gigi.database.GigiPreparedStatement;
 import org.cacert.gigi.database.GigiResultSet;
-import org.cacert.gigi.database.SQLFileManager.ImportType;
-import org.cacert.gigi.dbObjects.CATS.CATSType;
-import org.cacert.gigi.dbObjects.Domain;
-import org.cacert.gigi.dbObjects.DomainPingType;
 import org.cacert.gigi.dbObjects.EmailAddress;
 import org.cacert.gigi.dbObjects.Group;
 import org.cacert.gigi.dbObjects.Job;
@@ -50,8 +46,6 @@ import org.cacert.gigi.pages.Manager;
 import org.cacert.gigi.pages.account.MyDetails;
 import org.cacert.gigi.pages.main.RegisterPage;
 import org.cacert.gigi.testUtils.TestEmailReceiver.TestMail;
-import org.cacert.gigi.util.DatabaseManager;
-import org.cacert.gigi.util.ServerConstants;
 import org.cacert.gigi.util.SimpleSigner;
 import org.hamcrest.CoreMatchers;
 import org.junit.After;
@@ -68,13 +62,6 @@ public class ManagedTest extends ConfiguredTest {
         System.setProperty("sun.net.http.allowRestrictedHeaders", "true");
     }
 
-    /**
-     * Some password that fulfills the password criteria.
-     */
-    public static final String TEST_PASSWORD = "xvXV12°§";
-
-    public static final String DIFFICULT_CHARS = "ÜÖÄß𐀀";
-
     private static TestEmailReceiver ter;
 
     private static Process gigi;
@@ -113,7 +100,6 @@ public class ManagedTest extends ConfiguredTest {
             purgeDatabase();
             String type = testProps.getProperty("type");
             generateMainProps(mainProps);
-            ServerConstants.init(mainProps);
             if (type.equals("local")) {
                 url = testProps.getProperty("name.www") + ":" + testProps.getProperty("serverPort.https");
                 String[] parts = testProps.getProperty("mail").split(":", 2);
@@ -177,16 +163,7 @@ public class ManagedTest extends ConfiguredTest {
     }
 
     public static void purgeDatabase() throws SQLException, IOException {
-        System.out.print("... resetting Database");
-        long ms = System.currentTimeMillis();
-        try {
-            DatabaseManager.run(new String[] {
-                    testProps.getProperty("sql.driver"), testProps.getProperty("sql.url"), testProps.getProperty("sql.user"), testProps.getProperty("sql.password")
-            }, ImportType.TRUNCATE);
-        } catch (ClassNotFoundException e) {
-            e.printStackTrace();
-        }
-        System.out.println(" in " + (System.currentTimeMillis() - ms) + " ms");
+        purgeOnlyDB();
         clearCaches();
     }
 
@@ -200,13 +177,7 @@ public class ManagedTest extends ConfiguredTest {
     private static void generateMainProps(Properties mainProps) {
         mainProps.setProperty("testrunner", "true");
         mainProps.setProperty("host", "127.0.0.1");
-        mainProps.setProperty("name.secure", testProps.getProperty("name.secure"));
-        mainProps.setProperty("name.www", testProps.getProperty("name.www"));
-        mainProps.setProperty("name.static", testProps.getProperty("name.static"));
-        mainProps.setProperty("name.api", testProps.getProperty("name.api"));
 
-        mainProps.setProperty("https.port", testProps.getProperty("serverPort.https"));
-        mainProps.setProperty("http.port", testProps.getProperty("serverPort.http"));
         mainProps.setProperty("emailProvider", "org.cacert.gigi.email.TestEmailProvider");
         mainProps.setProperty("emailProvider.port", "8473");
         mainProps.setProperty("sql.driver", testProps.getProperty("sql.driver"));
@@ -243,7 +214,8 @@ public class ManagedTest extends ConfiguredTest {
         ManagedTest.setAcceptLanguage(null);
     }
 
-    public static TestEmailReceiver getMailReciever() {
+    @Override
+    public MailReceiver getMailReciever() {
         return ter;
     }
 
@@ -346,20 +318,6 @@ public class ManagedTest extends ConfiguredTest {
         return uid;
     }
 
-    public static void makeAssurer(int uid) {
-        try (GigiPreparedStatement ps1 = new GigiPreparedStatement("INSERT INTO cats_passed SET user_id=?, variant_id=?, language='en_EN', version=1")) {
-            ps1.setInt(1, uid);
-            ps1.setInt(2, CATSType.ASSURER_CHALLENGE.getId());
-            ps1.execute();
-        }
-
-        try (GigiPreparedStatement ps2 = new GigiPreparedStatement("INSERT INTO `notary` SET `from`=?, `to`=?, points='100'")) {
-            ps2.setInt(1, uid);
-            ps2.setInt(2, uid);
-            ps2.execute();
-        }
-    }
-
     protected static String stripCookie(String headerField) {
         return headerField.substring(0, headerField.indexOf(';'));
     }
@@ -509,7 +467,7 @@ public class ManagedTest extends ConfiguredTest {
         return (HttpURLConnection) uc;
     }
 
-    public static EmailAddress createVerifiedEmail(User u) throws InterruptedException, GigiApiException {
+    public EmailAddress createVerifiedEmail(User u) throws InterruptedException, GigiApiException {
         EmailAddress adrr = new EmailAddress(u, createUniqueName() + "test@test.tld", Locale.ENGLISH);
         TestMail testMail = getMailReciever().receive();
         assertEquals(adrr.getAddress(), testMail.getTo());
@@ -524,18 +482,4 @@ public class ManagedTest extends ConfiguredTest {
         return openConnection;
     }
 
-    public static void verify(Domain d) {
-        try {
-            System.out.println(d.getId());
-            d.addPing(DomainPingType.EMAIL, "admin");
-            TestMail testMail = ter.receive();
-            testMail.verify();
-            assertTrue(d.isVerified());
-        } catch (GigiApiException e) {
-            throw new Error(e);
-        } catch (IOException e) {
-            throw new Error(e);
-        }
-    }
-
 }
index 77c3e2d6942e333e9a94ecc954a631a763a3c06d..007fec32a5a91c1a5aec4bdd5c4365b68f9dbb80 100644 (file)
@@ -21,7 +21,7 @@ import org.cacert.gigi.email.TestEmailProvider;
  * intercept the emails. This class resides in the VM that executes the
  * testcases and supplies the intercepted emails to the current test case.
  */
-public final class TestEmailReceiver extends EmailProvider implements Runnable {
+public final class TestEmailReceiver extends EmailProvider implements Runnable, MailReceiver {
 
     /**
      * An email that has been intercepted.
@@ -136,6 +136,7 @@ public final class TestEmailReceiver extends EmailProvider implements Runnable {
      * @return The intercepted {@link TestMail}
      * @see #poll()
      */
+    @Override
     public TestMail receive() {
         TestMail poll;
 
@@ -232,6 +233,7 @@ public final class TestEmailReceiver extends EmailProvider implements Runnable {
     /**
      * Removes all queued mails.
      */
+    @Override
     public void clearMails() {
         mails.clear();
     }
index 22f75b2362789c0f84c92d5608343c483ab50806..477345f36e46bd3404732b76d635728752d8a864 100644 (file)
@@ -2,29 +2,24 @@ package org.cacert.gigi.util;
 
 import static org.junit.Assert.*;
 
-import java.io.IOException;
 import java.sql.SQLException;
 import java.util.Date;
 
 import org.cacert.gigi.GigiApiException;
 import org.cacert.gigi.database.GigiPreparedStatement;
 import org.cacert.gigi.dbObjects.Assurance.AssuranceType;
+import org.cacert.gigi.dbObjects.ObjectCache;
 import org.cacert.gigi.dbObjects.User;
 import org.cacert.gigi.output.DateSelector;
-import org.cacert.gigi.testUtils.ManagedTest;
+import org.cacert.gigi.testUtils.BusinessTest;
 import org.junit.Test;
 
-public class TestNotary extends ManagedTest {
+public class TestNotary extends BusinessTest {
 
     // These tests create a lot of users and therefore require resetting of the
     // registering-rate-limit.
     @Test
     public void testNormalAssurance() throws SQLException, GigiApiException {
-        try {
-            clearCaches();
-        } catch (IOException e) {
-            throw new Error(e);
-        }
         User[] users = new User[30];
         for (int i = 0; i < users.length; i++) {
             int id = createVerifiedUser("fn" + i, "ln" + i, createUniqueName() + "@email.org", TEST_PASSWORD);
@@ -66,11 +61,6 @@ public class TestNotary extends ManagedTest {
 
     @Test
     public void testPoJam() throws SQLException, GigiApiException {
-        try {
-            clearCaches();
-        } catch (IOException e) {
-            throw new Error(e);
-        }
         User[] users = new User[30];
         for (int i = 0; i < users.length; i++) {
             int id = createVerifiedUser("fn" + i, "ln" + i, createUniqueName() + "@email.org", TEST_PASSWORD);
@@ -81,6 +71,7 @@ public class TestNotary extends ManagedTest {
             ps.setInt(1, id);
             ps.execute();
         }
+        ObjectCache.clearAllCaches(); // reload values from db
         User assurer = User.getById(id);
         for (int i = 0; i < users.length; i++) {
             assuranceFail(assurer, users[i], -1, "test-notary", "2014-01-01");