/******************************************************************************* * This file is part of OpenNMS(R). * * Copyright (C) 2007-2011 The OpenNMS Group, Inc. * OpenNMS(R) is Copyright (C) 1999-2011 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * * OpenNMS(R) is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation, either version 3 of the License, * or (at your option) any later version. * * OpenNMS(R) is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with OpenNMS(R). If not, see: * http://www.gnu.org/licenses/ * * For more information contact: * OpenNMS(R) Licensing <license@opennms.org> * http://www.opennms.org/ * http://www.opennms.com/ *******************************************************************************/ package org.opennms.features.reporting.repository.global; import org.easymock.EasyMock; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.opennms.features.reporting.dao.remoterepository.RemoteRepositoryConfigDao; import org.opennms.features.reporting.model.basicreport.BasicReportDefinition; import org.opennms.features.reporting.model.remoterepository.RemoteRepositoryDefinition; import org.opennms.features.reporting.repository.ReportRepository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.util.ArrayList; import java.util.List; import static org.junit.Assert.assertEquals; /** * <p>DefaultGlobalReportRepositoryTest class.</p> * <p/> * Test the implementation of the default global repository. * * @author Markus Neumann <markus@opennms.com> * @author Ronny Trommer <ronny@opennms.com> * @version $Id: $ * @since 1.8.1 */ //TODO Tak: check this test and handle remote-repository connections @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"classpath:META-INF/opennms/applicationContext-reportingRepositoryTest.xml"}) public class DefaultGlobalReportRepositoryTest { Logger logger = LoggerFactory.getLogger(DefaultGlobalReportRepositoryTest.class); private DefaultGlobalReportRepository m_globalReportRepository; private ReportRepository m_mockLocalReportRepository; private ReportRepository m_remoteReportRepository; private List<RemoteRepositoryDefinition> m_mockActiveRepositoriesList; private List<RemoteRepositoryDefinition> m_mockAllRepositoriesList; private List<BasicReportDefinition> m_mockReportList; private BasicReportDefinition m_mockReportDefinition1; private BasicReportDefinition m_mockReportDefinition2; private RemoteRepositoryConfigDao m_mockRemoteRepositoryConfigDao; private RemoteRepositoryDefinition m_mockActiveRemoteRepository; private RemoteRepositoryDefinition m_mockNotActiveRemoteRepository; @Before public void setUp() { // Mockup for remote repository config dao m_mockRemoteRepositoryConfigDao = EasyMock.createNiceMock(RemoteRepositoryConfigDao.class); // Mockup for a list of reports m_mockReportList = new ArrayList<BasicReportDefinition>(); // Mockup for a online active report m_mockReportDefinition1 = EasyMock.createNiceMock(BasicReportDefinition.class); EasyMock.expect(m_mockReportDefinition1.getAllowAccess()).andReturn(Boolean.TRUE); EasyMock.expect(m_mockReportDefinition1.getDescription()).andReturn("MockReportDescription1"); EasyMock.expect(m_mockReportDefinition1.getDisplayName()).andReturn("MockupReportDisplayName1"); EasyMock.expect(m_mockReportDefinition1.getOnline()).andReturn(Boolean.TRUE); EasyMock.expect(m_mockReportDefinition1.getReportService()).andReturn("MockupReportService1"); EasyMock.expect(m_mockReportDefinition1.getRepositoryId()).andReturn("local_MockupReportReportId1"); EasyMock.expect(m_mockReportDefinition1.getId()).andReturn("local_MockupReportId1"); EasyMock.replay(m_mockReportDefinition1); // Mockup for an inactive not online report m_mockReportDefinition2 = EasyMock.createNiceMock(BasicReportDefinition.class); EasyMock.expect(m_mockReportDefinition2.getAllowAccess()).andReturn(Boolean.FALSE); EasyMock.expect(m_mockReportDefinition2.getDescription()).andReturn("MockReportDescription2"); EasyMock.expect(m_mockReportDefinition2.getDisplayName()).andReturn("MockupReportDisplayName2"); EasyMock.expect(m_mockReportDefinition2.getOnline()).andReturn(Boolean.FALSE); EasyMock.expect(m_mockReportDefinition2.getReportService()).andReturn("MockupReportService2"); EasyMock.expect(m_mockReportDefinition2.getRepositoryId()).andReturn("local_MockupReportReportId2"); EasyMock.expect(m_mockReportDefinition2.getId()).andReturn("MockupReportId2"); EasyMock.replay(m_mockReportDefinition2); // Add mockup report to the report list m_mockReportList.add(m_mockReportDefinition1); m_mockReportList.add(m_mockReportDefinition2); // Mockup a local report repository m_mockLocalReportRepository = EasyMock.createNiceMock(ReportRepository.class); EasyMock.expect(m_mockLocalReportRepository.getOnlineReports()).andReturn(m_mockReportList); EasyMock.expect(m_mockLocalReportRepository.getReports()).andReturn(m_mockReportList); EasyMock.expect(m_mockLocalReportRepository.getDisplayName("MockedReportId")).andReturn("MockedDisplayName"); EasyMock.expect(m_mockLocalReportRepository.getEngine("MockupReportId")).andReturn("MockedEngine"); EasyMock.expect(m_mockLocalReportRepository.getManagementUrl()).andReturn("MockupManagementUrl"); EasyMock.expect(m_mockLocalReportRepository.getRepositoryDescription()).andReturn("MockedRepositoryDescription"); EasyMock.expect(m_mockLocalReportRepository.getReportService("MockedReportId")).andReturn("MockedReportService"); EasyMock.expect(m_mockLocalReportRepository.getRepositoryId()).andReturn("local"); EasyMock.expect(m_mockLocalReportRepository.getRepositoryName()).andReturn("MockedRepositoryName"); EasyMock.replay(m_mockLocalReportRepository); // Mockup for one remote repository m_remoteReportRepository = EasyMock.createNiceMock(ReportRepository.class); EasyMock.expect(m_remoteReportRepository.getOnlineReports()).andReturn(m_mockReportList); EasyMock.expect(m_remoteReportRepository.getReports()).andReturn(m_mockReportList); EasyMock.expect(m_remoteReportRepository.getDisplayName("MockedReportId")).andReturn("MockedRemoteDisplayName"); EasyMock.expect(m_remoteReportRepository.getEngine("MockupReportId")).andReturn("MockedRemoteEngine"); EasyMock.expect(m_remoteReportRepository.getManagementUrl()).andReturn("MockupRemoteManagementUrl"); EasyMock.expect(m_remoteReportRepository.getRepositoryDescription()).andReturn("MockedRemoteRepositoryDescription"); EasyMock.expect(m_remoteReportRepository.getReportService("MockedReportId")).andReturn("MockedTemoteReportService"); EasyMock.expect(m_remoteReportRepository.getRepositoryId()).andReturn("MockedRemoteRepositoryId"); EasyMock.expect(m_remoteReportRepository.getRepositoryName()).andReturn("MockedRemoteRepositoryName"); EasyMock.replay(m_remoteReportRepository); // Mockup two remote repositories m_mockActiveRemoteRepository = new RemoteRepositoryDefinition(); m_mockActiveRemoteRepository.setLoginRepoPassword("MockLoginRepoPasswordActive"); m_mockActiveRemoteRepository.setLoginUser("MockLoginUserActive"); m_mockActiveRemoteRepository.setRepositoryActive(Boolean.TRUE); m_mockActiveRemoteRepository.setRepositoryDescription("MockRepositoryDescriptionActive"); m_mockActiveRemoteRepository.setRepositoryId("MockRepositoryIdActive"); m_mockActiveRemoteRepository.setRepositoryManagementURL("MockRepositoryManagementURLActive"); m_mockActiveRemoteRepository.setRepositoryName("MockRepositoryNameActive"); m_mockNotActiveRemoteRepository = new RemoteRepositoryDefinition(); m_mockNotActiveRemoteRepository.setLoginRepoPassword("MockLoginRepoPasswordDeactivated"); m_mockNotActiveRemoteRepository.setLoginUser("MockLoginUserDeactivated"); m_mockNotActiveRemoteRepository.setRepositoryActive(Boolean.FALSE); m_mockNotActiveRemoteRepository.setRepositoryDescription("MockRepositoryDescriptionDeactivated"); m_mockNotActiveRemoteRepository.setRepositoryId("MockRepositoryIdDeactivated"); m_mockNotActiveRemoteRepository.setRepositoryManagementURL("MockRepositoryManagementURLDeactivated"); m_mockNotActiveRemoteRepository.setRepositoryName("MockRepositoryNameDeactivated"); m_mockActiveRepositoriesList = new ArrayList<RemoteRepositoryDefinition>(); m_mockActiveRepositoriesList.add(m_mockActiveRemoteRepository); m_mockAllRepositoriesList = new ArrayList<RemoteRepositoryDefinition>(); m_mockAllRepositoriesList.add(m_mockActiveRemoteRepository); m_mockAllRepositoriesList.add(m_mockNotActiveRemoteRepository); EasyMock.expect(m_mockRemoteRepositoryConfigDao.getActiveRepositories()).andReturn(m_mockActiveRepositoriesList); EasyMock.expect(m_mockRemoteRepositoryConfigDao.getAllRepositories()).andReturn(m_mockAllRepositoriesList); EasyMock.expect(m_mockRemoteRepositoryConfigDao.getLoginRepoPassword("repositoryId")).andReturn("MockedDaoLoginPassword"); EasyMock.expect(m_mockRemoteRepositoryConfigDao.getLoginUser("repositoryId")).andReturn("MockedDaoLoginUser"); EasyMock.expect(m_mockRemoteRepositoryConfigDao.getRepositoryById("repositoryId")).andReturn(m_mockActiveRemoteRepository); EasyMock.expect(m_mockRemoteRepositoryConfigDao.getRepositoryDescription("repositoryId")).andReturn("MockedDaoRepositoryDescription"); EasyMock.expect(m_mockRemoteRepositoryConfigDao.getRepositoryManagementURL("repositoryId")).andReturn("MockedDaoManagementUrl"); EasyMock.expect(m_mockRemoteRepositoryConfigDao.getRepositoryName("repositoryId")).andReturn("MockedDaoRepositoryName"); EasyMock.replay(m_mockRemoteRepositoryConfigDao); m_globalReportRepository = new DefaultGlobalReportRepository(m_mockRemoteRepositoryConfigDao, m_mockLocalReportRepository); } @Test public void addReportRepositoryTest() { assertEquals("Repository is initialized with one configured repository", 1, m_globalReportRepository.getRepositoryList().size()); m_globalReportRepository.addReportRepository(m_mockLocalReportRepository); assertEquals("One repository is added", 2, m_globalReportRepository.getRepositoryList().size()); } @Test public void getAllOnlineReportsTest() { assertEquals("Test size of online reports", 2, m_globalReportRepository.getAllOnlineReports().size()); } @Test public void getAllReportsTest() { assertEquals("Test size of online reports", 2, m_globalReportRepository.getAllReports().size()); } @Test public void getEngineTest() { // TODO tak: improve this tests //assertNotNull("Test to get online reports by repository id", m_globalReportRepository.getEngine("local_MockupReportReportId2")); } @Test public void getOnlineReportsTest() { // TODO tak: improve this tests //assertNotNull("Test to get online reports by repository id", m_globalReportRepository.getOnlineReports("local_MockupReportRepositoryId1")); } @Ignore @Test public void getRemplateStreamTest() { // TODO tak: improve this tests } @Ignore @Test public void getReportServiceTest() { // TODO tak: improve this tests // assertNotNull("Test to get report repository by id", m_globalReportRepository.getReportService("local_MockupReportReportId2")); } @Ignore @Test public void getReportsTest() { // TODO tak: improve this tests // assertNotNull("Test to get reports by repository id", m_globalReportRepository.getReports("local_MockupReportReportId2")); } @Ignore @Test public void getRepositoryByIdTest() { // TODO tak: improve this tests // assertNotNull(m_globalReportRepository); // List<ReportRepository> repositoryList = m_globalReportRepository.getRepositoryList(); // assertEquals(1, repositoryList.size()); // for (ReportRepository repository : repositoryList) { // assertEquals(repository.getRepositoryId(), m_globalReportRepository.getRepositoryById(repository.getRepositoryId()).getRepositoryId()); // } // assertFalse(m_globalReportRepository.getRepositoryById("") != null); // // logger.debug(m_globalReportRepository.getDisplayName("local_sample-report")); // logger.debug("local repository : '{}'", m_globalReportRepository.getRepositoryById("cioreporting")); // ReportRepository localRepo = m_globalReportRepository.getRepositoryById("local"); // logger.debug(localRepo.toString()); // BasicReportDefinition report = localRepo.getOnlineReports().get(0); // logger.debug(report.toString()); // logger.debug(report.getId()); // report.setId("LOCAL_" + report.getId()); // assertEquals("LOCAL_local_sample-report", report.getId()); // assertFalse(("local_LOCAL_local_sample-report".equals(localRepo.getOnlineReports().get(0).getId()))); // assertEquals("local_sample-report", localRepo.getOnlineReports().get(0).getId()); } @Ignore @Test public void getRepositoryListTest() { // TODO tak: improve this tests // List<ReportRepository> repositoryList = m_globalReportRepository.getRepositoryList(); // assertEquals(2, repositoryList.size()); // assertEquals("local", repositoryList.get(0).getRepositoryId()); // assertEquals("cioreporting", repositoryList.get(1).getRepositoryId()); } public void setReportRepository(DefaultGlobalReportRepository globalReportRepository) { m_globalReportRepository = globalReportRepository; } }