blob: 0926905d69f388d8348634ec19c4f1a231f66e3a (
plain)
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
|
*** Settings ***
Documentation This test template encapsulates the VNF Orchestration use case.
Library OperatingSystem
Library ArchiveLibrary
Library Collections
Library ONAPLibrary.Templating WITH NAME Templating
Resource ../global_properties.robot
Resource ../vnfsdk_interface.robot
Resource ../sdc_interface.robot
*** Variables ***
${VNFSDK_TEST} vnfsdk/vnfsdk_validation_request.jinja
*** Variables ***
${VNFSDK_TOSCA_ONBOARDING_PACKAGES_DIRECTORY} ${GLOBAL_TOSCA_ONBOARDING_PACKAGES_FOLDER}/vnfsdk
${VNFSDK_CSAR_DIRECTORY} ${VNFSDK_TOSCA_ONBOARDING_PACKAGES_DIRECTORY}/temp
@{empty_list}
*** Keywords ***
Validate Onboarding Package
[Arguments] ${package_folder} ${scenario}=onap-dublin ${test_suite_name}=validation ${test_case_name}=csar-validate ${pnf}=TRUE ${integrity_check}=FALSE ${secured_package}=FALSE ${negative_test_case}=TRUE ${failed_vnfreqNames}=@{empty_list} ${sdc_response}=@{empty_list} ${secure_type}=CMS ${sdc_cert}=sdc-valid
Disable Warnings
Create Directory ${VNFSDK_CSAR_DIRECTORY}
${onboarding_package_path}= Run Keyword If "${secured_package}"=='FALSE' Create CSAR Package ${package_folder} ${integrity_check} ${sdc_cert}
... ELSE Create Secured CSAR Package ${package_folder} ${integrity_check} ${secure_type} ${sdc_cert}
Validate Onboarding Package In SDC ${onboarding_package_path} ${package_folder} ${sdc_cert} ${negative_test_case} ${sdc_response} ${sdc_cert}
Run Keyword If "${negative_test_case}"=='FALSE' Validate Valid Onboarding Package ${package_folder} ${onboarding_package_path} ${scenario} ${test_suite_name} ${test_case_name} ${pnf} ${secured_package}
... ELSE Validate Not Valid Onboarding Package ${package_folder} ${onboarding_package_path} ${scenario} ${test_suite_name} ${test_case_name} ${pnf} ${failed_vnfreqNames} ${secured_package}
Create CSAR Package
[Arguments] ${package_folder} ${integrity_check} ${cert}
${csar} = Run Keyword If "${integrity_check}"=='FALSE' Create CSAR Package without integrity check ${package_folder}
... ELSE Create CSAR Package with integrity check ${package_folder} ${integrity_check} ${cert}
[Return] ${csar}
Create CSAR Package without integrity check
[Arguments] ${package_folder}
Empty Directory ${VNFSDK_CSAR_DIRECTORY}
${csar}= Catenate ${VNFSDK_CSAR_DIRECTORY}/${package_folder}.csar
Copy File ${GLOBAL_TOSCA_ONBOARDING_PACKAGES_FOLDER}/vnfsdk/${package_folder}.csar ${csar}
[Return] ${csar}
Create CSAR Package with integrity check
[Arguments] ${package_folder} ${integrity_check} ${cert}
Empty Directory ${VNFSDK_CSAR_DIRECTORY}
${csar}= Catenate ${VNFSDK_CSAR_DIRECTORY}/${package_folder}.csar
Copy Directory ${GLOBAL_TOSCA_ONBOARDING_PACKAGES_FOLDER}/vnfsdk/${package_folder} ${VNFSDK_CSAR_DIRECTORY}
${meta}= OperatingSystem.Get File ${VNFSDK_CSAR_DIRECTORY}/${package_folder}/TOSCA-Metadata/TOSCA.meta
${cert_name}= Get Regexp Matches ${meta} (?<=\ETSI-Entry-Certificate: )(.*)
Run Keyword And Ignore Error Copy File /tmp/package-robot-${cert}.cert ${VNFSDK_CSAR_DIRECTORY}/${package_folder}/${cert_name}[0]
${files} = List Files In Directory ${VNFSDK_CSAR_DIRECTORY}/${package_folder} *.mf absolute
Sign csar manifest file ${integrity_check} ${cert} ${files}[0]
${rc} = Run and Return RC cd ${VNFSDK_CSAR_DIRECTORY}/${package_folder}; zip -r ${csar} *
Should Be Equal As Integers ${rc} 0
Remove Directory ${VNFSDK_CSAR_DIRECTORY}/${package_folder} recursive=True
[Return] ${csar}
Sign csar manifest file
[Arguments] ${integrity_check} ${cert} ${manifest}
${rc} = Run Keyword If "${integrity_check}"=='CMS_with_cert' Run and Return RC openssl cms -sign -signer /tmp/package-robot-${cert}.cert -inkey /tmp/package-private-robot-${cert}.key -outform PEM -binary -in ${manifest} >> ${manifest}
... ELSE Run and Return RC openssl cms -sign -signer /tmp/package-robot-${cert}.cert -inkey /tmp/package-private-robot-${cert}.key -outform PEM -binary -nocerts -in ${manifest} >> ${manifest}
Should Be Equal As Integers ${rc} 0
Create Secured CSAR Package
[Arguments] ${package_folder} ${integrity_check} ${secure_type} ${sdc_cert}
${zip}= Run Keyword If "${secure_type}"=='CMS' Create Secured CSAR ZIP Package with CMS ${package_folder} ${integrity_check} ${sdc_cert}
... ELSE Create Secured CSAR ZIP Package with CMS and CERT ${package_folder} ${integrity_check} ${sdc_cert}
[Return] ${zip}
Create Secured CSAR ZIP Package with CMS
[Arguments] ${package_folder} ${integrity_check} ${cert}
${zip}= Catenate ${VNFSDK_CSAR_DIRECTORY}/${package_folder}.zip
${cms}= Catenate ${VNFSDK_CSAR_DIRECTORY}/${package_folder}.cms
${csar}= Create CSAR Package ${package_folder} ${integrity_check} ${cert}
${rc} = Run and Return RC openssl cms -sign -signer /tmp/package-robot-${cert}.cert -inkey /tmp/package-private-robot-${cert}.key -outform PEM -binary -in ${csar} -out ${cms}
Should Be Equal As Integers ${rc} 0
${rc} = Run and Return RC cd ${VNFSDK_CSAR_DIRECTORY}; zip -r ${zip} *
Should Be Equal As Integers ${rc} 0
[Return] ${zip}
Create Secured CSAR ZIP Package with CMS and CERT
[Arguments] ${package_folder} ${integrity_check} ${cert}
${zip}= Catenate ${VNFSDK_CSAR_DIRECTORY}/${package_folder}.zip
${cms}= Catenate ${VNFSDK_CSAR_DIRECTORY}/${package_folder}.cms
${csar}= Create CSAR Package ${package_folder} ${integrity_check} ${cert}
Copy File /tmp/package-robot-${cert}.cert ${VNFSDK_CSAR_DIRECTORY}/${package_folder}.cert
${rc} = Run and Return RC openssl cms -sign -signer /tmp/package-robot-${cert}.cert -inkey /tmp/package-private-robot-${cert}.key -outform PEM -binary -nocerts -in ${csar} -out ${cms}
Should Be Equal As Integers ${rc} 0
${rc} = Run and Return RC cd ${VNFSDK_CSAR_DIRECTORY}; zip -r ${zip} *
Should Be Equal As Integers ${rc} 0
[Return] ${zip}
Validate Valid Onboarding Package
[Arguments] ${package_folder} ${onboarding_package_path} ${scenario} ${test_suite_name} ${test_case_name} ${pnf} ${secured_package}
${onboarding_package_name}= Run Keyword If "${secured_package}"=='FALSE' Catenate ${package_folder}.csar
... ELSE Catenate ${package_folder}.zip
${result}= Run VNFSDK Validate Request ${onboarding_package_name} ${onboarding_package_path} ${scenario} ${test_suite_name} ${test_case_name} ${pnf}
Log ${result.json()}
${json}= Set Variable ${result.json()}
${status}= Set Variable ${json[0]['results']['criteria']}
Should Be Equal As Strings ${status} PASS
Run VNFSDK Validate Request
[Arguments] ${onboarding_package_name} ${onboarding_package_path} ${scenario} ${test_suite_name} ${test_case_name} ${pnf}
${arguments}= Create Dictionary scenario=${scenario} onboarding_package_path=${onboarding_package_path} test_suite_name=${test_suite_name} test_case_name=${test_case_name} pnf=${pnf} file_name=${onboarding_package_name}
Templating.Create Environment vnfsdk ${GLOBAL_TEMPLATE_FOLDER}
${executions}= Templating.Apply Template vnfsdk ${VNFSDK_TEST} ${arguments}
${fileData}= Get Binary File ${onboarding_package_path}
${fileDir} ${fileName}= Split Path ${onboarding_package_path}
${file_part}= Create List ${fileName} ${fileData} application/octet-stream
${executions_parts}= Create List ${executions}
${fileParts}= Create Dictionary
Set to Dictionary ${fileParts} file=${file_part}
Set to Dictionary ${fileParts} executions=${executions}
${resp}= Run VNFSDK Post Request /onapapi/vnfsdk-marketplace/v1/vtp/executions ${fileParts}
[Return] ${resp}
Validate Not Valid Onboarding Package
[Arguments] ${package_folder} ${onboarding_package_path} ${scenario} ${test_suite_name} ${test_case_name} ${pnf} ${failed_req_list} ${secured_package}
${onboarding_package_name}= Run Keyword If "${secured_package}"=='FALSE' Catenate ${package_folder}.csar
... ELSE Catenate ${package_folder}.zip
${result}= Run VNFSDK Validate Request ${onboarding_package_name} ${onboarding_package_path} ${scenario} ${test_suite_name} ${test_case_name} ${pnf}
Log ${result.json()}
${json}= Set Variable ${result.json()}
${status}= Set Variable ${json[0]['results']['criteria']}
Should Be Equal As Strings ${status} FAILED
${status_req_list}= Set Variable ${json[0]['results']['results']}
${failed_req_from_test_run}= Create List
:FOR ${status_req} IN @{status_req_list}
\ ${req_status}= Get From Dictionary ${status_req} passed
\ Run Keyword If "${req_status}"=='False' Add Failed Requirement To List ${status_req} ${failed_req_from_test_run} vnfreqName
Log ${failed_req_from_test_run}
Sort List ${failed_req_from_test_run}
Sort List ${failed_req_list}
Lists Should Be Equal ${failed_req_from_test_run} ${failed_req_list}
Add Failed Requirement To List
[Arguments] ${status_req} ${failed_req} ${param_name}
${req}= Get From Dictionary ${status_req} ${param_name}
Append To List ${failed_req} ${req}
Get And Comapre Error Responses From SDC API
[Arguments] ${resp} ${sdc_response}
${json}= Set Variable ${resp.json()}
${sdc_response_list} Set Variable ${json['errors']['uploadFile']}
${failed_req_from_test_run}= Create List
:FOR ${message_item} IN @{sdc_response_list}
\ ${req_status}= Get From Dictionary ${message_item} level
\ Run Keyword If "${req_status}"=='ERROR' Add Failed Requirement To List ${message_item} ${failed_req_from_test_run} message
Log ${failed_req_from_test_run}
Sort List ${sdc_response}
Sort List ${failed_req_from_test_run}
Lists Should Be Equal ${failed_req_from_test_run} ${sdc_response}
Validate Onboarding Package In SDC
[Arguments] ${onboarding_package_path} ${package_folder} ${sdc_validation} ${negative_test_case} ${sdc_response} ${sdc_cert}
${license_model_id} ${license_model_version_id}= Add SDC License Model
${license_temp_date}= Get Current Date
${license_start_date}= Get Current Date result_format=%m/%d/%Y
${license_end_date}= Add Time To Date ${license_temp_date} 365 days result_format=%m/%d/%Y
${key_group_id}= Add SDC License Group ${license_model_id} ${license_model_version_id} ${license_start_date} ${license_end_date}
${pool_id}= Add SDC Entitlement Pool ${license_model_id} ${license_model_version_id} ${license_start_date} ${license_end_date}
${feature_group_id}= Add SDC Feature Group ${license_model_id} ${key_group_id} ${pool_id} ${license_model_version_id}
${license_agreement_id}= Add SDC License Agreement ${license_model_id} ${feature_group_id} ${license_model_version_id}
Submit SDC License Model ${license_model_id} ${license_model_version_id}
${license_model_resp}= Get SDC License Model ${license_model_id} ${license_model_version_id}
${software_product_id} ${software_product_version_id}= Add SDC Software Product ${license_agreement_id} ${feature_group_id} ${license_model_resp['vendorName']} ${license_model_id} ${license_model_version_id} ${package_folder}
${resp}= Upload SDC Heat Package ${software_product_id} ${onboarding_package_path} ${software_product_version_id}
Run Keyword If "${negative_test_case}"=='TRUE' or "${sdc_cert}"=='sdc-invalid' Get And Comapre Error Responses From SDC API ${resp} ${sdc_response}
... ELSE Validate SDC Software Product ${software_product_id} ${software_product_version_id}
|