create default accounts only, if no other user exists in the dao

This commit is contained in:
Sebastian Sdorra
2014-11-25 08:13:48 +01:00
parent 5c62b4f2f1
commit 659da861f2
2 changed files with 88 additions and 14 deletions

View File

@@ -102,7 +102,6 @@ public class DefaultUserManager extends AbstractUserManager
* Constructs ... * Constructs ...
* *
* *
* @param scurityContextProvider
* @param userDAO * @param userDAO
* @param userListenerProvider * @param userListenerProvider
*/ */
@@ -234,8 +233,8 @@ public class DefaultUserManager extends AbstractUserManager
public void init(SCMContextProvider context) public void init(SCMContextProvider context)
{ {
// TODO improve // create default account only, if no other account is available
if (!userDAO.contains("scmadmin") &&!userDAO.contains("anonymous")) if (userDAO.getAll().isEmpty())
{ {
createDefaultAccounts(); createDefaultAccounts();
} }
@@ -531,6 +530,8 @@ public class DefaultUserManager extends AbstractUserManager
{ {
try try
{ {
logger.info("create default accounts");
JAXBContext context = JAXBContext.newInstance(User.class); JAXBContext context = JAXBContext.newInstance(User.class);
Unmarshaller unmarshaller = context.createUnmarshaller(); Unmarshaller unmarshaller = context.createUnmarshaller();

View File

@@ -35,20 +35,27 @@ package sonia.scm.user;
//~--- non-JDK imports -------------------------------------------------------- //~--- non-JDK imports --------------------------------------------------------
import com.google.common.collect.Lists;
import com.google.inject.Provider; import com.google.inject.Provider;
import org.junit.Before;
import org.junit.Test;
import sonia.scm.store.JAXBStoreFactory; import sonia.scm.store.JAXBStoreFactory;
import sonia.scm.store.StoreFactory; import sonia.scm.store.StoreFactory;
import sonia.scm.user.xml.XmlUserDAO; import sonia.scm.user.xml.XmlUserDAO;
import sonia.scm.util.MockUtil; import sonia.scm.util.MockUtil;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.*;
//~--- JDK imports ------------------------------------------------------------ //~--- JDK imports ------------------------------------------------------------
import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
import java.util.List;
import java.util.Set; import java.util.Set;
import org.junit.Before;
/** /**
* *
@@ -57,11 +64,6 @@ import org.junit.Before;
public class DefaultUserManagerTest extends UserManagerTestBase public class DefaultUserManagerTest extends UserManagerTestBase
{ {
@Before
public void setAdminSubject(){
setSubject(MockUtil.createAdminSubject());
}
/** /**
* Method description * Method description
* *
@@ -71,16 +73,87 @@ public class DefaultUserManagerTest extends UserManagerTestBase
@Override @Override
public UserManager createManager() public UserManager createManager()
{ {
StoreFactory factory = new JAXBStoreFactory(); return new DefaultUserManager(createXmlUserDAO(), createListenerProvider());
}
factory.init(contextProvider); /**
* Method description
*
*/
@Test
public void testDefaultAccountAfterFristStart()
{
UserDAO userDAO = mock(UserDAO.class);
List<User> users = Lists.newArrayList(new User("tuser"));
when(userDAO.getAll()).thenReturn(users);
UserManager userManager = new DefaultUserManager(userDAO,
createListenerProvider());
userManager.init(contextProvider);
verify(userDAO, never()).add(any(User.class));
}
/**
* Method description
*
*/
@Test
public void testDefaultAccountCreation()
{
UserDAO userDAO = mock(UserDAO.class);
when(userDAO.getAll()).thenReturn(Collections.EMPTY_LIST);
UserManager userManager = new DefaultUserManager(userDAO,
createListenerProvider());
userManager.init(contextProvider);
verify(userDAO, times(2)).add(any(User.class));
}
//~--- set methods ----------------------------------------------------------
/**
* Method description
*
*/
@Before
public void setAdminSubject()
{
setSubject(MockUtil.createAdminSubject());
}
//~--- methods --------------------------------------------------------------
/**
* Method description
*
*
* @return
*/
private Provider<Set<UserListener>> createListenerProvider()
{
Provider<Set<UserListener>> listenerProvider = mock(Provider.class); Provider<Set<UserListener>> listenerProvider = mock(Provider.class);
when(listenerProvider.get()).thenReturn(new HashSet<UserListener>()); when(listenerProvider.get()).thenReturn(new HashSet<UserListener>());
XmlUserDAO userDAO = new XmlUserDAO(factory); return listenerProvider;
}
return new DefaultUserManager(userDAO, listenerProvider); /**
* Method description
*
*
* @return
*/
private XmlUserDAO createXmlUserDAO()
{
StoreFactory factory = new JAXBStoreFactory();
factory.init(contextProvider);
return new XmlUserDAO(factory);
} }
} }