Test Cases & Modification of ExtApi Listener Implementation
[externalapi/nbi.git] / src / test / resources / karatetest / features / 03--Subscriber.feature
1 # new feature
2 # Tags: optional
3     
4 Feature: Subscriber
5
6 Background:
7 * url nbiBaseUrl
8 * def Context = Java.type('org.onap.nbi.test.Context');
9 * call Context.startServers();
10 * def data = read('../data/subscriber.json')
11 * def serviceOrderData = read('../data/serviceOrder.json')
12 * def eventData = read('../data/Event.json')
13 * configure retry = { count: 10, interval: 500 }
14 * def checkDateFormat =
15 """
16 function(s) {
17   var SimpleDateFormat = Java.type("java.text.SimpleDateFormat");
18   var sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
19   return sdf.parse(s);
20 }
21 """
22
23 Scenario: testFindWhenNoSubscriber
24 Given path 'hub'
25 When method get
26 Then status 200
27 And match $ == '#[0]'
28
29 Scenario: testCreationAndFindSubscriber
30 Given path 'hub'
31 And request data[0]
32 When method post
33 Then status 201
34 And def location = responseHeaders['Location'][0]
35 Given path 'hub'
36 When method get
37 And match $ == '#[1]'
38 Given url location
39 When method delete
40 Then status 204
41
42 Scenario: testCreation2SameSubscribers
43 Given path 'hub'
44 And request data[0]
45 When method post
46 Then status 201
47 And def location = responseHeaders['Location'][0]
48 Given path 'hub'
49 And request data[0]
50 When method post
51 Then status 400
52 And match $ contains { message : 'Bad Request'}
53 Given path 'hub'
54 When method get
55 And match $ == '#[1]'
56 Given url location
57 When method delete
58 Then status 204
59
60 Scenario: testGetByIdSubscriber
61 Given path 'hub'
62 And request data[0]
63 When method post
64 Then status 201
65 Given path 'hub'
66 When method get
67 And def Id = $[0].id
68 Given path 'hub',Id
69 When method get
70 And match $ contains { callback : 'http://localhost:8080/test' , query : 'eventType=ServiceOrderCreationNotification' }
71 Given path 'hub',Id
72 When method delete
73 Then status 204
74
75 Scenario: testFindSubscriber
76 Given path 'hub'
77 And request data[1]
78 When method post
79 Then status 201
80 And def location1 = responseHeaders['Location'][0]
81 Given path 'hub'
82 And request data[2]
83 When method post
84 Then status 201
85 And def location2 = responseHeaders['Location'][0]
86 Given path 'hub'
87 When method get
88 Then status 200
89 And match $ == '#notnull'
90 Given url location1
91 When method delete
92 Then status 204
93 Given url location2
94 When method delete
95 Then status 204
96
97 Scenario: testFindWithFilteringSubscriber
98 Given path 'hub'
99 And request data[0]
100 When method post
101 Then status 201
102 And def location = responseHeaders['Location'][0]
103 Given path 'hub'
104 And params { query.eventType : 'ServiceOrderCreationNotification' }
105 When method get
106 Then status 200
107 And match $ == '#[1]'
108 Given url location
109 When method delete
110 Then status 204
111
112 Scenario: testSubscriberDeletion
113 Given path 'hub'
114 And request { id : 'id', callback : 'http://localhost:8080/test' , query : 'eventType = ServiceOrderCreationNotification' }
115 When method post
116 Then status 201
117 Given path 'hub'
118 When method get
119 And def Id = $[0].id
120 Given path 'hub',Id
121 When method delete
122 Then status 204
123
124 Scenario: testSubscriberWithTestListener
125 * def listenerUrl = nbiBaseUrl + "/test/listener"
126 Given path 'test/listener'
127 When method delete
128 Then status 204
129 Given path 'hub'
130 And request { id : 'id', callback : '#(listenerUrl)' , query : 'eventType = ServiceOrderCreationNotification' }
131 When method post
132 Then status 201
133 Given path 'hub'
134 When method get
135 And def hubId = $[0].id
136 Given path 'serviceOrder'
137 And request serviceOrderData[17]
138 When method post
139 Then status 201
140 And def serviceOrderId = $.id
141 Given path 'test/listener'
142 And params {serviceOrderId : '#(serviceOrderId)'}
143 And retry until responseStatus == 200
144 When method get
145 And assert response.length == 1
146 And match $[0] contains { eventId : '#notnull' , eventType : 'ServiceOrderCreationNotification' , eventDate : '#notnull' , event :'#notnull'}
147 And def eventId = $[0].eventId
148 And def eventDate = $[0].eventDate
149 And call checkDateFormat(eventDate)
150 Given path 'hub',hubId
151 When method delete
152 Then status 204
153 Given path 'test/listener',eventId
154 When method delete
155 Then status 204
156 Given path 'serviceOrder',serviceOrderId
157 When method delete
158 Then status 204
159
160
161 Scenario: testSubscriberWithTestListenerForServiceInventorCreationEvents
162 * def listenerUrl = nbiBaseUrl + "/test/listener"
163 Given path 'test/listener'
164 When method delete
165 Then status 204
166 Given path 'hub'
167 And request { id : 'id', callback : '#(listenerUrl)' , query : 'eventType = ServiceCreationNotification' }
168 When method post
169 Then status 201
170 Given path 'hub'
171 When method get
172 And def hubId = $[0].id
173 Given path 'hub/testaaievents'
174 Then status 200
175 When method get
176 Given path 'test/listener'
177 And params {serviceInstanceId : 'new-test5'}
178 And retry until responseStatus == 200
179 When method get
180 And assert response.length == 1
181 And match $[0] contains { eventId : '#notnull' , eventType : 'ServiceCreationNotification' , eventDate : '#notnull' , event :'#notnull'}
182 And def eventId = $[0].eventId
183 And def eventDate = $[0].eventDate
184 And call checkDateFormat(eventDate)
185 Given path 'hub',hubId
186 When method delete
187 Then status 204
188 Given path 'test/listener',eventId
189 When method delete
190 Then status 204
191
192 Scenario: testSubscriberWithTestListenerForServiceInventoryUpdateEvents
193 * def listenerUrl = nbiBaseUrl + "/test/listener"
194 Given path 'test/listener'
195 When method delete
196 Then status 204
197 Given path 'hub'
198 And request { id : 'id', callback : '#(listenerUrl)' , query : 'eventType = ServiceAttributeValueChangeNotification' }
199 When method post
200 Then status 201
201 Given path 'hub'
202 When method get
203 And def hubId = $[0].id
204 Given path 'hub/testaaievents'
205 Then status 200
206 When method get
207 Given path 'test/listener'
208 And params {serviceInstanceId : 'new-test5'}
209 And retry until responseStatus == 200
210 When method get
211 And assert response.length == 1
212 And match $[0] contains { eventId : '#notnull' , eventType : 'ServiceAttributeValueChangeNotification' , eventDate : '#notnull' , event :'#notnull'}
213 And def eventId = $[0].eventId
214 And def eventDate = $[0].eventDate
215 And call checkDateFormat(eventDate)
216 Given path 'hub',hubId
217 When method delete
218 Then status 204
219 Given path 'test/listener',eventId
220 When method delete
221 Then status 204
222
223 Scenario: testSubscriberWithTestListenerForServiceInventoryRemoveEvents
224 * def listenerUrl = nbiBaseUrl + "/test/listener"
225 Given path 'test/listener'
226 When method delete
227 Then status 204
228 Given path 'hub'
229 And request { id : 'id', callback : '#(listenerUrl)' , query : 'eventType = ServiceRemoveNotification' }
230 When method post
231 Then status 201
232 Given path 'hub'
233 When method get
234 And def hubId = $[0].id
235 Given path 'hub/testaaievents'
236 Then status 200
237 When method get
238 Given path 'test/listener'
239 And params {serviceInstanceId : 'new-test5'}
240 And retry until responseStatus == 200
241 When method get
242 And assert response.length == 1
243 And match $[0] contains { eventId : '#notnull' , eventType : 'ServiceRemoveNotification' , eventDate : '#notnull' , event :'#notnull'}
244 And def eventId = $[0].eventId
245 And def eventDate = $[0].eventDate
246 And call checkDateFormat(eventDate)
247 Given path 'hub',hubId
248 When method delete
249 Then status 204
250 Given path 'test/listener',eventId
251 When method delete
252 Then status 204
253
254
255 Scenario: testHubAndListenerResourceWhenTargetURLIsPresent
256 Given path 'hub'
257 And header targetURL = '127.0.0.1'
258 And request data[3]
259 When method post
260 Then status 201
261 And def location = responseHeaders['Location'][0]
262 Given path "listener"
263 And request eventData[0]
264 When method post
265 Then status 200
266 Given path "test/listener/12345"
267 When method get
268 Then status 200
269 And match $ contains
270 """
271 {
272     "eventType": "ServiceOrderStateChangeNotification",
273     "eventDate": "2019-03-27T14:58:32.740Z",
274     "eventId": "12345",
275     "event": {
276       "id": "testEventId",
277       "href": "www.testHref.com",
278       "externalId": "testExternalId",
279       "state": "acknowledged",
280       "orderDate": "2019-03-27T04:58:32.740Z"
281
282     }
283 }
284 """
285 Given url location
286 When method delete
287 Then status 204