aboutsummaryrefslogtreecommitdiffstats
path: root/robot/resources/test_templates/vnfsdk_validation_template.robot
blob: 56cd0b96cbad0cbd339a302c6c10af3e97306e5f (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
*** 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-vtp  ${test_suite_name}=validation  ${test_case_name}=csar-validate  ${pnf}=TRUE  ${secured_package}=FALSE  ${negative_test_case}=TRUE  ${failed_vnfreqNames}=@{empty_list}  ${sdc_response}=@{empty_list}  ${secure_type}=CMS  ${sdc_cert}=sdc-valid
    Create Directory   ${VNFSDK_CSAR_DIRECTORY}
    ${onboarding_package_path}=   Run Keyword If  "${secured_package}"=='FALSE'   Create CSAR Package  ${package_folder}
                    ...  ELSE  Create Secured CSAR ZIP Package   ${package_folder}  ${secure_type}  ${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}
    Validate Onboarding Package In SDC  ${onboarding_package_path}  ${package_folder}   ${sdc_cert}  ${negative_test_case}  ${sdc_response}  ${sdc_cert}


Create CSAR Package
    [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 Secured CSAR ZIP Package
    [Arguments]  ${package_folder}  ${secure_type}  ${sdc_cert}
    ${zip}=  Run Keyword If   "${secure_type}"=='CMS'  Create Secured CSAR ZIP Package with CMS   ${package_folder}  ${sdc_cert}
                    ...  ELSE  Create Secured CSAR ZIP Package with CMS and CERT    ${package_folder}  ${sdc_cert}
    [Return]  ${zip}

Create Secured CSAR ZIP Package with CMS
    [Arguments]   ${package_folder}  ${cert}
    ${zip}=   Catenate   ${VNFSDK_CSAR_DIRECTORY}/${package_folder}.zip
    ${cms}=   Catenate   ${VNFSDK_CSAR_DIRECTORY}/${package_folder}.cms
    ${csar}=  Create CSAR Package   ${package_folder}
    ${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}  ${cert}
    ${zip}=   Catenate   ${VNFSDK_CSAR_DIRECTORY}/${package_folder}.zip
    ${cms}=   Catenate   ${VNFSDK_CSAR_DIRECTORY}/${package_folder}.cms
    ${csar}=  Create CSAR Package   ${package_folder}
    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}
    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}
    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}