From 673e3f834a719f3b1bfceedfd801a21ca7842cf2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Sun, 18 Oct 2015 12:08:36 +0200 Subject: [PATCH] UPD: Cleanup User-class. --- .../gigi/dbObjects/CertificateOwner.java | 23 ++--- .../cacert/gigi/dbObjects/EmailAddress.java | 6 +- .../cacert/gigi/dbObjects/Organisation.java | 2 +- src/org/cacert/gigi/dbObjects/User.java | 36 ++++---- .../gigi/pages/account/mail/MailAddForm.java | 3 +- src/org/cacert/gigi/pages/main/Signup.java | 49 +++++------ .../gigi/util/PasswordStrengthChecker.java | 10 +-- tests/org/cacert/gigi/TestObjectCache.java | 13 +-- tests/org/cacert/gigi/TestUser.java | 29 ++----- .../pages/account/TestMailManagement.java | 8 +- .../cacert/gigi/testUtils/ManagedTest.java | 6 +- .../util/TestPasswordStrengthChecker.java | 85 ++++++++++--------- .../org/cacert/gigi/pages/Manager.java | 13 +-- 13 files changed, 116 insertions(+), 167 deletions(-) diff --git a/src/org/cacert/gigi/dbObjects/CertificateOwner.java b/src/org/cacert/gigi/dbObjects/CertificateOwner.java index 9560224e..84acca2e 100644 --- a/src/org/cacert/gigi/dbObjects/CertificateOwner.java +++ b/src/org/cacert/gigi/dbObjects/CertificateOwner.java @@ -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()); diff --git a/src/org/cacert/gigi/dbObjects/EmailAddress.java b/src/org/cacert/gigi/dbObjects/EmailAddress.java index fbd7057a..b7bb080f 100644 --- a/src/org/cacert/gigi/dbObjects/EmailAddress.java +++ b/src/org/cacert/gigi/dbObjects/EmailAddress.java @@ -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) { diff --git a/src/org/cacert/gigi/dbObjects/Organisation.java b/src/org/cacert/gigi/dbObjects/Organisation.java index 79c088c8..b51d2838 100644 --- a/src/org/cacert/gigi/dbObjects/Organisation.java +++ b/src/org/cacert/gigi/dbObjects/Organisation.java @@ -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); diff --git a/src/org/cacert/gigi/dbObjects/User.java b/src/org/cacert/gigi/dbObjects/User.java index 69a65487..eeb79dfd 100644 --- a/src/org/cacert/gigi/dbObjects/User.java +++ b/src/org/cacert/gigi/dbObjects/User.java @@ -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()); diff --git a/src/org/cacert/gigi/pages/account/mail/MailAddForm.java b/src/org/cacert/gigi/pages/account/mail/MailAddForm.java index 94395947..6a2bb2c5 100644 --- a/src/org/cacert/gigi/pages/account/mail/MailAddForm.java +++ b/src/org/cacert/gigi/pages/account/mail/MailAddForm.java @@ -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("
Error: Invalid address!
"); return false; diff --git a/src/org/cacert/gigi/pages/main/Signup.java b/src/org/cacert/gigi/pages/main/Signup.java index a637f83d..50059818 100644 --- a/src/org/cacert/gigi/pages/main/Signup.java +++ b/src/org/cacert/gigi/pages/main/Signup.java @@ -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 outerVars) { HashMap vars = new HashMap(); - 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 { diff --git a/src/org/cacert/gigi/util/PasswordStrengthChecker.java b/src/org/cacert/gigi/util/PasswordStrengthChecker.java index 1eac560f..a1d21450 100644 --- a/src/org/cacert/gigi/util/PasswordStrengthChecker.java +++ b/src/org/cacert/gigi/util/PasswordStrengthChecker.java @@ -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."); } } diff --git a/tests/org/cacert/gigi/TestObjectCache.java b/tests/org/cacert/gigi/TestObjectCache.java index d55bef1e..6824c379 100644 --- a/tests/org/cacert/gigi/TestObjectCache.java +++ b/tests/org/cacert/gigi/TestObjectCache.java @@ -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())))); diff --git a/tests/org/cacert/gigi/TestUser.java b/tests/org/cacert/gigi/TestUser.java index 0bbc4cbb..f91ab113 100644 --- a/tests/org/cacert/gigi/TestUser.java +++ b/tests/org/cacert/gigi/TestUser.java @@ -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(); diff --git a/tests/org/cacert/gigi/pages/account/TestMailManagement.java b/tests/org/cacert/gigi/pages/account/TestMailManagement.java index 6659a1e1..bf97c269 100644 --- a/tests/org/cacert/gigi/pages/account/TestMailManagement.java +++ b/tests/org/cacert/gigi/pages/account/TestMailManagement.java @@ -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(); diff --git a/tests/org/cacert/gigi/testUtils/ManagedTest.java b/tests/org/cacert/gigi/testUtils/ManagedTest.java index 86868354..cc3215c1 100644 --- a/tests/org/cacert/gigi/testUtils/ManagedTest.java +++ b/tests/org/cacert/gigi/testUtils/ManagedTest.java @@ -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); diff --git a/tests/org/cacert/gigi/util/TestPasswordStrengthChecker.java b/tests/org/cacert/gigi/util/TestPasswordStrengthChecker.java index ffabbb7c..254df05a 100644 --- a/tests/org/cacert/gigi/util/TestPasswordStrengthChecker.java +++ b/tests/org/cacert/gigi/util/TestPasswordStrengthChecker.java @@ -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")); } diff --git a/util-testing/org/cacert/gigi/pages/Manager.java b/util-testing/org/cacert/gigi/pages/Manager.java index 4028e069..9b4144a6 100644 --- a/util-testing/org/cacert/gigi/pages/Manager.java +++ b/util-testing/org/cacert/gigi/pages/Manager.java @@ -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"); -- 2.39.2