This helps to clean up several tests.
Change-Id: Ief75f96307f102621402f0b097181126404d6ad7
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];
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());
@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
@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
@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");
}
}
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);
@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()))));
@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()))));
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 {
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 {
}
@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();
}
@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);
}
@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);
}
@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);
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");
}
@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));
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);
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);
}
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
@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()));
}
}
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;
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"))));
--- /dev/null
+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();
+ }
+}
--- /dev/null
+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);
+ }
+ }
+}
package org.cacert.gigi.testUtils;
+import static org.junit.Assert.*;
+
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
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;
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();
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 {
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)) {
}
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");
+ }
}
--- /dev/null
+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();
+
+}
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;
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;
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;
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);
}
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();
}
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"));
ManagedTest.setAcceptLanguage(null);
}
- public static TestEmailReceiver getMailReciever() {
+ @Override
+ public MailReceiver getMailReciever() {
return ter;
}
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(';'));
}
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());
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);
- }
- }
-
}
* 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.
* @return The intercepted {@link TestMail}
* @see #poll()
*/
+ @Override
public TestMail receive() {
TestMail poll;
/**
* Removes all queued mails.
*/
+ @Override
public void clearMails() {
mails.clear();
}
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);
@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);
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");