aboutsummaryrefslogtreecommitdiffstats
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/org/onap/nbi/api/listener/ListenerResource.java140
-rw-r--r--src/test/resources/karatetest/features/03--Subscriber.feature94
-rw-r--r--src/test/resources/mappings/dmaap_get_aaievents.json16
3 files changed, 188 insertions, 62 deletions
diff --git a/src/test/java/org/onap/nbi/api/listener/ListenerResource.java b/src/test/java/org/onap/nbi/api/listener/ListenerResource.java
index 1b60109..8fb276d 100644
--- a/src/test/java/org/onap/nbi/api/listener/ListenerResource.java
+++ b/src/test/java/org/onap/nbi/api/listener/ListenerResource.java
@@ -1,18 +1,18 @@
/**
* Copyright (c) 2019 Orange
*
- * 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
+ * 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.
+ * 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.nbi.api.listener;
-import com.fasterxml.jackson.databind.JsonNode;
import java.net.URI;
import java.util.ArrayList;
import java.util.Collection;
@@ -34,81 +34,97 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
+import com.fasterxml.jackson.databind.JsonNode;
@RestController
@RequestMapping("/test/listener")
public class ListenerResource extends ResourceManagement {
- Logger logger = LoggerFactory.getLogger(ListenerResource.class);
-
- static Map<String, JsonNode> events = new ConcurrentHashMap<>();
+ Logger logger = LoggerFactory.getLogger(ListenerResource.class);
- /*
- listener resource test for hub resource
- */
- @PostMapping(consumes = MediaType.APPLICATION_JSON_VALUE)
- public ResponseEntity<JsonNode> postListener(@RequestBody JsonNode event) {
- if (logger.isDebugEnabled()) {
- logger.debug("POST event from nbi : {}", event.toString());
- }
- String eventId = event.get("eventId").asText();
- events.put(eventId, event);
-
- URI location = ServletUriComponentsBuilder
- .fromCurrentRequest()
- .path("/{id}")
- .buildAndExpand(eventId)
- .toUri();
+ static Map<String, JsonNode> events = new ConcurrentHashMap<>();
- return ResponseEntity.created(location).body(event);
+ /*
+ * listener resource test for hub resource
+ */
+ @PostMapping(consumes = MediaType.APPLICATION_JSON_VALUE)
+ public ResponseEntity<JsonNode> postListener(@RequestBody JsonNode event) {
+ if (logger.isDebugEnabled()) {
+ logger.debug("POST event from nbi : {}", event.toString());
}
-
-
- @GetMapping(value = "", produces = MediaType.APPLICATION_JSON_VALUE)
- public ResponseEntity<Collection<JsonNode>> findEvents(@RequestParam MultiValueMap<String, String> params) {
- Collection<JsonNode> values = new ArrayList<>();
- String serviceOrderId = params.getFirst("serviceOrderId");
- if(StringUtils.isNotEmpty(serviceOrderId)) {
- for (JsonNode jsonNode : events.values()) {
- String id = jsonNode.get("event").get("id").asText();
- logger.info("found event with service order id : "+id);
- if(id.equals(serviceOrderId)) {
- values.add(jsonNode);
- }
- }
- if(!values.isEmpty()) {
- return ResponseEntity.ok(values);
- } else {
- logger.error("cannot found events with service order id : "+serviceOrderId);
- return ResponseEntity.notFound().build();
- }
- } else {
- values=events.values();
+ String eventId = event.get("eventId").asText();
+ logger.info("putting eventId {} in the events map", eventId);
+ events.put(eventId, event);
+
+ URI location = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}")
+ .buildAndExpand(eventId).toUri();
+
+ return ResponseEntity.created(location).body(event);
+ }
+
+
+ @GetMapping(value = "", produces = MediaType.APPLICATION_JSON_VALUE)
+ public ResponseEntity<Collection<JsonNode>> findEvents(
+ @RequestParam MultiValueMap<String, String> params) {
+ logger.info("called listener get with params {} : " + params.toString());
+ Collection<JsonNode> values = new ArrayList<>();
+ String serviceOrderId = params.getFirst("serviceOrderId");
+ String serviceInstanceId = params.getFirst("serviceInstanceId");
+ if (StringUtils.isNotEmpty(serviceOrderId)) {
+ for (JsonNode jsonNode : events.values()) {
+ String id = jsonNode.get("event").get("id").asText();
+ logger.info("found event with service order id : " + id);
+ if (id.equals(serviceOrderId)) {
+ values.add(jsonNode);
+ }
+ }
+ if (!values.isEmpty()) {
+ return ResponseEntity.ok(values);
+ } else {
+ logger.error("cannot found events with service order id : " + serviceOrderId);
+ return ResponseEntity.notFound().build();
+ }
+ } else if (StringUtils.isNotEmpty(serviceInstanceId)) {
+ for (JsonNode jsonNode : events.values()) {
+ String id = jsonNode.get("event").get("id").asText();
+ logger.info("found event with service Instance id : " + id);
+ if (id.equals(serviceInstanceId)) {
+ values.add(jsonNode);
}
+ }
+ if (!values.isEmpty()) {
return ResponseEntity.ok(values);
+ } else {
+ logger.error("cannot found events with service instance id : " + serviceInstanceId);
+ return ResponseEntity.notFound().build();
+ }
+ } else {
+ values = events.values();
}
+ return ResponseEntity.ok(values);
+ }
- @GetMapping(value = "/{eventId}", produces = MediaType.APPLICATION_JSON_VALUE)
- public ResponseEntity<Object> getEvent(@PathVariable String eventId) {
+ @GetMapping(value = "/{eventId}", produces = MediaType.APPLICATION_JSON_VALUE)
+ public ResponseEntity<Object> getEvent(@PathVariable String eventId) {
- return ResponseEntity.ok(events.get(eventId));
+ return ResponseEntity.ok(events.get(eventId));
- }
+ }
- @DeleteMapping(value = "/{eventId}", produces = MediaType.APPLICATION_JSON_VALUE)
- public ResponseEntity<Object> deleteEvent(@PathVariable String eventId) {
+ @DeleteMapping(value = "/{eventId}", produces = MediaType.APPLICATION_JSON_VALUE)
+ public ResponseEntity<Object> deleteEvent(@PathVariable String eventId) {
- events.remove(eventId);
- return ResponseEntity.noContent().build();
+ events.remove(eventId);
+ return ResponseEntity.noContent().build();
- }
+ }
- @DeleteMapping(produces = MediaType.APPLICATION_JSON_VALUE)
- public ResponseEntity<Object> deleteEvents() {
+ @DeleteMapping(produces = MediaType.APPLICATION_JSON_VALUE)
+ public ResponseEntity<Object> deleteEvents() {
- events.clear();
- return ResponseEntity.noContent().build();
+ events.clear();
+ return ResponseEntity.noContent().build();
- }
+ }
}
diff --git a/src/test/resources/karatetest/features/03--Subscriber.feature b/src/test/resources/karatetest/features/03--Subscriber.feature
index 6e4b884..e4704ea 100644
--- a/src/test/resources/karatetest/features/03--Subscriber.feature
+++ b/src/test/resources/karatetest/features/03--Subscriber.feature
@@ -154,4 +154,98 @@ When method delete
Then status 204
Given path 'serviceOrder',serviceOrderId
When method delete
+Then status 204
+
+
+Scenario: testSubscriberWithTestListenerForServiceInventorCreationEvents
+* def listenerUrl = nbiBaseUrl + "/test/listener"
+Given path 'test/listener'
+When method delete
+Then status 204
+Given path 'hub'
+And request { id : 'id', callback : '#(listenerUrl)' , query : 'eventType = ServiceCreationNotification' }
+When method post
+Then status 201
+Given path 'hub'
+When method get
+And def hubId = $[0].id
+Given path 'hub/testaaievents'
+Then status 200
+When method get
+Given path 'test/listener'
+And params {serviceInstanceId : 'new-test5'}
+And retry until responseStatus == 200
+When method get
+And assert response.length == 1
+And match $[0] contains { eventId : '#notnull' , eventType : 'ServiceCreationNotification' , eventDate : '#notnull' , event :'#notnull'}
+And def eventId = $[0].eventId
+And def eventDate = $[0].eventDate
+And call checkDateFormat(eventDate)
+Given path 'hub',hubId
+When method delete
+Then status 204
+Given path 'test/listener',eventId
+When method delete
+Then status 204
+
+Scenario: testSubscriberWithTestListenerForServiceInventoryUpdateEvents
+* def listenerUrl = nbiBaseUrl + "/test/listener"
+Given path 'test/listener'
+When method delete
+Then status 204
+Given path 'hub'
+And request { id : 'id', callback : '#(listenerUrl)' , query : 'eventType = ServiceAttributeValueChangeNotification' }
+When method post
+Then status 201
+Given path 'hub'
+When method get
+And def hubId = $[0].id
+Given path 'hub/testaaievents'
+Then status 200
+When method get
+Given path 'test/listener'
+And params {serviceInstanceId : 'new-test5'}
+And retry until responseStatus == 200
+When method get
+And assert response.length == 1
+And match $[0] contains { eventId : '#notnull' , eventType : 'ServiceAttributeValueChangeNotification' , eventDate : '#notnull' , event :'#notnull'}
+And def eventId = $[0].eventId
+And def eventDate = $[0].eventDate
+And call checkDateFormat(eventDate)
+Given path 'hub',hubId
+When method delete
+Then status 204
+Given path 'test/listener',eventId
+When method delete
+Then status 204
+
+Scenario: testSubscriberWithTestListenerForServiceInventoryRemoveEvents
+* def listenerUrl = nbiBaseUrl + "/test/listener"
+Given path 'test/listener'
+When method delete
+Then status 204
+Given path 'hub'
+And request { id : 'id', callback : '#(listenerUrl)' , query : 'eventType = ServiceRemoveNotification' }
+When method post
+Then status 201
+Given path 'hub'
+When method get
+And def hubId = $[0].id
+Given path 'hub/testaaievents'
+Then status 200
+When method get
+Given path 'test/listener'
+And params {serviceInstanceId : 'new-test5'}
+And retry until responseStatus == 200
+When method get
+And assert response.length == 1
+And match $[0] contains { eventId : '#notnull' , eventType : 'ServiceRemoveNotification' , eventDate : '#notnull' , event :'#notnull'}
+And def eventId = $[0].eventId
+And def eventDate = $[0].eventDate
+And call checkDateFormat(eventDate)
+Given path 'hub',hubId
+When method delete
+Then status 204
+Given path 'test/listener',eventId
+When method delete
Then status 204 \ No newline at end of file
diff --git a/src/test/resources/mappings/dmaap_get_aaievents.json b/src/test/resources/mappings/dmaap_get_aaievents.json
new file mode 100644
index 0000000..6b5c630
--- /dev/null
+++ b/src/test/resources/mappings/dmaap_get_aaievents.json
@@ -0,0 +1,16 @@
+{
+ "request": {
+ "method": "GET",
+ "url": "/events/AAI-EVENT/NBICG1/NBIC1?timeout=2000"
+ },
+ "response": {
+ "status": 200,
+ "jsonBody": [
+ "{\"cambria.partition\":\"AAI\",\"event-header\":{\"severity\":\"NORMAL\",\"entity-type\":\"service-instance\",\"top-entity-type\":\"customer\",\"entity-link\":\"/aai/v14/business/customers/customer/testcustomer2/service-subscriptions/service-subscription/HSIA_Service/service-instances/service-instance/new-test5\",\"event-type\":\"AAI-EVENT\",\"domain\":\"dev\",\"action\":\"CREATE\",\"sequence-number\":\"0\",\"id\":\"c3654954-9802-4b46-a397-6e12c74d2254\",\"source-name\":\"AAI\",\"version\":\"v14\",\"timestamp\":\"20190301-10:20:47:154\"},\"entity\":{\"global-customer-id\":\"testcustomer2\",\"subscriber-name\":\"testcustomer2\",\"service-subscriptions\":{\"service-subscription\":[{\"service-type\":\"HSIA_Service\",\"service-instances\":{\"service-instance\":[{\"service-instance-id\":\"new-test5\",\"resource-version\":\"1551435647134\",\"service-instance-name\":\"testname\",\"orchestration-status\":\"assigned\"}]}}]}}}",
+ "{\"cambria.partition\":\"AAI\",\"event-header\":{\"severity\":\"NORMAL\",\"entity-type\":\"service-instance\",\"top-entity-type\":\"customer\",\"entity-link\":\"/aai/v14/business/customers/customer/testcustomer2/service-subscriptions/service-subscription/HSIA_Service/service-instances/service-instance/new-test5\",\"event-type\":\"AAI-EVENT\",\"domain\":\"dev\",\"action\":\"UPDATE\",\"sequence-number\":\"0\",\"id\":\"a746584a-72b7-4994-97b2-bc43ec24fd35\",\"source-name\":\"AAI\",\"version\":\"v14\",\"timestamp\":\"20190301-13:50:34:121\"},\"entity\":{\"global-customer-id\":\"testcustomer2\",\"subscriber-name\":\"testcustomer2\",\"service-subscriptions\":{\"service-subscription\":[{\"service-type\":\"HSIA_Service\",\"service-instances\":{\"service-instance\":[{\"service-instance-id\":\"new-test5\",\"resource-version\":\"1551448234103\",\"service-instance-name\":\"testname\",\"orchestration-status\":\"active\"}]}}]}}}","{\"cambria.partition\":\"AAI\",\"event-header\":{\"severity\":\"NORMAL\",\"entity-type\":\"service-instance\",\"top-entity-type\":\"customer\",\"entity-link\":\"/aai/v14/business/customers/customer/testcustomer2/service-subscriptions/service-subscription/HSIA_Service/service-instances/service-instance/new-test5\",\"event-type\":\"AAI-EVENT\",\"domain\":\"dev\",\"action\":\"DELETE\",\"sequence-number\":\"0\",\"id\":\"011c139e-d00f-4a55-b1fc-b319f16e0f70\",\"source-name\":\"AAI\",\"version\":\"v14\",\"timestamp\":\"20190301-13:53:09:590\"},\"entity\":{\"global-customer-id\":\"testcustomer2\",\"subscriber-name\":\"testcustomer2\",\"service-subscriptions\":{\"service-subscription\":[{\"service-type\":\"HSIA_Service\",\"service-instances\":{\"service-instance\":[{\"service-instance-id\":\"new-test5\",\"resource-version\":\"1551448234103\",\"service-instance-name\":\"testname\",\"orchestration-status\":\"active\"}]}}]}}}"
+ ],
+ "headers": {
+ "Content-Type": "application/json"
+ }
+ }
+}