]> WPIA git - gigi.git/commitdiff
UPD: Cleanup User-class.
authorFelix Dörre <felix@dogcraft.de>
Sun, 18 Oct 2015 10:08:36 +0000 (12:08 +0200)
committerFelix Dörre <felix@dogcraft.de>
Sun, 18 Oct 2015 10:08:36 +0000 (12:08 +0200)
13 files changed:
src/org/cacert/gigi/dbObjects/CertificateOwner.java
src/org/cacert/gigi/dbObjects/EmailAddress.java
src/org/cacert/gigi/dbObjects/Organisation.java
src/org/cacert/gigi/dbObjects/User.java
src/org/cacert/gigi/pages/account/mail/MailAddForm.java
src/org/cacert/gigi/pages/main/Signup.java
src/org/cacert/gigi/util/PasswordStrengthChecker.java
tests/org/cacert/gigi/TestObjectCache.java
tests/org/cacert/gigi/TestUser.java
tests/org/cacert/gigi/pages/account/TestMailManagement.java
tests/org/cacert/gigi/testUtils/ManagedTest.java
tests/org/cacert/gigi/util/TestPasswordStrengthChecker.java
util-testing/org/cacert/gigi/pages/Manager.java

index 9560224e3601283bce748b51033ba29b2365112a..84acca2eefb7d55e8f670e29147d8686c93ef1ab 100644 (file)
@@ -12,11 +12,16 @@ public abstract class CertificateOwner implements IdCachable {
 
     private int id;
 
-    public CertificateOwner(int id) {
+    protected CertificateOwner(int id) {
         this.id = id;
     }
 
-    public CertificateOwner() {}
+    protected CertificateOwner() {
+        GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("INSERT INTO `certOwners` DEFAULT VALUES");
+        ps.execute();
+        id = ps.lastInsertId();
+        myCache.put(this);
+    }
 
     public int getId() {
         return id;
@@ -43,20 +48,6 @@ public abstract class CertificateOwner implements IdCachable {
         return u;
     }
 
-    protected int insert() {
-        synchronized (User.class) {
-            if (id != 0) {
-                throw new Error("refusing to insert");
-            }
-            GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("INSERT INTO `certOwners` DEFAULT VALUES");
-            ps.execute();
-            id = ps.lastInsertId();
-            myCache.put(this);
-        }
-
-        return id;
-    }
-
     public Domain[] getDomains() {
         GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("SELECT `id` FROM `domains` WHERE `memid`=? AND `deleted` IS NULL");
         ps.setInt(1, getId());
index fbd7057ad8d6bb550bae00ba8279ac7cb4063da0..b7bb080fa16adf67bc676e6de6b0edf94fbb74c6 100644 (file)
@@ -1,6 +1,7 @@
 package org.cacert.gigi.dbObjects;
 
 import java.io.IOException;
+import java.util.Locale;
 
 import org.cacert.gigi.GigiApiException;
 import org.cacert.gigi.database.DatabaseConnection;
@@ -36,16 +37,17 @@ public class EmailAddress implements IdCachable, Verifyable {
         rs.close();
     }
 
-    public EmailAddress(User owner, String address) {
+    public EmailAddress(User owner, String address, Locale mailLocale) throws GigiApiException {
         if ( !EmailProvider.MAIL.matcher(address).matches()) {
             throw new IllegalArgumentException("Invalid email.");
         }
         this.address = address;
         this.owner = owner;
         this.hash = RandomToken.generateToken(16);
+        insert(Language.getInstance(mailLocale));
     }
 
-    public void insert(Language l) throws GigiApiException {
+    private void insert(Language l) throws GigiApiException {
         try {
             synchronized (EmailAddress.class) {
                 if (id != 0) {
index 79c088c81ed6ce24dd80e5fbc159a015704e4abc..b51d2838e4e045eb40296ed5c2dd301266a41f2e 100644 (file)
@@ -61,7 +61,7 @@ public class Organisation extends CertificateOwner {
         this.province = province;
         this.city = city;
         this.email = email;
-        int id = super.insert();
+        int id = getId();
         GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("INSERT INTO organisations SET id=?, name=?, state=?, province=?, city=?, contactEmail=?, creator=?");
         ps.setInt(1, id);
         ps.setString(2, name);
index 69a654878cfe4a1d0797f49f702e9ce8edc85c5d..eeb79dfdbaa4d3bb03abafe68122c8f44923443c 100644 (file)
@@ -62,7 +62,24 @@ public class User extends CertificateOwner {
         }
     }
 
-    public User() {}
+    public User(String email, String password, Name name, Date dob, Locale locale) throws GigiApiException {
+        this.email = email;
+        this.dob = dob;
+        this.name = name;
+        this.locale = locale;
+        GigiPreparedStatement query = DatabaseConnection.getInstance().prepare("INSERT INTO `users` SET `email`=?, `password`=?, " + "`fname`=?, `mname`=?, `lname`=?, " + "`suffix`=?, `dob`=?, `language`=?, id=?");
+        query.setString(1, email);
+        query.setString(2, PasswordHash.hash(password));
+        query.setString(3, name.getFname());
+        query.setString(4, name.getMname());
+        query.setString(5, name.getLname());
+        query.setString(6, name.getSuffix());
+        query.setDate(7, dob);
+        query.setString(8, locale.toString());
+        query.setInt(9, getId());
+        query.execute();
+        new EmailAddress(this, email, locale);
+    }
 
     public Name getName() {
         return name;
@@ -84,21 +101,6 @@ public class User extends CertificateOwner {
         this.email = email;
     }
 
-    public void insert(String password) {
-        int id = super.insert();
-        GigiPreparedStatement query = DatabaseConnection.getInstance().prepare("INSERT INTO `users` SET `email`=?, `password`=?, " + "`fname`=?, `mname`=?, `lname`=?, " + "`suffix`=?, `dob`=?, `language`=?, id=?");
-        query.setString(1, email);
-        query.setString(2, PasswordHash.hash(password));
-        query.setString(3, name.getFname());
-        query.setString(4, name.getMname());
-        query.setString(5, name.getLname());
-        query.setString(6, name.getSuffix());
-        query.setDate(7, new java.sql.Date(dob.getTime()));
-        query.setString(8, locale.toString());
-        query.setInt(9, id);
-        query.execute();
-    }
-
     public void changePassword(String oldPass, String newPass) throws GigiApiException {
         GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("SELECT `password` FROM `users` WHERE `id`=?");
         ps.setInt(1, getId());
@@ -111,7 +113,7 @@ public class User extends CertificateOwner {
             }
         }
 
-        PasswordStrengthChecker.assertStrongPassword(newPass, this);
+        PasswordStrengthChecker.assertStrongPassword(newPass, getName(), getEmail());
         ps = DatabaseConnection.getInstance().prepare("UPDATE users SET `password`=? WHERE id=?");
         ps.setString(1, PasswordHash.hash(newPass));
         ps.setInt(2, getId());
index 94395947e52c8755ed99f9aad2b31046442b22e6..6a2bb2c51d9b7550bd97ebdff654a6b0f7bee683 100644 (file)
@@ -34,8 +34,7 @@ public class MailAddForm extends Form {
         String formMail = req.getParameter("newemail");
         mail = formMail;
         try {
-            EmailAddress addr = new EmailAddress(target, mail);
-            addr.insert(Page.getLanguage(req));
+            new EmailAddress(target, mail, Page.getLanguage(req).getLocale());
         } catch (IllegalArgumentException e) {
             out.println("<div class='formError'>Error: Invalid address!</div>");
             return false;
index a637f83d462c899ac668a1839e22e6bbda77f1bb..500598181b003dcca003e646da46cfa118b28d65 100644 (file)
@@ -2,7 +2,6 @@ package org.cacert.gigi.pages.main;
 
 import java.io.IOException;
 import java.io.PrintWriter;
-import java.sql.Date;
 import java.sql.SQLException;
 import java.util.HashMap;
 import java.util.Map;
@@ -13,7 +12,6 @@ import org.cacert.gigi.GigiApiException;
 import org.cacert.gigi.database.DatabaseConnection;
 import org.cacert.gigi.database.GigiPreparedStatement;
 import org.cacert.gigi.database.GigiResultSet;
-import org.cacert.gigi.dbObjects.EmailAddress;
 import org.cacert.gigi.dbObjects.Name;
 import org.cacert.gigi.dbObjects.User;
 import org.cacert.gigi.email.EmailProvider;
@@ -28,7 +26,9 @@ import org.cacert.gigi.util.PasswordStrengthChecker;
 
 public class Signup extends Form {
 
-    private User buildup = new User();
+    Name buildupName = new Name("", "", "", "");
+
+    String email = "";
 
     private Template t;
 
@@ -37,9 +37,6 @@ public class Signup extends Form {
     public Signup(HttpServletRequest hsr) {
         super(hsr);
         t = new Template(Signup.class.getResource("Signup.templ"));
-        buildup.setName(new Name("", "", "", ""));
-        buildup.setEmail("");
-        buildup.setDoB(new Date(0));
     }
 
     DateSelector myDoB = new DateSelector("day", "month", "year");
@@ -47,13 +44,12 @@ public class Signup extends Form {
     @Override
     public void outputContent(PrintWriter out, Language l, Map<String, Object> outerVars) {
         HashMap<String, Object> vars = new HashMap<String, Object>();
-        Name buildupName = buildup.getName();
         vars.put("fname", HTMLEncoder.encodeHTML(buildupName.getFname()));
         vars.put("mname", HTMLEncoder.encodeHTML(buildupName.getMname()));
         vars.put("lname", HTMLEncoder.encodeHTML(buildupName.getLname()));
         vars.put("suffix", HTMLEncoder.encodeHTML(buildupName.getSuffix()));
         vars.put("dob", myDoB);
-        vars.put("email", HTMLEncoder.encodeHTML(buildup.getEmail()));
+        vars.put("email", HTMLEncoder.encodeHTML(email));
         vars.put("general", general ? " checked=\"checked\"" : "");
         vars.put("country", country ? " checked=\"checked\"" : "");
         vars.put("regional", regional ? " checked=\"checked\"" : "");
@@ -64,10 +60,10 @@ public class Signup extends Form {
     }
 
     private void update(HttpServletRequest r) {
-        String fname = buildup.getName().getFname();
-        String lname = buildup.getName().getLname();
-        String mname = buildup.getName().getMname();
-        String suffix = buildup.getName().getSuffix();
+        String fname = buildupName.getFname();
+        String lname = buildupName.getLname();
+        String mname = buildupName.getMname();
+        String suffix = buildupName.getSuffix();
         if (r.getParameter("fname") != null) {
             fname = r.getParameter("fname");
         }
@@ -81,9 +77,9 @@ public class Signup extends Form {
             suffix = r.getParameter("suffix");
         }
         if (r.getParameter("email") != null) {
-            buildup.setEmail(r.getParameter("email"));
+            email = r.getParameter("email");
         }
-        buildup.setName(new Name(fname, lname, mname, suffix));
+        buildupName = new Name(fname, lname, mname, suffix);
         general = "1".equals(r.getParameter("general"));
         country = "1".equals(r.getParameter("country"));
         regional = "1".equals(r.getParameter("regional"));
@@ -97,7 +93,7 @@ public class Signup extends Form {
     @Override
     public synchronized boolean submit(PrintWriter out, HttpServletRequest req) {
         update(req);
-        if (buildup.getName().getLname().trim().equals("")) {
+        if (buildupName.getLname().trim().equals("")) {
             outputError(out, req, "Last name were blank.");
         }
         if ( !myDoB.isValid()) {
@@ -106,7 +102,7 @@ public class Signup extends Form {
         if ( !"1".equals(req.getParameter("cca_agree"))) {
             outputError(out, req, "You have to agree to the CAcert Community agreement.");
         }
-        if (buildup.getEmail().equals("")) {
+        if (email.equals("")) {
             outputError(out, req, "Email Address was blank");
         }
         String pw1 = req.getParameter("pword1");
@@ -116,7 +112,7 @@ public class Signup extends Form {
         } else if ( !pw1.equals(pw2)) {
             outputError(out, req, "Pass Phrases don't match");
         }
-        int pwpoints = PasswordStrengthChecker.checkpw(pw1, buildup);
+        int pwpoints = PasswordStrengthChecker.checkpw(pw1, buildupName, email);
         if (pwpoints < 3) {
             outputError(out, req, "The Pass Phrase you submitted failed to contain enough" + " differing characters and/or contained words from" + " your name and/or email address.");
         }
@@ -125,8 +121,8 @@ public class Signup extends Form {
         }
         GigiPreparedStatement q1 = DatabaseConnection.getInstance().prepare("SELECT * FROM `emails` WHERE `email`=? AND `deleted` IS NULL");
         GigiPreparedStatement q2 = DatabaseConnection.getInstance().prepare("SELECT * FROM `certOwners` INNER JOIN `users` ON `users`.`id`=`certOwners`.`id` WHERE `email`=? AND `deleted` IS NULL");
-        q1.setString(1, buildup.getEmail());
-        q2.setString(1, buildup.getEmail());
+        q1.setString(1, email);
+        q2.setString(1, email);
         GigiResultSet r1 = q1.executeQuery();
         GigiResultSet r2 = q2.executeQuery();
         if (r1.next() || r2.next()) {
@@ -135,7 +131,7 @@ public class Signup extends Form {
         r1.close();
         r2.close();
         GigiPreparedStatement q3 = DatabaseConnection.getInstance().prepare("SELECT `domain` FROM `baddomains` WHERE `domain`=RIGHT(?, LENGTH(`domain`))");
-        q3.setString(1, buildup.getEmail());
+        q3.setString(1, email);
 
         GigiResultSet r3 = q3.executeQuery();
         if (r3.next()) {
@@ -145,7 +141,7 @@ public class Signup extends Form {
         r3.close();
         String mailResult = EmailProvider.FAIL;
         try {
-            mailResult = HTMLEncoder.encodeHTML(EmailProvider.getInstance().checkEmailServer(0, buildup.getEmail()));
+            mailResult = HTMLEncoder.encodeHTML(EmailProvider.getInstance().checkEmailServer(0, email));
         } catch (IOException e) {
         }
         if ( !mailResult.equals(EmailProvider.OK)) {
@@ -178,21 +174,16 @@ public class Signup extends Form {
     private void run(HttpServletRequest req, String password) throws SQLException, GigiApiException {
         try {
             DatabaseConnection.getInstance().beginTransaction();
-            buildup.setPreferredLocale(Page.getLanguage(req).getLocale());
-            buildup.setDoB(myDoB.getDate());
-            buildup.insert(password);
-            int memid = buildup.getId();
-            EmailAddress ea = new EmailAddress(buildup, buildup.getEmail());
-            ea.insert(Page.getLanguage(req));
+            User u = new User(email, password, buildupName, myDoB.getDate(), Page.getLanguage(req).getLocale());
 
             GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("INSERT INTO `alerts` SET `memid`=?," + " `general`=?, `country`=?, `regional`=?, `radius`=?");
-            ps.setInt(1, memid);
+            ps.setInt(1, u.getId());
             ps.setBoolean(2, general);
             ps.setBoolean(3, country);
             ps.setBoolean(4, regional);
             ps.setBoolean(5, radius);
             ps.execute();
-            Notary.writeUserAgreement(buildup, "CCA", "account creation", "", true, 0);
+            Notary.writeUserAgreement(u, "CCA", "account creation", "", true, 0);
 
             DatabaseConnection.getInstance().commitTransaction();
         } finally {
index 1eac560f2641f0f99457d6852ef44d016e2873e9..a1d2145075ceb94b69fef7442fa3588de4977f84 100644 (file)
@@ -4,7 +4,6 @@ import java.util.regex.Pattern;
 
 import org.cacert.gigi.GigiApiException;
 import org.cacert.gigi.dbObjects.Name;
-import org.cacert.gigi.dbObjects.User;
 
 public class PasswordStrengthChecker {
 
@@ -52,13 +51,12 @@ public class PasswordStrengthChecker {
         return points;
     }
 
-    public static int checkpw(String pw, User u) {
+    public static int checkpw(String pw, Name name, String email) {
         if (pw == null) {
             return 0;
         }
-        Name name = u.getName();
         int light = checkpwlight(pw);
-        if (contained(pw, u.getEmail())) {
+        if (contained(pw, email)) {
             light -= 2;
         }
         if (contained(pw, name.getFname())) {
@@ -77,8 +75,8 @@ public class PasswordStrengthChecker {
         return light;
     }
 
-    public static void assertStrongPassword(String pw, User u) throws GigiApiException {
-        if (checkpw(pw, u) < 3) {
+    public static void assertStrongPassword(String pw, Name name, String email) throws GigiApiException {
+        if (checkpw(pw, name, email) < 3) {
             throw new GigiApiException("The Pass Phrase you submitted failed to contain enough" + " differing characters and/or contained words from" + " your name and/or email address.");
         }
     }
index d55bef1e1da3e90a495be8d6a0fa02746a6fe2fe..6824c3793ec78cb926384dc416bf1fe8b4631aa2 100644 (file)
@@ -12,7 +12,6 @@ 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.localisation.Language;
 import org.cacert.gigi.testUtils.ManagedTest;
 import org.junit.Test;
 
@@ -21,17 +20,12 @@ public class TestObjectCache extends ManagedTest {
     int uid = createVerifiedUser("fname", "lname", createUniqueName() + "@example.com", TEST_PASSWORD);
 
     @Test
-    public void testUserCache() throws SQLException {
+    public void testUserCache() throws SQLException, GigiApiException {
         assertThat(User.getById(uid), is(sameInstance(User.getById(uid))));
 
-        User u = new User();
-        u.setName(new Name("fname", "lname", "mname", "suffix"));
-        u.setEmail(createUniqueName() + "@example.org");
         Calendar c = Calendar.getInstance();
         c.set(1950, 1, 1);
-        u.setDoB(new Date(c.getTime().getTime()));
-        u.setPreferredLocale(Locale.ENGLISH);
-        u.insert(TEST_PASSWORD);
+        User u = new User(createUniqueName() + "@example.org", TEST_PASSWORD, new Name("fname", "lname", "mname", "suffix"), new Date(c.getTime().getTime()), Locale.ENGLISH);
 
         assertThat(u, is(sameInstance(User.getById(u.getId()))));
         assertThat(User.getById(u.getId()), is(sameInstance(User.getById(u.getId()))));
@@ -49,8 +43,7 @@ public class TestObjectCache extends ManagedTest {
 
     @Test
     public void testEmailCache() throws GigiApiException {
-        EmailAddress em = new EmailAddress(User.getById(uid), createUniqueName() + "@example.org");
-        em.insert(Language.getInstance(Locale.ENGLISH));
+        EmailAddress em = new EmailAddress(User.getById(uid), 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 0bbc4cbb6756e5378cb5bb737c7ca527a8624e23..f91ab113f45505cf9ae21ad31232b2ac4984d368 100644 (file)
@@ -11,22 +11,16 @@ 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.localisation.Language;
 import org.cacert.gigi.testUtils.ManagedTest;
 import org.junit.Test;
 
 public class TestUser extends ManagedTest {
 
     @Test
-    public void testStoreAndLoad() throws SQLException {
-        User u = new User();
-        u.setName(new Name("user", "last", "", ""));
-        u.setPreferredLocale(Locale.ENGLISH);
+    public void testStoreAndLoad() throws SQLException, GigiApiException {
         long dob = System.currentTimeMillis();
         dob -= dob % (1000 * 60 * 60 * 24);
-        u.setDoB(new java.sql.Date(dob));
-        u.setEmail(createUniqueName() + "a@email.org");
-        u.insert("password");
+        User u = new User(createUniqueName() + "a@email.org", "password", new Name("user", "last", "", ""), new java.sql.Date(dob), Locale.ENGLISH);
         int id = u.getId();
         User u2 = User.getById(id);
         assertEquals(u.getName(), u2.getName());
@@ -69,8 +63,8 @@ public class TestUser extends ManagedTest {
         int id = createVerifiedUser("aä", "b", uq + "a@email.org", TEST_PASSWORD);
 
         User u = User.getById(id);
-        new EmailAddress(u, uq + "b@email.org").insert(Language.getInstance(Locale.ENGLISH));
-        new EmailAddress(u, uq + "c@email.org").insert(Language.getInstance(Locale.ENGLISH));
+        new EmailAddress(u, uq + "b@email.org", Locale.ENGLISH);
+        new EmailAddress(u, uq + "c@email.org", Locale.ENGLISH);
         new Domain(u, uq + "a-testdomain.org").insert();
         new Domain(u, uq + "b-testdomain.org").insert();
         new Domain(u, uq + "c-testdomain.org").insert();
@@ -96,19 +90,8 @@ public class TestUser extends ManagedTest {
     }
 
     @Test
-    public void testDoubleInsert() {
-        User u = new User();
-        u.setName(new Name("f", "k", "m", "s"));
-        u.setEmail(createUniqueName() + "@example.org");
-        u.setDoB(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 24 * 365));
-        u.setPreferredLocale(Locale.ENGLISH);
-        u.insert(TEST_PASSWORD);
-        try {
-            u.insert(TEST_PASSWORD);
-            fail("Error expected");
-        } catch (Error e) {
-            // expected
-        }
+    public void testDoubleInsert() throws GigiApiException {
+        User u = new User(createUniqueName() + "@example.org", TEST_PASSWORD, new Name("f", "k", "m", "s"), new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 24 * 365), Locale.ENGLISH);
         Assurance[] ma = u.getMadeAssurances();
         Assurance[] ma2 = u.getMadeAssurances();
         Assurance[] ra = u.getReceivedAssurances();
index 6659a1e115cbacb5467aca7c3cbe8e75267ee8b0..bf97c26964c5c7a697d8fd6309eb973757f313d2 100644 (file)
@@ -12,7 +12,6 @@ import org.cacert.gigi.GigiApiException;
 import org.cacert.gigi.dbObjects.EmailAddress;
 import org.cacert.gigi.dbObjects.ObjectCache;
 import org.cacert.gigi.dbObjects.User;
-import org.cacert.gigi.localisation.Language;
 import org.cacert.gigi.pages.account.mail.MailOverview;
 import org.cacert.gigi.testUtils.ClientTest;
 import org.junit.Test;
@@ -32,9 +31,9 @@ public class TestMailManagement extends ClientTest {
     }
 
     @Test
-    public void testMailAddInternalFaulty() {
+    public void testMailAddInternalFaulty() throws GigiApiException {
         try {
-            new EmailAddress(u, "kurti ");
+            new EmailAddress(u, "kurti ", Locale.ENGLISH);
             fail();
         } catch (IllegalArgumentException e) {
             // Intended.
@@ -76,8 +75,7 @@ public class TestMailManagement extends ClientTest {
 
     @Test
     public void testMailSetDefaultWebUnverified() throws MalformedURLException, UnsupportedEncodingException, IOException, InterruptedException, GigiApiException {
-        EmailAddress adrr = new EmailAddress(u, createUniqueName() + "test@test.tld");
-        adrr.insert(Language.getInstance(Locale.ENGLISH));
+        EmailAddress adrr = new EmailAddress(u, createUniqueName() + "test@test.tld", Locale.ENGLISH);
         assertNotNull(executeBasicWebInteraction(cookie, path, "makedefault&emailid=" + adrr.getId()));
         assertNotEquals(User.getById(u.getId()).getEmail(), adrr.getAddress());
         getMailReciever().clearMails();
index 8686835455db8e1f6e79244b13cb9c71a801010d..cc3215c140f20d84a957e638453f8fd4f11281d5 100644 (file)
@@ -43,7 +43,6 @@ import org.cacert.gigi.dbObjects.EmailAddress;
 import org.cacert.gigi.dbObjects.Group;
 import org.cacert.gigi.dbObjects.ObjectCache;
 import org.cacert.gigi.dbObjects.User;
-import org.cacert.gigi.localisation.Language;
 import org.cacert.gigi.pages.Manager;
 import org.cacert.gigi.pages.account.MyDetails;
 import org.cacert.gigi.pages.main.RegisterPage;
@@ -68,7 +67,7 @@ public class ManagedTest extends ConfiguredTest {
     /**
      * Some password that fulfills the password criteria.
      */
-    protected static final String TEST_PASSWORD = "xvXV12°§";
+    public static final String TEST_PASSWORD = "xvXV12°§";
 
     private static TestEmailReceiver ter;
 
@@ -468,8 +467,7 @@ public class ManagedTest extends ConfiguredTest {
     }
 
     public static EmailAddress createVerifiedEmail(User u) throws InterruptedException, GigiApiException {
-        EmailAddress adrr = new EmailAddress(u, createUniqueName() + "test@test.tld");
-        adrr.insert(Language.getInstance(Locale.ENGLISH));
+        EmailAddress adrr = new EmailAddress(u, createUniqueName() + "test@test.tld", Locale.ENGLISH);
         TestMail testMail = getMailReciever().receive();
         assertEquals(adrr.getAddress(), testMail.getTo());
         String hash = testMail.extractLink().substring(testMail.extractLink().lastIndexOf('=') + 1);
index ffabbb7cd6e1ae014ce1189bf07d51feff5f46a6..254df05a70d5d612e6b755faf15aa26c2e7dea61 100644 (file)
@@ -3,70 +3,71 @@ package org.cacert.gigi.util;
 import static org.junit.Assert.*;
 
 import org.cacert.gigi.dbObjects.Name;
-import org.cacert.gigi.dbObjects.User;
 import org.junit.Test;
 
 public class TestPasswordStrengthChecker {
 
-    User u;
+    Name n = new Name("fname", "lname", "mname", "suffix");
 
-    public TestPasswordStrengthChecker() {
-        u = new User();
-        u.setName(new Name("fname", "lname", "mname", "suffix"));
-        u.setEmail("email");
+    String e = "email";
+
+    public TestPasswordStrengthChecker() {}
+
+    private int check(String pw) {
+        return PasswordStrengthChecker.checkpw(pw, n, e);
     }
 
     @Test
     public void testPasswordLength() {
-        assertEquals(1, PasswordStrengthChecker.checkpw("01234", u));
-        assertEquals(2, PasswordStrengthChecker.checkpw("0123456789012345", u));
-        assertEquals(3, PasswordStrengthChecker.checkpw("012345678901234567890", u));
-        assertEquals(4, PasswordStrengthChecker.checkpw("01234567890123456789012345", u));
-        assertEquals(5, PasswordStrengthChecker.checkpw("0123456789012345678901234567890", u));
+        assertEquals(1, check("01234"));
+        assertEquals(2, check("0123456789012345"));
+        assertEquals(3, check("012345678901234567890"));
+        assertEquals(4, check("01234567890123456789012345"));
+        assertEquals(5, check("0123456789012345678901234567890"));
     }
 
     @Test
     public void testPasswordNonASCII() {
-        assertEquals(2, PasswordStrengthChecker.checkpw("0ä", u));
-        assertEquals(3, PasswordStrengthChecker.checkpw("0aä", u));
-        assertEquals(3, PasswordStrengthChecker.checkpw("0azä", u));
-        assertEquals(3, PasswordStrengthChecker.checkpw("0az.ä", u));
+        assertEquals(2, check("0ä"));
+        assertEquals(3, check("0aä"));
+        assertEquals(3, check("0azä"));
+        assertEquals(3, check("0az.ä"));
     }
 
     @Test
     public void testPasswordCharTypes() {
-        assertEquals(1, PasswordStrengthChecker.checkpw("0", u));
-        assertEquals(2, PasswordStrengthChecker.checkpw("0a", u));
-        assertEquals(2, PasswordStrengthChecker.checkpw("0az", u));
-        assertEquals(3, PasswordStrengthChecker.checkpw("0azZ", u));
-        assertEquals(4, PasswordStrengthChecker.checkpw("0a zZ", u));
-        assertEquals(5, PasswordStrengthChecker.checkpw("0a. zZ", u));
-
-        assertEquals(1, PasswordStrengthChecker.checkpw(".", u));
-        assertEquals(1, PasswordStrengthChecker.checkpw(" ", u));
-        assertEquals(1, PasswordStrengthChecker.checkpw("b", u));
-        assertEquals(1, PasswordStrengthChecker.checkpw("Z", u));
-
-        assertEquals(2, PasswordStrengthChecker.checkpw("0.", u));
-        assertEquals(2, PasswordStrengthChecker.checkpw("0 ", u));
-        assertEquals(2, PasswordStrengthChecker.checkpw("0a", u));
-        assertEquals(2, PasswordStrengthChecker.checkpw("0Z", u));
-
-        assertEquals(2, PasswordStrengthChecker.checkpw(" .", u));
-        assertEquals(2, PasswordStrengthChecker.checkpw(" a", u));
-        assertEquals(2, PasswordStrengthChecker.checkpw(" Z", u));
+        assertEquals(1, check("0"));
+        assertEquals(2, check("0a"));
+        assertEquals(2, check("0az"));
+        assertEquals(3, check("0azZ"));
+        assertEquals(4, check("0a zZ"));
+        assertEquals(5, check("0a. zZ"));
+
+        assertEquals(1, check("."));
+        assertEquals(1, check(" "));
+        assertEquals(1, check("b"));
+        assertEquals(1, check("Z"));
+
+        assertEquals(2, check("0."));
+        assertEquals(2, check("0 "));
+        assertEquals(2, check("0a"));
+        assertEquals(2, check("0Z"));
+
+        assertEquals(2, check(" ."));
+        assertEquals(2, check(" a"));
+        assertEquals(2, check(" Z"));
 
     }
 
     @Test
     public void testPasswordContains() {
-        assertEquals( -1, PasswordStrengthChecker.checkpw("fnamea", u));
-        assertEquals( -5, PasswordStrengthChecker.checkpw("na", u));
-        assertEquals(0, PasswordStrengthChecker.checkpw("1lname", u));
-        assertEquals(0, PasswordStrengthChecker.checkpw("1email", u));
-        assertEquals( -1, PasswordStrengthChecker.checkpw("mai", u));
-        assertEquals( -1, PasswordStrengthChecker.checkpw("suff", u));
-        assertEquals(0, PasswordStrengthChecker.checkpw("1suffix", u));
+        assertEquals( -1, check("fnamea"));
+        assertEquals( -5, check("na"));
+        assertEquals(0, check("1lname"));
+        assertEquals(0, check("1email"));
+        assertEquals( -1, check("mai"));
+        assertEquals( -1, check("suff"));
+        assertEquals(0, check("1suffix"));
 
     }
 
index 4028e0692ce174f9f723e287381f66a8a5cbb280..9b4144a60a46e43c7a6146472ea0a39fcde69c1c 100644 (file)
@@ -149,16 +149,10 @@ public class Manager extends Page {
     }
 
     private void createUser(String email) throws GigiApiException, IllegalAccessException {
-        User u = new User();
-        u.setName(new Name("Först", "Läst", "Müddle", "Süffix"));
-        u.setEmail(email);
         Calendar gc = GregorianCalendar.getInstance();
         gc.set(1990, 0, 1);
-        u.setDoB(new Date(gc.getTime().getTime()));
-        u.setPreferredLocale(Locale.ENGLISH);
-        u.insert("xvXV12°§");
-        EmailAddress ea = new EmailAddress(u, email);
-        ea.insert(Language.getInstance(Locale.ENGLISH));
+        User u = new User(email, "xvXV12°§", new Name("Först", "Läst", "Müddle", "Süffix"), new Date(gc.getTime().getTime()), Locale.ENGLISH);
+        EmailAddress ea = u.getEmails()[0];
         String hash = (String) f.get(ea);
 
         ea.verify(hash);
@@ -213,9 +207,8 @@ public class Manager extends Page {
             resp.getWriter().println("User has been assured.");
         } else if (req.getParameter("addEmail") != null) {
             User u = User.getByEmail(req.getParameter("addEmailEmail"));
-            EmailAddress ea = new EmailAddress(u, req.getParameter("addEmailNew"));
             try {
-                ea.insert(Language.getInstance(Locale.ENGLISH));
+                EmailAddress ea = new EmailAddress(u, req.getParameter("addEmailNew"), Locale.ENGLISH);
                 String hash = (String) f.get(ea);
                 ea.verify(hash);
                 resp.getWriter().println("Email added and verified");