[VIVO-1620] Improve AuthenticateTest performance (#93)

* Improve test execution time

Resolves: https://jira.duraspace.org/browse/VIVO-1620
This commit is contained in:
Graham Triggs 2018-11-27 15:09:39 +00:00 committed by Andrew Woods
parent a3cd382117
commit 42dacf1f16

View file

@ -10,15 +10,18 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail; import static org.junit.Assert.fail;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import org.apache.log4j.Level; import org.apache.log4j.Level;
import org.junit.Before; import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore; import org.junit.Ignore;
import org.junit.Test; import org.junit.Test;
@ -119,16 +122,33 @@ public class AuthenticateTest extends AbstractTestClass {
private static final String NO_USER = ""; private static final String NO_USER = "";
private static final String NO_MSG = ""; private static final String NO_MSG = "";
/**
* Due to increased overhead of password hashing, create a list of UserAccount objects once
* when the class is cloaded.
*
* These prepared user accounts will then be (re)used to populate the authenticator stubs prior to each test
*/
private static List<UserAccount> userAccounts = new ArrayList<>();
@BeforeClass
public static void prepareUserAccounts() {
userAccounts.add(createUserFromUserInfo(NEW_DBA));
userAccounts.add(createUserFromUserInfo(OLD_DBA));
userAccounts.add(createUserFromUserInfo(OLD_SELF));
userAccounts.add(createUserFromUserInfo(OLD_STRANGER));
}
@Before @Before
public void setup() throws Exception { public void setup() throws Exception {
I18nStub.setup(); I18nStub.setup();
authenticatorFactory = new AuthenticatorStub.Factory(); authenticatorFactory = new AuthenticatorStub.Factory();
authenticator = authenticatorFactory.getInstance(request); authenticator = authenticatorFactory.getInstance(request);
authenticator.addUser(createUserFromUserInfo(NEW_DBA));
authenticator.addUser(createUserFromUserInfo(OLD_DBA)); for (UserAccount account : userAccounts) {
authenticator.addUser(createUserFromUserInfo(OLD_SELF)); authenticator.addUser(account);
authenticator.addUser(createUserFromUserInfo(OLD_STRANGER)); }
authenticator.setAssociatedUri(OLD_SELF.username, authenticator.setAssociatedUri(OLD_SELF.username,
"old_self_associated_uri"); "old_self_associated_uri");
@ -143,10 +163,9 @@ public class AuthenticateTest extends AbstractTestClass {
userAccountsDao = new UserAccountsDaoStub(); userAccountsDao = new UserAccountsDaoStub();
userAccountsDao.addPermissionSet(adminPermissionSet); userAccountsDao.addPermissionSet(adminPermissionSet);
userAccountsDao.addUser(createUserFromUserInfo(NEW_DBA)); for (UserAccount account : userAccounts) {
userAccountsDao.addUser(createUserFromUserInfo(OLD_DBA)); userAccountsDao.addUser(account);
userAccountsDao.addUser(createUserFromUserInfo(OLD_SELF)); }
userAccountsDao.addUser(createUserFromUserInfo(OLD_STRANGER));
individualDao = new IndividualDaoStub(); individualDao = new IndividualDaoStub();
@ -186,7 +205,7 @@ public class AuthenticateTest extends AbstractTestClass {
new HasPermissionFactory(servletContext)); new HasPermissionFactory(servletContext));
} }
private UserAccount createUserFromUserInfo(UserInfo userInfo) { private static UserAccount createUserFromUserInfo(UserInfo userInfo) {
UserAccount user = new UserAccount(); UserAccount user = new UserAccount();
user.setEmailAddress(userInfo.username); user.setEmailAddress(userInfo.username);
user.setUri(userInfo.uri); user.setUri(userInfo.uri);