diff options
Diffstat (limited to 'datacollector/src/test/java/org/onap/rapp/datacollector/service/VesRetrievalServiceTest.java')
-rw-r--r-- | datacollector/src/test/java/org/onap/rapp/datacollector/service/VesRetrievalServiceTest.java | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/datacollector/src/test/java/org/onap/rapp/datacollector/service/VesRetrievalServiceTest.java b/datacollector/src/test/java/org/onap/rapp/datacollector/service/VesRetrievalServiceTest.java new file mode 100644 index 0000000..0126019 --- /dev/null +++ b/datacollector/src/test/java/org/onap/rapp/datacollector/service/VesRetrievalServiceTest.java @@ -0,0 +1,113 @@ +/* + * Copyright (C) 2021 Samsung Electronics + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package org.onap.rapp.datacollector.service; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.MockitoJUnitRunner; +import org.onap.rapp.datacollector.entity.ves.Event; +import org.onap.rapp.datacollector.service.configuration.DmaapRestReaderConfiguration; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestClientException; +import org.springframework.web.client.RestTemplate; +import org.onap.rapp.datacollector.entity.ves.EventTest; + +@RunWith(MockitoJUnitRunner.class) +public class VesRetrievalServiceTest { + + @Mock + private RestTemplate restTemplate; + + @Mock + private DmaapRestReaderConfiguration config; + + @Mock + private VesParser parser; + + @Mock + private VesPersister persister; + + @Mock + UEHolder ueHolder; + + private VesRetrievalService service; + + @Before + public void init() { + Mockito.when(config.getMeasurementsTopicUrl()).thenReturn("http://localhost/a-topic"); + String[] response = new String[]{"a", "b"}; + Mockito.when(restTemplate.getForEntity("http://localhost/a-topic", String[].class)) + .thenReturn(new ResponseEntity<>(response, HttpStatus.OK)); + + service = new VesRetrievalService(restTemplate, parser, persister, config, ueHolder); + } + + @Test + public void givenMockingIsDoneByMockRestServiceServer_whenGetIsCalled_thenReturnsMockedObject() { + HashSet<String> actual = new HashSet<>(service.retrieveEvents()); + Set<String> expected = Set.of("a", "b"); + Assert.assertEquals(actual, expected); + } + + @Test + public void whenGetIsCalled_thenExceptionIsThrown() { + Mockito.when(config.getMeasurementsTopicUrl()).thenReturn("http://localhost/a-topic"); + Mockito.when(restTemplate.getForEntity("http://localhost/a-topic", String[].class)) + .thenThrow(new RestClientException("An test exception")); + + service = new VesRetrievalService(restTemplate, parser, persister, config, ueHolder); + Collection<String> actual = service.retrieveEvents(); + Assert.assertEquals(0, actual.size()); + } + + @Test + public void whenRetrievedThenAlsoStored() { + Mockito.when(config.getMeasurementsTopicUrl()).thenReturn("http://localhost/a-topic"); + Mockito.when(restTemplate.getForEntity("http://localhost/a-topic", String[].class)) + .thenReturn(new ResponseEntity<String[]>(new String[]{"dead", "beef"}, HttpStatus.OK)); + Mockito.when(parser.parse(Mockito.any(String.class))) + .thenReturn(EventTest.createDumyEvent()); + + service = new VesRetrievalService(restTemplate, parser, persister, config, ueHolder); + service.retrieveAndStoreVesEvents(); + + Mockito.verify(persister, Mockito.times(2)).persists(Mockito.any(Event.class)); + } + + @Test + public void whenRetrievedThenAlsoStoredWithUE() { + Mockito.when(config.getMeasurementsTopicUrl()).thenReturn("http://localhost/a-topic"); + Mockito.when(restTemplate.getForEntity("http://localhost/a-topic", String[].class)) + .thenReturn(new ResponseEntity<String[]>(new String[]{"dead", "beef"}, HttpStatus.OK)); + Mockito.when(parser.parse(Mockito.any(String.class))) + .thenReturn(EventTest.createDumyEventWithUe()); + + UEHolder ueHolder = new UEHolder(); + + service = new VesRetrievalService(restTemplate, parser, persister, config, ueHolder); + service.retrieveAndStoreVesEvents(); + + Mockito.verify(persister, Mockito.times(2)).persists(Mockito.any(Event.class)); + Assert.assertEquals(ueHolder.getUes(), Set.of("emergency_samsung_01", "mobile_samsung_s10")); + } +} + |