Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
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
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
210
211
212
213
214
215
216
217
218
219
*** Settings ***
Documentation This clause defines the content of the individual NS descriptor, i.e. NSD content
Library JSONSchemaLibrary schemas/
Resource environment/generic.txt # Generic Parameters
Resource environment/nsDescriptors.txt # Specific nsDescriptors Parameters
Library JSONLibrary
Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT}
Library OperatingSystem
*** Test Cases ***
GET NSD Content
[Documentation] The GET method fetches the content of the NSD.
... The NSD can be implemented as a single file or as a collection of multiple files. If the NSD is implemented in the form
... of multiple files, a ZIP file embedding these files shall be returned. If the NSD is implemented as a single file, either
... that file or a ZIP file embedding that file shall be returned.
...
... The selection of the format is controlled by the "Accept" HTTP header passed in the GET request:
...
... - If the "Accept" header contains only "text/plain" and the NSD is implemented as a single file, the file shall be
... returned; otherwise, an error message shall be returned.
...
... - If the "Accept" header contains only "application/zip", the single file or the multiple files that make up the
... NSD shall be returned embedded in a ZIP file.
...
... - If the "Accept" header contains both "text/plain" and "application/zip", it is up to the NFVO to choose the
... format to return for a single-file NSD; for a multi-file NSD, a ZIP file shall be returned.
...
... NOTE: The structure of the NSD zip file is outside the scope of the present document.
...
... This method shall follow the provisions specified in the Tables 5.4.4.3.2-1 and 5.4.4.3.2-2 for URI query parameters,
... request and response data structures, and response codes.
Log The GET method queries multiple NS descriptors
Set Headers {"Accept": "${ACCEPT_ZIP}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoId}/nsd_content
Integer response status 200
${contentType}= Output response headers Content-Type
Should Contain ${contentType} ${CONTENT_TYPE_ZIP}
GET NSD Content - Range
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/${nsdInfoId}/nsd_content
Integer response status 206
Log Received 206 Partial Content as expected.
${headers}= Output response headers
Should Contain ${headers} Content-Range
Log Header Content-Range is present
Should Contain ${headers} Content-Length
Log Header Content-Length is present
GET NSD Content - Range NFVO No RANGE
Log Trying to get a NSD Content using RANGE using an NFVO that can handle it
Pass Execution If ${NFVO_RANGE_OK} == 1 Skipping this test as NFVO is 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/${nsdInfoId}/nsd_content
Integer response status 200
Log Received 200 OK as expected. The content is all available on this request. RANGE request has been ignored.
GET NSD Content - Negative Range
Log Trying to get a range of bytes of the limit of the NSD Content
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/${nsdInfoId}/nsd_content
Integer response status 416
Log Received 416 Range not satisfiable as expected.
${contentType}= Output response headers Content-Type
Should Contain ${contentType} ${CONTENT_TYPE_JSON}
Log Trying to validate ProblemDetails
${problemDetails}= Output response body
${json}= evaluate json.loads('''${problemDetails}''') json
Validate Json ProblemDetails.schema.json ${json}
Log Validation OK
GET NSD Content- Negative (Not Found)
Log Trying to perform a negative get, using an erroneous package ID
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
Integer response status 404
Log Received 404 Not Found as expected
${contentType}= Output response headers Content-Type
Should Contain ${contentType} ${CONTENT_TYPE_JSON}
Log Trying to validate ProblemDetails
${problemDetails}= Output response body
${json}= evaluate json.loads('''${problemDetails}''') json
Validate Json ProblemDetails.schema.json ${json}
Log Validation OK
GET NSD Content - Negative (onboardingState issue)
Log Trying to get a NSD content present in the NFVO Catalogue, but not in ONBOARDED operationalStatus
Set Headers {"Accept": "${ACCEPT_ZIP}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
GET ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${onboardingStateNsdInfoId}/nsd_content
Integer response status 409
Log Received 409 Conflict as expected
${contentType}= Output response headers Content-Type
Should Contain ${contentType} ${CONTENT_TYPE_JSON}
Log Trying to validate ProblemDetails
${problemDetails}= Output response body
${json}= evaluate json.loads('''${problemDetails}''') json
Validate Json ProblemDetails.schema.json ${json}
Log Validation OK
PUT a NSD Content - Asynchronous mode
[Documentation] The NSD to be uploaded can be implemented as a single file or as a collection of multiple files, as defined in
... clause 5.4.4.3.2. If the NSD is implemented in the form of multiple files, a ZIP file embedding these files shall be
... uploaded. If the NSD is implemented as a single file, either that file or a ZIP file embedding that file shall be uploaded.
... The "Content-Type" HTTP header in the PUT request shall be set accordingly based on the format selection of the
... NSD.
...
... - If the NSD to be uploaded is a text file, the "Content-Type" header is set to "text/plain".
...
... - If the NSD to be uploaded is a zip file, the "Content-Type" header is set to "application/zip".
...
... This method shall follow the provisions specified in the Tables 5.4.4.3.3-1 and 5.4.4.3.3-2 for URI query parameters,
... request and response data structures, and response codes.
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 ${contentFile}
PUT ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoId}/nsd_content ${body}
Integer response status 202
Log Received 202 Accepted as expected
${response}= Output response body
Should Be Empty ${response}
PUT a NSD Content - Synchronous mode
[Documentation] The NSD to be uploaded can be implemented as a single file or as a collection of multiple files, as defined in
... clause 5.4.4.3.2. If the NSD is implemented in the form of multiple files, a ZIP file embedding these files shall be
... uploaded. If the NSD is implemented as a single file, either that file or a ZIP file embedding that file shall be uploaded.
... The "Content-Type" HTTP header in the PUT request shall be set accordingly based on the format selection of the
... NSD.
...
... - If the NSD to be uploaded is a text file, the "Content-Type" header is set to "text/plain".
...
... - If the NSD to be uploaded is a zip file, the "Content-Type" header is set to "application/zip".
...
... This method shall follow the provisions specified in the Tables 5.4.4.3.3-1 and 5.4.4.3.3-2 for URI query parameters,
... request and response data structures, and response codes.
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 ${contentFile}
PUT ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoId}/nsd_content ${body}
Integer response status 200
Log Received 200 OK as expected
${response}= Output response body
Should Be Empty ${response}
PUT a NSD Content - Negative. Nsd in CREATING state
[Documentation] The NSD to be uploaded can be implemented as a single file or as a collection of multiple files, as defined in
... clause 5.4.4.3.2. If the NSD is implemented in the form of multiple files, a ZIP file embedding these files shall be
... uploaded. If the NSD is implemented as a single file, either that file or a ZIP file embedding that file shall be uploaded.
... The "Content-Type" HTTP header in the PUT request shall be set accordingly based on the format selection of the
... NSD.
...
... - If the NSD to be uploaded is a text file, the "Content-Type" header is set to "text/plain".
...
... - If the NSD to be uploaded is a zip file, the "Content-Type" header is set to "application/zip".
...
... This method shall follow the provisions specified in the Tables 5.4.4.3.3-1 and 5.4.4.3.3-2 for URI query parameters,
... request and response data structures, and response codes.
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 ${contentFile}
PUT ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${creatingNsdInfoId}/nsd_content ${body}
Integer response status 409
Log Received 409 Conflict as expected
${contentType}= Output response headers Content-Type
Should Contain ${contentType} application/json
Log Trying to validate ProblemDetails
${problemDetails}= Output response body
${json}= evaluate json.loads('''${problemDetails}''') json
Validate Json ProblemDetails.schema.json ${json}
Log Validation OK
POST a NSD Content (Method not implemented)
Log Trying to perform a PUT. This method should not be implemented
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"}
POST ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoId}/nsd_content
Integer response status 405
Log Received 405 Method not implemented as expected
PATCH a NSD Content (Method not implemented)
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/${nsdInfoId}/nsd_content
Integer response status 405
Log Received 405 Method not implemented as expected
DELETE a NSD Content (Method not implemented)
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/${nsdInfoId}/nsd_content
Integer response status 405
Log Received 405 Method not implemented as expected