package es.upm.fiware.rss.service; /** * Copyright (C) 2015, CoNWeT Lab., Universidad Politécnica de Madrid * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ import es.upm.fiware.rss.dao.DbeAggregatorDao; import es.upm.fiware.rss.dao.DbeAppProviderDao; import es.upm.fiware.rss.exception.RSSException; import es.upm.fiware.rss.model.DbeAggregator; import es.upm.fiware.rss.model.DbeAppProvider; import es.upm.fiware.rss.model.DbeAppProviderId; import java.util.Date; import java.util.LinkedList; import java.util.List; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import static org.mockito.Mockito.*; import org.mockito.MockitoAnnotations; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * @author francisco */ public class ProviderManagerTest { private final Logger logger = LoggerFactory.getLogger(ProviderManagerTest.class); @Mock private DbeAppProviderDao appProviderDao; @Mock private DbeAggregatorDao aggregatorDao; @Mock private RSSModelsManager modelsManager; @InjectMocks private ProviderManager toTest; public ProviderManagerTest() {} @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); } @After public void tearDown() throws Exception { } @Test public void createProviderTest() throws RSSException { String providerId = "provider@mail.com"; String providerName = "providerName"; String aggregatorId = "aggregator@mail.com"; DbeAggregator aggregator = new DbeAggregator("aggregatorName", aggregatorId); when(aggregatorDao.getById(aggregatorId)).thenReturn(aggregator); toTest.createProvider(providerId, providerName, aggregatorId); } @Test (expected = RSSException.class) public void createProviderRSSExceptionMissingParameter1NullTest() throws RSSException { String providerId = null; String providerName = "providerName"; String aggregatorId = "aggregator@mail.com"; DbeAggregator aggregator = new DbeAggregator("aggregatorName", aggregatorId); when(aggregatorDao.getById(aggregatorId)).thenReturn(aggregator); toTest.createProvider(providerId, providerName, aggregatorId); } @Test (expected = RSSException.class) public void createProviderRSSExceptionMissingParameter1VoidTest() throws RSSException { String providerId = ""; String providerName = "providerName"; String aggregatorId = "aggregator@mail.com"; DbeAggregator aggregator = new DbeAggregator("aggregatorName", aggregatorId); when(aggregatorDao.getById(aggregatorId)).thenReturn(aggregator); toTest.createProvider(providerId, providerName, aggregatorId); } @Test (expected = RSSException.class) public void createProviderRSSExceptionMissingParameter2NullTest() throws RSSException { String providerId = "provider@mail.com"; String providerName = null; String aggregatorId = "aggregator@mail.com"; DbeAggregator aggregator = new DbeAggregator("aggregatorName", aggregatorId); when(aggregatorDao.getById(aggregatorId)).thenReturn(aggregator); toTest.createProvider(providerId, providerName, aggregatorId); } @Test (expected = RSSException.class) public void createProviderRSSExceptionMissingParameter2VoidTest() throws RSSException { String providerId = "provider@mail.com"; String providerName = ""; String aggregatorId = "aggregator@mail.com"; DbeAggregator aggregator = new DbeAggregator("aggregatorName", aggregatorId); when(aggregatorDao.getById(aggregatorId)).thenReturn(aggregator); toTest.createProvider(providerId, providerName, aggregatorId); } @Test (expected = RSSException.class) public void createProviderRSSExceptionMissingParameter3NullTest() throws RSSException { String providerId = "provider@mail.com"; String providerName = "providerName"; String aggregatorId = null; DbeAggregator aggregator = new DbeAggregator("aggregatorName", aggregatorId); when(aggregatorDao.getById(aggregatorId)).thenReturn(aggregator); toTest.createProvider(providerId, providerName, aggregatorId); } @Test (expected = RSSException.class) public void createProviderRSSExceptionMissingParameter3VoidTest() throws RSSException { String providerId = "provider@mail.com"; String providerName = "providerName"; String aggregatorId = ""; DbeAggregator aggregator = new DbeAggregator("aggregatorName", aggregatorId); when(aggregatorDao.getById(aggregatorId)).thenReturn(aggregator); toTest.createProvider(providerId, providerName, aggregatorId); } @Test (expected = RSSException.class) public void createProviderRSSExceptionNotExistentResourceTest() throws RSSException { String providerId = "provider@mail.com"; String providerName = "providerName"; String aggregatorId = "aggregator@mail.com"; when(aggregatorDao.getById(aggregatorId)).thenReturn(null); toTest.createProvider(providerId, providerName, aggregatorId); } @Test (expected = RSSException.class) public void createProviderRSSExceptionResourceAlreadyExistsTest() throws RSSException { String providerId = "provider@mail.com"; String providerName = "providerName"; String aggregatorId = "aggregator@mail.com"; DbeAggregator aggregator = new DbeAggregator("aggregatorName", aggregatorId); when(aggregatorDao.getById(aggregatorId)).thenReturn(aggregator); doThrow(org.hibernate.NonUniqueObjectException.class).when(appProviderDao).create(isA(DbeAppProvider.class)); toTest.createProvider(providerId, providerName, aggregatorId); } @Test public void getAPIProvidersTest() throws RSSException { String aggregatorId = "aggregator@mail.com"; String providerId = "provider@mail.com"; DbeAggregator dbeAggregator = new DbeAggregator("aggegatorName", aggregatorId); DbeAppProviderId dbeAppProviderId = new DbeAppProviderId(); dbeAppProviderId.setAggregator(dbeAggregator); dbeAppProviderId.setTxAppProviderId(providerId); DbeAppProvider provModel = new DbeAppProvider(); provModel.setId(dbeAppProviderId); provModel.setModels(null); provModel.setTxCorrelationNumber(Integer.MIN_VALUE); provModel.setTxName(providerId); provModel.setTxTimeStamp(new Date()); List <DbeAppProvider> providers = new LinkedList<>(); providers.add(provModel); when(appProviderDao.getProvidersByAggregator(aggregatorId)).thenReturn(providers); toTest.getAPIProviders(aggregatorId); } @Test public void getProvidersTest() throws RSSException { String aggregatorId = "aggregator@mail.com"; List <DbeAppProvider> providers = new LinkedList<>(); DbeAppProvider appProvider = new DbeAppProvider(); providers.add(appProvider); when(appProviderDao.getProvidersByAggregator(aggregatorId)).thenReturn(providers); List <DbeAppProvider> returned = toTest.getProviders(aggregatorId); Assert.assertEquals(providers, returned); } @Test public void getProvidersNullTest() throws RSSException { String aggregatorId = null; List <DbeAppProvider> providers = new LinkedList<>(); DbeAppProvider appProvider = new DbeAppProvider(); providers.add(appProvider); when(appProviderDao.getAll()).thenReturn(providers); List <DbeAppProvider> returned = toTest.getProviders(aggregatorId); Assert.assertEquals(providers, returned); } @Test public void getProvidersVoidTest() throws RSSException { String aggregatorId = ""; List <DbeAppProvider> providers = new LinkedList<>(); DbeAppProvider appProvider = new DbeAppProvider(); providers.add(appProvider); when(appProviderDao.getAll()).thenReturn(providers); List <DbeAppProvider> returned = toTest.getProviders(aggregatorId); Assert.assertEquals(providers, returned); } @Test public void getProvidersVoidListTest() throws RSSException { String aggregatorId = "aggregator@mail.com"; List <DbeAppProvider> providers = new LinkedList<>(); DbeAppProvider appProvider = new DbeAppProvider(); providers.add(appProvider); when(appProviderDao.getProvidersByAggregator(aggregatorId)).thenReturn(null); List <DbeAppProvider> returned = toTest.getProviders(aggregatorId); Assert.assertTrue(returned.isEmpty()); } @Test public void getProviderTest() throws RSSException { String aggregatorId = "aggregator@mail.com"; String providerId = "provider@mail.com"; DbeAggregator dbeAggregator = new DbeAggregator("aggegatorName", aggregatorId); DbeAppProviderId dbeAppProviderId = new DbeAppProviderId(); dbeAppProviderId.setAggregator(dbeAggregator); dbeAppProviderId.setTxAppProviderId(providerId); DbeAppProvider provModel = new DbeAppProvider(); provModel.setId(dbeAppProviderId); provModel.setModels(null); provModel.setTxCorrelationNumber(Integer.MIN_VALUE); provModel.setTxName(providerId); provModel.setTxTimeStamp(new Date()); doNothing().when(modelsManager).checkValidAppProvider(aggregatorId, providerId); when(appProviderDao.getProvider(aggregatorId, providerId)).thenReturn(provModel); toTest.getProvider(aggregatorId, providerId); } @Test (expected = RSSException.class) public void getProviderRSSExceptionNotValidAppProviderTest() throws RSSException { String aggregatorId = "aggregator@mail.com"; String providerId = "provider@mail.com"; doThrow(RSSException.class).when(modelsManager).checkValidAppProvider(aggregatorId, providerId); toTest.getProvider(aggregatorId, providerId); } @Test (expected = RSSException.class) public void getProviderRSSExceptionNonExistentResourceTest() throws RSSException { String aggregatorId = "aggregator@mail.com"; String providerId = "provider@mail.com"; doNothing().when(modelsManager).checkValidAppProvider(aggregatorId, providerId); when(appProviderDao.getProvider(aggregatorId, providerId)).thenReturn(null); toTest.getProvider(aggregatorId, providerId); } }