package net.rrm.ehour.backup.service.restore; import net.rrm.ehour.backup.common.BackupConfig; import net.rrm.ehour.backup.config.EhourBackupConfig; import net.rrm.ehour.backup.domain.ImportException; import net.rrm.ehour.backup.domain.ParseSession; import net.rrm.ehour.backup.service.DatabaseTruncater; import net.rrm.ehour.config.EhourConfigStub; import net.rrm.ehour.domain.*; import net.rrm.ehour.persistence.config.dao.ConfigurationDao; import org.apache.commons.io.FileUtils; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.springframework.core.task.TaskExecutor; import java.io.File; import java.io.IOException; import static org.junit.Assert.*; import static org.mockito.Matchers.any; import static org.mockito.Mockito.*; /** * @author thies (Thies Edeling - thies@te-con.nl) * Created on: Nov 13, 2010 - 6:02:34 PM */ @RunWith(MockitoJUnitRunner.class) public class RestoreServiceImplTest { @Mock private ConfigurationDao configurationDao; @Mock private DatabaseTruncater truncater; @Mock private ConfigurationParserDao configurationParserDao; @Mock private EntityParserDao entityParserDao; @Mock private TaskExecutor taskExecutor; private BackupConfig backupConfig; private UserRoleParserDaoValidatorImpl userRoleParserDao; private RestoreServiceImpl restoreService; private EhourConfigStub configStub; @Before public void setUp() { userRoleParserDao = new UserRoleParserDaoValidatorImpl(); backupConfig = new EhourBackupConfig(); configStub = new EhourConfigStub(); restoreService = new RestoreServiceImpl(configurationDao, configurationParserDao, entityParserDao, truncater, configStub, backupConfig, taskExecutor); restoreService.setConfigurationDao(configurationDao); restoreService.setDatabaseTruncater(truncater); when(entityParserDao.persist(any(User.class))).thenReturn(10); when(entityParserDao.persist(any(UserRole.class))).thenReturn("ADMIN"); when(entityParserDao.persist(any(UserDepartment.class))).thenReturn(2); } /* @Test public void shouldPrepareImport() throws IOException { Configuration configuration = new Configuration("version", "0.8.3"); when(configurationDao.findById("version")).thenReturn(configuration); String file = "src/test/resources/import/import_data.xml"; String xml = FileUtils.readFileToString(new File(file)); ParseSession session = new ParseSession(); restoreService.validateDatabaseBackupFile(session, xml); assertTrue(session.isImportable()); } @Test public void shouldFailOnPrepareImportForWrongDb() throws IOException { Configuration configuration = new Configuration("version", "0.8.2"); when(configurationDao.findById("version")).thenReturn(configuration); String file = "src/test/resources/import/import_data.xml"; String xml = FileUtils.readFileToString(new File(file)); ParseSession session = new ParseSession(); restoreService.validateDatabaseBackupFile(session, xml); assertFalse(session.isImportable()); assertTrue(session.getGlobalErrorMessage().contains("version")); }*/ @Test public void shouldImport() throws IOException, ImportException { Configuration version = new Configuration("version", "0.8.3"); when(configurationDao.findById("version")).thenReturn(version); File file = new File("src/test/resources/import/import_data_full.xml"); String tempPath = FileUtils.getTempDirectoryPath(); File destFile = new File(tempPath + "/tmp.xml"); FileUtils.copyFile(file, destFile); ParseSession session = new ParseSession(); session.setFilename(destFile.getAbsolutePath()); restoreService.importDatabase(session); assertFalse(session.isImportable()); assertFalse(destFile.exists()); verify(entityParserDao, times(10)).persist(any(DomainObject.class)); } @Test public void shouldNotImportInDemoMode() throws IOException, ImportException { Configuration version = new Configuration("version", "0.8.3"); when(configurationDao.findById("version")).thenReturn(version); File file = new File("src/test/resources/import/import_data_full.xml"); String tempPath = FileUtils.getTempDirectoryPath(); File destFile = new File(tempPath + "/tmp.xml"); FileUtils.copyFile(file, destFile); ParseSession session = new ParseSession(); session.setFilename(destFile.getAbsolutePath()); configStub.setDemoMode(true); restoreService.importDatabase(session); assertFalse(session.isImportable()); assertFalse(destFile.exists()); assertEquals(0, userRoleParserDao.getFindUserCount()); } }