]> WPIA git - gigi.git/blobdiff - tests/org/cacert/gigi/testUtils/ConfiguredTest.java
upd: factor out default client certificate profile
[gigi.git] / tests / org / cacert / gigi / testUtils / ConfiguredTest.java
index 1e4d49aee70417caae6ae9f85cb2127b9a1aa355..1467f434145b6ab583b7f10d9246308a58fa3116 100644 (file)
@@ -13,7 +13,11 @@ import java.security.KeyPair;
 import java.security.KeyPairGenerator;
 import java.security.Signature;
 import java.sql.SQLException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.Properties;
+import java.util.Random;
 import java.util.TimeZone;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -24,13 +28,19 @@ 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.CertificateProfile;
 import org.cacert.gigi.dbObjects.Domain;
 import org.cacert.gigi.dbObjects.DomainPingType;
+import org.cacert.gigi.dbObjects.User;
 import org.cacert.gigi.testUtils.TestEmailReceiver.TestMail;
 import org.cacert.gigi.util.DatabaseManager;
 import org.cacert.gigi.util.DomainAssessment;
+import org.cacert.gigi.util.Notary;
 import org.cacert.gigi.util.PEM;
+import org.cacert.gigi.util.PasswordHash;
 import org.cacert.gigi.util.ServerConstants;
+import org.cacert.gigi.util.TimeConditions;
+import org.junit.AfterClass;
 import org.junit.BeforeClass;
 
 import sun.security.pkcs10.PKCS10;
@@ -63,6 +73,8 @@ public abstract class ConfiguredTest {
         initEnvironment();
     }
 
+    private static Link l;
+
     public static Properties initEnvironment() throws IOException {
         TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
         if (envInited) {
@@ -74,7 +86,9 @@ public abstract class ConfiguredTest {
         }
         Properties props = generateProps();
         ServerConstants.init(props);
+        TimeConditions.init(props);
         DomainAssessment.init(props);
+        PasswordHash.init(props);
 
         if ( !DatabaseConnection.isInited()) {
             DatabaseConnection.init(testProps);
@@ -84,8 +98,16 @@ public abstract class ConfiguredTest {
                 throw new Error(e);
             }
         }
+
         return props;
+    }
 
+    @AfterClass
+    public static void closeDBLink() {
+        if (l != null) {
+            l.close();
+            l = null;
+        }
     }
 
     private static Properties generateProps() throws Error {
@@ -107,6 +129,7 @@ public abstract class ConfiguredTest {
             }
         }
         mainProps.setProperty("highFinancialValue", out.getAbsolutePath());
+        mainProps.setProperty("scrypt.params", "1;1;1");
         return mainProps;
     }
 
@@ -153,10 +176,27 @@ public abstract class ConfiguredTest {
 
     static int count = 0;
 
-    private static Link l;
+    public static String createRandomIDString() {
+        final char[] chars = "abcdefghijklmnopqrstuvwxyz0123456789".toCharArray();
+        final int idStringLength = 16;
 
-    public static String createUniqueName() {
-        return "test" + System.currentTimeMillis() + "a" + (count++) + "u";
+        Random sr;
+        sr = new Random();
+
+        StringBuilder sb = new StringBuilder(idStringLength);
+        for (int i = 0; i < idStringLength; i++) {
+            sb.append(chars[sr.nextInt(chars.length)]);
+        }
+
+        return sb.toString();
+    }
+
+    public static synchronized String createUniqueName() {
+        return "test" + createRandomIDString() + "a" + (count++) + "u";
+    }
+
+    public static CertificateProfile getClientProfile() {
+        return CertificateProfile.getByName("client");
     }
 
     public static int countRegex(String text, String pattern) {
@@ -170,7 +210,7 @@ public abstract class ConfiguredTest {
     }
 
     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")) {
+        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();
@@ -178,7 +218,7 @@ public abstract class ConfiguredTest {
 
         try (GigiPreparedStatement ps2 = new GigiPreparedStatement("INSERT INTO `notary` SET `from`=?, `to`=?, points='100'")) {
             ps2.setInt(1, uid);
-            ps2.setInt(2, uid);
+            ps2.setInt(2, User.getById(uid).getPreferredName().getId());
             ps2.execute();
         }
     }
@@ -201,7 +241,7 @@ public abstract class ConfiguredTest {
     }
 
     public static void purgeOnlyDB() throws SQLException, IOException {
-        System.out.print("... resetting Database");
+        System.out.println("... resetting Database");
         long ms = System.currentTimeMillis();
         try {
             DatabaseManager.run(new String[] {
@@ -210,6 +250,14 @@ public abstract class ConfiguredTest {
         } catch (ClassNotFoundException e) {
             e.printStackTrace();
         }
-        System.out.println(" in " + (System.currentTimeMillis() - ms) + " ms");
+        System.out.println("Database reset complete in " + (System.currentTimeMillis() - ms) + " ms.");
+    }
+
+    public static String validVerificationDateString() {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        Calendar c = Calendar.getInstance();
+        c.setTimeInMillis(System.currentTimeMillis());
+        c.add(Calendar.MONTH, -Notary.LIMIT_MAX_MONTHS_VERIFICATION + 1);
+        return sdf.format(new Date(c.getTimeInMillis()));
     }
 }