Newer
Older
*** Settings ***
Resource environment/variables.txt
Resource environment/subscriptions.txt
Resource environment/nsDescriptors.txt # Specific nsDescriptors Parameters
Resource environment/pnfDescriptors.txt # Specific pnfDescriptors Parameters
Resource environment/individualSubscription.txt
Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false
Library MockServerLibrary
Library OperatingSystem
Library BuiltIn
Library JSONLibrary
Library Collections
Library JSONSchemaLibrary schemas/
Library Process
*** Keywords ***
GET all Network Service Descriptors Information
Log The GET method queries multiple NS descriptors
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors
${output}= Output response
Set Suite Variable ${response} ${output}
GET Network Service Descriptors Information with attribute-based filter
Log The GET method queries multiple NS descriptors using Attribute-based filtering parameters
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors?${POS_FIELDS}
${output}= Output response
Set Suite Variable ${response} ${output}
Check HTTP Response Body NsdInfos Matches the requested attribute-based filter
Log Checking that attribute-based filter is matched
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
GET Network Service Descriptors Information with invalid attribute-based filter
Log The GET method queries multiple NS descriptors using Attribute-based filtering parameters. Negative case, with erroneous attribute name
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors?${NEG_FIELDS}
${output}= Output response
Set Suite Variable ${response} ${output}
Get all Network Service Descriptors Information with malformed authorization token
Pass Execution If ${AUTH_USAGE} == 0 Skipping test as NFVO is not supporting authentication
Log The GET method queries using invalid token
Set Headers {"Accept": "${ACCEPT_JSON}"}
Set Headers {"Authorization": "${BAD_AUTHORIZATION}"}
Log Execute Query and validate response
Get ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors
${output}= Output response
Set Suite Variable ${response} ${output}
Get all Network Service Descriptors Information without authorization token
Pass Execution If ${AUTH_USAGE} == 0 Skipping test as it is not supporting authentication
Log The GET method queries omitting token
Set Headers {"Accept": "${ACCEPT_JSON}"}
Log Execute Query and validate response
Get ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors
${output}= Output response
Set Suite Variable ${response} ${output}
Get all Network Service Descriptors Information with expired or revoked authorization token
Pass Execution If ${AUTH_USAGE} == 0 Skipping test as it is not supporting authentication
Log The GET method queries using invalid token
Set Headers {"Accept": "${ACCEPT_JSON}"}
Set Headers {"Authorization": "${NEG_AUTHORIZATION}"}
Log Execute Query and validate response
Get ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors
${output}= Output response
Set Suite Variable ${response} ${output}
GET all Network Service Descriptors Information with all_fields attribute selector
Log The GET method queries multiple NS descriptors using Attribute-based filtering parameters "all_fields"
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors?all_fields
${output}= Output response
Set Suite Variable ${response} ${output}
Check HTTP Response Body NsdInfos Matches the requested all_fields selector
Log Validating user defined data schema
${user}= Get Value From Json ${response['body']} $..userDefinedData
Validate Json UserDefinedData.schema.json ${user[0]}
Log Validation for schema OK
GET all Network Service Descriptors Information with exclude_default attribute selector
Log Trying to get all NSDs present in the NFVO Catalogue, using exclude_default filter.
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors?exclude_default
${output}= Output response
Set Suite Variable ${response} ${output}
Check HTTP Response Body NsdInfos Matches the requested exclude_default selector
Log Checking that element is missing
${user}= Get Value From Json ${response['body']} $..userDefinedData
Should Be Empty ${user}
Log Reports element is empty as expected
GET all Network Service Descriptors Information with fields attribute selector
Log Trying to get all NSDs present in the NFVO Catalogue, using fields filter.
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors?fields=${fields}
${output}= Output response
Set Suite Variable ${response} ${output}
Check HTTP Response Body NsdInfos Matches the requested fields selector
Log Validating user defined data schema
${user}= Get Value From Json ${response['body']} $..userDefinedData
Validate Json UserDefinedData.schema.json ${user[0]}
Log Validation for schema OK
GET all Network Service Descriptors Information with exclude_fields attribute selector
Log Trying to get all NSD Managements present in the NFVO Catalogue, using filter params
Pass Execution If ${NFVO_FIELDS} == 0 The NFVO is not able to use exclude_fields option
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors?exclude_fields=${fields}
${output}= Output response
Set Suite Variable ${response} ${output}
Check HTTP Response Body NsdInfos Matches the requested exclude_fields selector
Log Checking that element is missing
${user}= Get Value From Json ${response['body']} $..userDefinedData
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
Should Be Empty ${user}
Log Reports element is empty as expected
Send Post Request to create new Network Service Descriptor Resource
Log Creating a new network service descriptor
Set Headers {"Accept": "${ACCEPT_JSON}"}
Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"}
${body}= Get File jsons/createNsdInfoRequest.json
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
POST ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
Check Postcondition NsdInfo Exists
Log Checking that nsd info exists
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${response['body']['id']}
${output}= Output response
Set Suite Variable ${response} ${output}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is NsdInfo
Send PUT Request for all Network Service Descriptors
Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test.
Log Trying to perform a PUT. This method should not be implemented
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
PUT ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors
${output}= Output response
Set Suite Variable ${response} ${output}
Send PATCH Request for all Network Service Descriptors
Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test.
Log Trying to perform a PATCH. This method should not be implemented
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
PATCH ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors
${output}= Output response
Set Suite Variable ${response} ${output}
Send DELETE Request for all Network Service Descriptors
Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test.
Log Trying to perform a DELETE. This method should not be implemented
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
DELETE ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors
${output}= Output response
Set Suite Variable ${response} ${output}
Check Postcondition Network Service Descriptors Exist
Log Checking that Pm Job still exists
GET all Network Service Descriptors Information
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
GET Individual Network Service Descriptor Information
Log The GET method reads information about an individual NS descriptor
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoId}
${output}= Output response
Set Suite Variable ${response} ${output}
Check HTTP Response Body NsdInfo Identifier matches the requested Network Service Descriptor Information
Log Going to validate info retrieved
Should Be Equal ${response['body']['id']} ${nsdInfoId}
Log NSD identifier as expected
GET Individual Network Service Descriptor Information with invalid resource identifier
Log Trying to perform a GET on an erroneous nsDescriptorInfoId
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${erroneous_nsdInfoId}
Integer response status 404
${output}= Output response
Set Suite Variable ${response} ${output}
Set Suite Variable ${usageState} ${response['body']['nsdUsageState']}
Send PATCH to disable Individual Network Service Descriptor
Log Trying to perform a PATCH. As prerequisite the nsdInfo shall be in enabled operational state
Set Headers {"Accept": "${ACCEPT_JSON}"}
Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"}
Set Headers {"If-Match": "${original_etag}"}
${body}= Get File jsons/NsdInfoModificationDisable.json
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
PATCH ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoId} ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
Check Postcondition Network Service Descriptor is in operational state
[Arguments] ${status}
Log Checking postcondition op status
Should Be Equal As Strings ${response['body']['nsdOperationalState']} ${status}
Check Postcondition Network Service Descriptor usage state is unmodified (Implicit)
Log Checking postcondition use status
Should Be Equal As Strings ${response['body']['nsdUsageState']} ${usageState}
Send PATCH to enable Individual Network Service Descriptor
Log Trying to perform a PATCH. As prerequisite the nsdInfo shall be in disabled operational state
Set Headers {"Accept": "${ACCEPT_JSON}"}
Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"}
Set Headers {"If-Match": "${original_etag}"}
${body}= Get File jsons/NsdInfoModificationEnable.json
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
PATCH ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoId} ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
Send PATCH to enable Individual Network Service Descriptor in onboarding state different from ONBOARDED
Log Trying to patch a NSD present in the NFVO Catalogue, but not in ONBOARDED operationalStatus
Set Headers {"Accept": "${ACCEPT_JSON}"}
Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"}
Set Headers {"If-Match": "${original_etag}"}
${body}= Get File jsons/NsdInfoModificationEnable.json
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
PATCH ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${notOnboardedNsdInfoId} ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
Send PATCH to enable Individual Network Service Descriptor with HTTP Etag precondition failure
Log Trying to perform a PATCH. As prerequisite the nsdInfo shall be modified by another entity
Set Headers {"Accept": "${ACCEPT_JSON}"}
Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"}
Set Headers {"If-Match": "${wrong_etag}"}
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
${body}= Get File jsons/NsdInfoModificationEnable.json
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
PATCH ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoId} ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
Send DELETE Request for Individual Network Service Descriptor
Log Trying to perform a DELETE nsdInfo. The nsdInfo should be in "NOT_USED" usageState and in "DISABLED" operationalState.
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
DELETE ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${disabledNsdInfoId}
${output}= Output response
Set Suite Variable ${response} ${output}
Check Postcondition Network Service Descriptor is Deleted
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${disabledNsdInfoId}
Integer response status 404
Send DELETE Request for Individual Network Service Descriptor in operational state ENABLED
Log Trying to perform a DELETE nsdInfo in ENABLED operational state
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
DELETE ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoId}
${output}= Output response
Set Suite Variable ${response} ${output}
Check Postcondition Network Service Descriptor Exists
GET Individual Network Service Descriptor Information
Send POST Request for Individual Network Service Descriptor
Log Trying to perform a POST. This method should not be implemented
Set Headers {"Accept": "${ACCEPT_JSON}"}
Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
POST ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoId}
${output}= Output response
Set Suite Variable ${response} ${output}
Send PUT Request for Individual Network Service Descriptor
Log Trying to perform a PUT. This method should not be implemented
Set Headers {"Accept": "${ACCEPT_JSON}"}
Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
PUT ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoId}
${output}= Output response
Set Suite Variable ${response} ${output}
Check HTTP Response Header Content-Type Is
[Arguments] ${header}
Should Contain ${response['headers']['Content-Type']} ${header}
Check HTTP Response Header Content-Type Is Any of
[Arguments] ${header1} ${header2}
Should Contain Any ${response['headers']['Content-Type']} ${header1} ${header2}
Check HTTP Response Header Content-Range Is Present and Matches the requested range
Log Check Content-Range HTTP Header
Should Contain ${response['headers']} Content-Range
Should Be Equal As Strings ${response['headers']['Content-Range']} ${range}
Log Header Content-Range is present
Check HTTP Response Header Content-Length Is Present and Matches the requested range length
Log Check Content-Length HTTP Header
Should Contain ${response['headers']} Content-Length
Should Be Equal As Integers ${response['headers']['Content-Length']} ${length}
Log Header Content-Length is present
Get single file NSD Content in Plain Format
Log Trying to get a NSD present in the NFVO Catalogue
Set Headers {"Accept": "${ACCEPT_PLAIN}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdPlain}/nsd_content
${output}= Output response
Set Suite Variable ${response} ${output}
Get NSD Content in Zip Format
Log Trying to get a NSD present in the NFVO Catalogue
Set Headers {"Accept": "${ACCEPT_ZIP}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content
${output}= Output response
Set Suite Variable ${response} ${output}
Get single file NSD Content in Plain or Zip Format
Log Trying to get a NSD present in the NFVO Catalogue
Set Headers {"Accept": "${ACCEPT_PLAIN}"}
Set Headers {"Accept": "${ACCEPT_ZIP}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdPlain}/nsd_content
${output}= Output response
Set Suite Variable ${response} ${output}
Get multi file NSD Content in Plain or Zip Format
Log Trying to get a VNFD from a given NSD Management present in the NFVO Catalogue
Set Headers {"Accept": "${ACCEPT_PLAIN}"}
Set Headers {"Accept": "${ACCEPT_ZIP}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content
${output}= Output response
Set Suite Variable ${response} ${output}
Get multi file NSD Content in Plain Format
Log Trying to get a negative case performing a get on a NSD present in the NFVO Catalogue. Accept will be text/plain but NSD is composed my multiple files.
Set Headers {"Accept": "${ACCEPT_PLAIN}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content
${output}= Output response
Set Suite Variable ${response} ${output}
Get NSD Content with invalid resource identifier
Log Trying to perform a negative get, using an erroneous package ID
Set Headers {"Accept": "${ACCEPT_PLAIN}"}
Set Headers {"Accept": "${ACCEPT_ZIP}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${erroneous_nsdInfoId}/nsd_content
${output}= Output response
Set Suite Variable ${response} ${output}
Get NSD Content with conflict due to onboarding state
Log Trying to get a VNFD from a given NSD Management present in the NFVO Catalogue
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
Set Headers {"Accept": "${ACCEPT_PLAIN}"}
Set Headers {"Accept": "${ACCEPT_ZIP}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${notOnboardedNsdInfoId}/nsd_content
${output}= Output response
Set Suite Variable ${response} ${output}
GET NSD Content with Range Request
Log Trying to get a NSD Content using RANGE using an NFVO that can handle it
Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests.
Set Headers {"Accept": "${ACCEPT_ZIP}"}
Set Headers {"Range": "${range}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content
${output}= Output response
Set Suite Variable ${response} ${output}
GET NSD Content with invalid Range Request
Log Trying to get a range of bytes of the limit of the NSD
Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests.
Set Headers {"Accept": "${ACCEPT_ZIP}"}
Set Headers {"Range": "${erroneousRange}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content
${output}= Output response
Set Suite Variable ${response} ${output}
Send PUT Request to upload NSD Content as zip file in asynchronous mode
Log Trying to perform a PUT. This method upload the content of a NSD
Set Headers {"Accept": "${ACCEPT_ZIP}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
${body}= Get File ${contentZipFile}
PUT ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content ${body}
${response}= Output response body
Should Be Empty ${response}
${output}= Output response
Set Suite Variable ${response} ${output}
Send PUT Request to upload NSD Content as plain text file in asynchronous mode
Log Trying to perform a PUT. This method upload the content of a NSD
Set Headers {"Accept": "${ACCEPT_PLAIN}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
${body}= Get File ${contentPlainFile}
PUT ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdPlain}/nsd_content ${body}
${response}= Output response body
Should Be Empty ${response}
${output}= Output response
Set Suite Variable ${response} ${output}
Check Post Condition NSD Content has been Uploaded
Log Checking NsdOnboardingNotification Recieved
Wait Untill Keyword Succeeds ${retry} ${interval} Check Response is NsdOnboardingNotification
Check Response is NsdOnboardingNotification
${response}= Output response body
Should Contain ${response['headers']['Content-Type']} application/json
${schema} = NsdOnboardingNotification.schema.json
Validate Json ${schema} ${response['body']}
Log Json Schema Validation OK
Send PUT Request to upload NSD Content as zip file in synchronous mode
Log Trying to perform a PUT. This method upload the content of a NSD
Set Headers {"Accept": "${ACCEPT_ZIP}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
${body}= Get File ${contentZipFile}
PUT ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content ${body}
${response}= Output response body
Should Be Empty ${response}
${output}= Output response
Set Suite Variable ${response} ${output}
Send PUT Request to upload NSD Content as plain text file in synchronous mode
Log Trying to perform a PUT. This method upload the content of a NSD
Set Headers {"Accept": "${ACCEPT_PLAIN}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
${body}= Get File ${contentPlainFile}
PUT ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdPlain}/nsd_content ${body}
${response}= Output response body
Should Be Empty ${response}
${output}= Output response
Set Suite Variable ${response} ${output}
Check Postcondition NSD Content is uploaded and available in the NFVO
Get single file NSD Content in Plain or Zip Format
Check HTTP Response Status Code Is 200
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
Send PUT Request to upload NSD Content with conflict due to onboarding state
Log Trying to perform a PUT. This method upload the content of a NSD
Set Headers {"Accept": "${ACCEPT_ZIP}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
${body}= Get Binary File ${contentZipFile}
PUT ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${creatingNsdInfoId}/nsd_content ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
Send POST Request for NSD Content
Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test.
Log Trying to perform a POST. This method should not be implemented
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
POST ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content
${output}= Output response
Set Suite Variable ${response} ${output}
Send PATCH Request for NSD Content
Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test.
Log Trying to perform a PATCH. This method should not be implemented
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
PATCH ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content
${output}= Output response
Set Suite Variable ${response} ${output}
Send DELETE Request for NSD Content
Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test.
Log Trying to perform a DELETE. This method should not be implemented
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
DELETE ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content
${output}= Output response
Set Suite Variable ${response} ${output}
Check Postcondition NSD Content Exists
Get NSD Content in Zip Format
GET all PNF Descriptors Information
Log The GET method queries multiple PNF descriptors
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors
${output}= Output response
Set Suite Variable ${response} ${output}
GET PNF Descriptors Information with attribute-based filter
Log The GET method queries multiple PNF descriptors using Attribute-based filtering parameters
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors?${POS_FIELDS}
${output}= Output response
Set Suite Variable ${response} ${output}
Check HTTP Response Body PnfdInfos Matches the requested attribute-based filter
Log Checking that attribute-based filter is matched
GET PNF Descriptors Information with invalid attribute-based filter
Log The GET method queries multiple PNF descriptors using Attribute-based filtering parameters. Negative case, with erroneous attribute name
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors?${NEG_FIELDS}
${output}= Output response
Set Suite Variable ${response} ${output}
GET all PNF Descriptors Information with all_fields attribute selector
Log The GET method queries multiple PNF descriptors using Attribute-based filtering parameters "all_fields"
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors?all_fields
${output}= Output response
Set Suite Variable ${response} ${output}
Check HTTP Response Body PnfdInfos Matches the requested all_fields selector
Log Validating user defined data schema
${user}= Get Value From Json ${response['body']} $..UserDefinedData
Validate Json UserDefinedData.schema.json ${user[0]}
Log Validation for schema OK
GET all PNF Descriptors Information with exclude_default attribute selector
Log Trying to get all PNFDs present in the NFVO Catalogue, using exclude_default filter.
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors?exclude_default
${output}= Output response
Set Suite Variable ${response} ${output}
Check HTTP Response Body PnfdInfos Matches the requested exclude_default selector
Log Checking that element is missing
${user}= Get Value From Json ${response['body']} $..UserDefinedData
Should Be Empty ${user}
Log Reports element is empty as expected
GET all PNF Descriptors Information with fields attribute selector
Log Trying to get all PNFDs present in the NFVO Catalogue, using fields filter.
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors?fields=${fields}
${output}= Output response
Set Suite Variable ${response} ${output}
Check HTTP Response Body PnfdInfos Matches the requested fields selector
Log Validating user defined data schema
${user}= Get Value From Json ${response['body']} $..UserDefinedData
Validate Json UserDefinedData.schema.json ${user[0]}
Log Validation for schema OK
GET all PNF Descriptors Information with exclude_fields attribute selector
Log Trying to get all PNF present in the NFVO Catalogue, using filter params
Pass Execution If ${NFVO_FIELDS} == 0 The NFVO is not able to use exclude_fields option
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors?exclude_fields=${fields}
${output}= Output response
Set Suite Variable ${response} ${output}
Check HTTP Response Body PnfdInfos Matches the requested exclude_fields selector
Log Checking that element is missing
${user}= Get Value From Json ${response['body']} $..UserDefinedData
Should Be Empty ${user}
Log Reports element is empty as expected
Send Post Request to create new PNF Descriptor Resource
Log Creating a new network service descriptor
Set Headers {"Accept": "${ACCEPT_JSON}"}
Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"}
${body}= Get File jsons/createPnfdInfoRequest.json
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
POST ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
Check Postcondition PnfdInfo Exists
Log Checking that nsd info exists
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${response['body']['id']}
${output}= Output response
Set Suite Variable ${response} ${output}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is NsdInfo
Send PUT Request for all PNF Descriptors
Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test.
Log Trying to perform a PUT. This method should not be implemented
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
PUT ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors
${output}= Output response
Set Suite Variable ${response} ${output}
Send PATCH Request for all PNF Descriptors
Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test.
Log Trying to perform a PATCH. This method should not be implemented
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
PATCH ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors
${output}= Output response
Set Suite Variable ${response} ${output}
Send DELETE Request for all PNF Descriptors
Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test.
Log Trying to perform a DELETE. This method should not be implemented
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
DELETE ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors
${output}= Output response
Set Suite Variable ${response} ${output}
Check Postcondition PNF Descriptors Exist
Log Checking that PNFD still exists
GET all PNF Descriptors Information
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
GET Individual PNF Descriptor Information
Log The GET method reads information about an individual PNF descriptor
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${pnfdInfoId}
${output}= Output response
Set Suite Variable ${response} ${output}
Check HTTP Response Body PnfdInfo Identifier matches the requested PNF Descriptor Information
Log Going to validate info retrieved
Should Be Equal ${response['body']['id']} ${pnfdInfoId}
Log PNFD identifier as expected
GET Individual PNF Descriptor Information with invalid resource identifier
Log Trying to perform a GET on an erroneous nsDescriptorInfoId
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${erroneous_pnfdInfoId}
Integer response status 404
${output}= Output response
Set Suite Variable ${response} ${output}
Send PATCH to update Individual PNF Descriptor
Log Trying to perform a PATCH.
Set Headers {"Accept": "${ACCEPT_JSON}"}
Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"}
Set Headers {"If-Match": "${original_etag}"}
${body}= Get File jsons/PnfdInfoModification.json
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
PATCH ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${pnfdInfoId} ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
Set Suite Variable ${body["userDefinedData"]} ${userDefinedDataSet}
Check Postcondition PNF Descriptor is modified according to the requested update
Log Checking postcondition op status
Should Be Equal ${response['body']['userDefinedData']} ${userDefinedDataSet}
Send PATCH to update Individual PNF Descriptor with HTTP Etag precondition failure
Log Trying to perform a PATCH. As prerequisite the pnfdInfo shall be modified by another entity
Set Headers {"Accept": "${ACCEPT_JSON}"}
Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"}
Set Headers {"If-Match": "${wrong_etag}"}
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
${body}= Get File jsons/PnfdInfoModification.json
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
PATCH ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${pnfdInfoId} ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
Send DELETE Request for Individual PNF Descriptor
Log Trying to perform a DELETE pnfdInfo.
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
DELETE ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${pnfdInfoId}
${output}= Output response
Set Suite Variable ${response} ${output}
Check Postcondition PNF Descriptor is Deleted
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${pnfdInfoId}
Integer response status 404
Send POST Request for Individual PNF Descriptor
Log Trying to perform a POST. This method should not be implemented
Set Headers {"Accept": "${ACCEPT_JSON}"}
Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
POST ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${pnfdInfoId}
${output}= Output response
Set Suite Variable ${response} ${output}
Send PUT Request for Individual PNF Descriptor
Log Trying to perform a PUT. This method should not be implemented
Set Headers {"Accept": "${ACCEPT_JSON}"}
Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
PUT ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${pnfdInfoId}
${output}= Output response
Set Suite Variable ${response} ${output}
Get PNFD Content
Log Trying to get a NSD present in the NFVO Catalogue
Set Headers {"Accept": "${ACCEPT_PLAIN}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content
${output}= Output response
Set Suite Variable ${response} ${output}
Get PNFD Content with invalid resource identifier
Log Trying to perform a negative get, using an erroneous package ID
Set Headers {"Accept": "${ACCEPT_PLAIN}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${erroneous_pnfdInfoId}/pnfd_content
${output}= Output response
Set Suite Variable ${response} ${output}
Get PNFD Content with conflict due to onboarding state
Log Trying to get a PNFD present in the NFVO Catalogue
Set Headers {"Accept": "${ACCEPT_PLAIN}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${onboardingStatePnfdId}/pnfd_content
${output}= Output response
Set Suite Variable ${response} ${output}
Send PUT Request to upload PNFD Content as plain text file
Log Trying to perform a PUT. This method upload the content of a PNFD
Set Headers {"Accept": "${ACCEPT_PLAIN}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
${body}= Get File ${contentFilePnfd}
PUT ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content ${body}
${response}= Output response body
Should Be Empty ${response}
${output}= Output response
Set Suite Variable ${response} ${output}
Send PUT Request to upload PNFD Content with conflict due to onboarding state
Log Trying to perform a PUT. This method upload the content of a PNFD
Set Headers {"Accept": "${ACCEPT_PLAIN}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
${body}= Get Binary File ${contentFilePnfd}
PUT ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${creatingNsdInfoId}/pnfd_content ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
Send POST Request for PNFD Content
Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test.
Log Trying to perform a POST. This method should not be implemented
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
POST ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${pnfdInfoId}/nsd_content
${output}= Output response
Set Suite Variable ${response} ${output}
Send PATCH Request for PNFD Content
Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test.
Log Trying to perform a PATCH. This method should not be implemented
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
PATCH ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${pnfdInfoId}/nsd_content
${output}= Output response
Set Suite Variable ${response} ${output}
Send DELETE Request for PNFD Content
Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test.
Log Trying to perform a DELETE. This method should not be implemented
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
DELETE ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${pnfdInfoId}/nsd_content
${output}= Output response
Set Suite Variable ${response} ${output}
Check Postcondition PNFD Content Exists
Get PNFD Content
Get all NSD Management Subscriptions
[Documentation] This method shall support the URI query parameters, request and response data structures, and response codes, as
... specified in the Tables 5.4.8.3.2-1 and 5.4.8.3.2-2.
Log Trying to get the list of subscriptions
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions
${output}= Output response
Set Suite Variable ${response} ${output}
Get NSD Management Subscriptions with attribute-based filters
Log Trying to get the list of subscriptions using filters
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${filter_ok}
${output}= Output response
Set Suite Variable ${response} ${output}
Get NSD Management Subscriptions with invalid attribute-based filters
Log Trying to get the list of subscriptions using filters with wrong attribute name
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${filter_ko}
${output}= Output response
Set Suite Variable ${response} ${output}
Get NSD Management Subscriptions with invalid resource endpoint
Log Trying to perform a request on a Uri which doesn't exist
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/subscription
${output}= Output response
Set Suite Variable ${response} ${output}
Send Post Request for NSD Management Subscription
[Documentation] This method shall support the URI query parameters, request and response data structures, and response codes, as
... specified in the Tables 5.4.8.3.1-1 and 5.4.8.3.1-2.
Log Trying to create a new subscription
Set Headers {"Accept": "${ACCEPT_JSON}"}
Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"}
${body}= Get File jsons/subscriptions.json
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1
... Check Notification Endpoint
Send Post Request for Duplicated NSD Management Subscription
Log Trying to create a subscription with an already created content
Set Headers {"Accept": "${ACCEPT_JSON}"}
Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"}
${body}= Get File jsons/subscriptions.json
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1
... Check Notification Endpoint
Send Put Request for NSD Management Subscriptions
Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test.
Log Trying to perform a PUT. This method should not be implemented
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions
${output}= Output response
Set Suite Variable ${response} ${output}
Send Patch Request for NSD Management Subscriptions
Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test.
Log Trying to perform a PATCH. This method should not be implemented
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
PATCH ${apiRoot}/${apiName}/${apiVersion}/subscriptions
${output}= Output response
Set Suite Variable ${response} ${output}
Send Delete Request for NSD Management Subscriptions
Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test.
Log Trying to perform a DELETE. This method should not be implemented
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions
${output}= Output response
Set Suite Variable ${response} ${output}
Check Postcondition NSD Management Subscriptions Exists
Log Checking that subscriptions exists
Get all NSD Management Subscriptions
Check HTTP Response Status Code Is
[Arguments] ${expected_status}
Should Be Equal As Strings ${response['status']} ${expected_status}
Log Status code validated
Check HTTP Response Body Json Schema Is
[Arguments] ${input}
Should Contain ${response['headers']['Content-Type']} application/json
${schema} = Catenate SEPARATOR= ${input} .schema.json
Validate Json ${schema} ${response['body']}
Log Json Schema Validation OK
Check HTTP Response Body Is Empty
Should Be Empty ${response['body']}
Log No json schema is provided. Validation OK
Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter
Log Check Response includes NSD Management Management according to filter
Should Be Equal As Strings ${response[0]['body']['callbackUri']} ${filter_ok['callbackUri']}
Check HTTP Response Body NsdmSubscription Attributes Values Match the Issued Subscription
Log Check Response matches subscription
${body}= Get File jsons/subscriptions.json
${subscription}= evaluate json.loads('''${body}''') json
Should Be Equal As Strings ${response['body']['callbackUri']} ${subscription['callbackUri']}
Check Postcondition NSD Management Subscription Is Set
Log Check Postcondition subscription exist
Log Trying to get the subscription
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${response['body']['id']}
${output}= Output response
Set Suite Variable ${response} ${output}
Check HTTP Response Status Code Is 200
Check Postcondition Subscription Resource Returned in Location Header Is Available
Log Going to check postcondition
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${response['headers']['Location']}
Integer response status 200
Log Received a 200 OK as expected
${contentType}= Output response headers Content-Type
Should Contain ${contentType} application/json
${result}= Output response body
Validate Json NsdmSubscription.schema.json ${result}
Log Validated NsdmSubscription schema
${body}= Get File jsons/subscriptions.json
${subscription}= evaluate json.loads('''${body}''') json
Should Be Equal ${result['callbackUri']} ${subscription['callbackUri']}
Log Validated Issued subscription is same as original
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
Get Individual NSD Management Subscription
Log Trying to get a single subscription identified by subscriptionId
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId}
${output}= Output response
Set Suite Variable ${response} ${output}
GET individual NSD Management Subscription with invalid resource identifier
Log Trying to perform a request on a subscriptionID which doesn't exist
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${erroneousSubscriptionId}
${output}= Output response
Set Suite Variable ${response} ${output}
Send Delete request for individual NSD Management Subscription
Log Trying to perform a DELETE on a subscriptionId
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId}
${output}= Output response
Set Suite Variable ${response} ${output}
Check Postcondition NSD Management Subscription is Deleted
Log Check Postcondition Subscription is deleted
GET individual NSD Management Subscription
Check HTTP Response Status Code Is 404
Send Delete request for individual NSD Management Subscription with invalid resource identifier
Log Trying to perform a DELETE on a subscriptionId which doesn't exist
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${erroneousSubscriptionId}
${output}= Output response
Set Suite Variable ${response} ${output}
Send Post request for individual NSD Management Subscription
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"}
POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${newSubscriptionId}
${output}= Output response
Set Suite Variable @{response} ${output}
Send Put request for individual NSD Management Subscription
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId}
${origOutput}= Output response
Set Suite Variable ${origResponse} ${origOutput}
PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId}
${output}= Output response
Set Suite Variable @{response} ${output}
Send Patch request for individual NSD Management Subscription
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId}
${origOutput}= Output response
Set Suite Variable ${origResponse} ${origOutput}
PATCH ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId}
${output}= Output response
Set Suite Variable @{response} ${output}
Check Postcondition NSD Management Subscription is Unmodified (Implicit)
Log Check postconidtion subscription not modified
GET individual NSD Management Subscription
Log Check Response matches original VNF Threshold
${subscription}= evaluate json.loads('''${response['body']}''') json
Should Be Equal ${origResponse['body']['id']} ${subscription.id}
Should Be Equal ${origResponse['body']['callbackUri']} ${subscription.callbackUri}
Check Postcondition NSD Management Subscription is not Created
Log Trying to get a new subscription
Set Headers {"Accept": "${ACCEPT_JSON}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${newSubscriptionId}
${output}= Output response
Set Suite Variable @{response} ${output}
Check HTTP Response Status Code Is 404
Check HTTP Response Body Subscription Identifier matches the requested Subscription
Log Trying to check response ID
Should Be Equal ${response['body']['id']} ${subscriptionId}
Log Subscription identifier as expected
Check HTTP Response Header Contains
[Arguments] ${CONTENT_TYPE}
Should Contain ${response['headers']} ${CONTENT_TYPE}
Check HTTP Response Header Contains Etag
Should Contain ${response['headers']} Etag
Set Suite Variable ${original_etag} ${response['headers]['ETag']}
Create Sessions
Pass Execution If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 0 MockServer not started as NFVO is not checking the notification endpoint
Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance
Wait For Process handle=mockInstance timeout=5s on_timeout=continue
Create Mock Session ${callback_uri}
Check Notification Endpoint
&{notification_request}= Create Mock Request Matcher GET ${callback_endpoint}
&{notification_response}= Create Mock Response headers="Content-Type: application/json" status_code=204
Create Mock Expectation ${notification_request} ${notification_response}
Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${notification_request}
Clear Requests ${callback_endpoint}