a7c2c402372fe3736a6ce27cc9d8d9455f49142a
[integration/csit.git] / tests / vnfsdk-refrepo / csar_validation_tests.robot
1 *** Settings ***
2 Resource          ./resources/vnfsdk_keywords.robot
3
4 *** Test Cases ***
5
6 Perform vnf refrepo healthcheck
7     [Documentation]    Check if vnf refrepo is up and running
8
9     Create Session   refrepo  ${base_url}
10     ${response}=    Get Request    refrepo   /PackageResource/healthcheck
11     Should Be Equal As Strings  ${response.status_code}     200
12
13
14 Validate correct, no security CSAR
15     [Documentation]    Valid CSAR with no security should PASS validation and should return no error
16
17     ${response}=   Validate CSAR usign Post request   ${csar_valid_no_security}   ${execute_no_security_csar_validation}
18     # Removing strings that are causing errors during evaluation,
19     # those strings are dependent on validation response and may need to be changed if vnf refrepo response changes
20     ${response}=   Remove String    ${response}    \\\\    \\u003c    \\u003e   \\"
21     ${json_response}=    evaluate    json.loads('''${response}''')    json
22     Should Be Equal As Strings    ${json_response[0]["results"]["criteria"]}   ${OPERATION_STATUS_PASS}
23     FOR   ${resault}  IN  @{json_response[0]["results"]["results"]}
24         Should Be Equal As Strings   ${resault["errors"]}   []
25         Should Be Equal As Strings   ${resault["passed"]}   True
26         run keyword if  "${resault["vnfreqName"]}" == "${CERTIFICATION_RULE}"
27         ...  Should Be Equal As Strings   ${resault["warnings"]}   ${expected_valid_no_security_warnings}
28     END
29
30
31 Validate secure CSAR with invalid certificate
32     [Documentation]    Valid CSAR with cms signature in manifest file and certificate in TOSCA, containing individual signatures for multiple artifacts, using common certificate and individual certificate
33
34     ${response}=   Validate CSAR usign Post request   ${csar_invalid_with_security}   ${execute_security_csar_validation}
35     # Removing strings that are causing errors during evaluation,
36     # those strings are dependent on validation response and may need to be changed if vnf refrepo response changes
37     ${response}=   Remove String    ${response}    \\\\    \\u003c    \\u003e   \\"
38     ${json_response}=    evaluate    json.loads('''${response}''')    json
39     Should Be Equal As Strings    ${json_response[0]["results"]["criteria"]}   ${OPERATION_STATUS_FAILED}
40     ${validated_rules}=  Get Length  ${json_response[0]["results"]["results"]}
41     Should Be Equal As Strings  ${validated_rules}  14
42     FOR   ${resault}  IN  @{json_response[0]["results"]["results"]}
43         ${validation_errors}=  Get Length  ${resault["errors"]}
44         run keyword if  "${resault["vnfreqName"]}" == "${CERTIFICATION_RULE}"
45         ...  Should Be Equal As Strings  ${validation_errors}  7
46         run keyword if  "${resault["vnfreqName"]}" == "${PM_DICTIONARY_YAML_RULE}"
47         ...  Should Be Equal As Strings  ${validation_errors}  1
48         run keyword if  "${resault["vnfreqName"]}" == "${MANIFEST_FILE_RULE}"
49         ...  Should Be Equal As Strings  ${validation_errors}  1
50         run keyword if  "${resault["vnfreqName"]}" == "${NON_MANO_FILES_RULE}"
51         ...  Should Be Equal As Strings  ${validation_errors}  4
52     END
53
54
55 Validate CSAR using selected rules
56     [Documentation]    Valid CSAR using only selected rules provided in request parameters
57
58     ${response}=   Validate CSAR usign Post request   ${csar_invalid_with_security}   ${execute_security_csar_validation_selected_rules}
59     # Removing strings that are causing errors during evaluation,
60     # those strings are dependent on validation response and may need to be changed if vnf refrepo response changes
61     ${response}=   Remove String    ${response}    \\\\    \\u003c    \\u003e   \\"
62     ${json_response}=    evaluate    json.loads('''${response}''')    json
63     Should Be Equal As Strings    ${json_response[0]["results"]["criteria"]}   ${OPERATION_STATUS_FAILED}
64      ${validated_rules}=  Get Length  ${json_response[0]["results"]["results"]}
65     Should Be Equal As Strings  ${validated_rules}  3
66     FOR   ${resault}  IN  @{json_response[0]["results"]["results"]}
67         ${validation_errors}=  Get Length  ${resault["errors"]}
68         run keyword if  "${resault["vnfreqName"]}" == "${CERTIFICATION_RULE}"
69         ...  Should Be Equal As Strings  ${validation_errors}  7
70         run keyword if  "${resault["vnfreqName"]}" == "${PM_DICTIONARY_YAML_RULE}"
71         ...  Should Be Equal As Strings  ${validation_errors}  1
72     END
73
74
75
76 Validate CSAR using rule r130206 and use get method to receive outcome
77     [Documentation]    Validate CSAR with invalid PM_Dictionary (r130206)  using rule r130206 , then use get method with validation id to receive valdiation outcome
78
79     ${response}=   Validate CSAR usign Post request   ${csar_invalid_pm_dictionary}   ${execute_invalid_pm_dictionary_r130206_validation}
80     # Removing strings that are causing errors during evaluation,
81     # those strings are dependent on validation response and may need to be changed if vnf refrepo response changes
82     ${response}=   Remove String    ${response}    \\\\    \\u003c    \\u003e   \\"
83     ${json_response}=    evaluate    json.loads('''${response}''')    json
84
85     ${get_response}=   Get validation result using GET request    ${json_response[0]["executionId"]}
86     # Removing strings that are causing errors during evaluation,
87     # those strings are dependent on validation response and may need to be changed if vnf refrepo response changes
88     ${get_response}=   Remove String    ${get_response}    \\\\    \\u0027
89     ${json_get_response}=    evaluate    json.loads('''${get_response}''')    json
90     Should Be Equal As Strings   ${json_get_response[0]["status"]}   failed
91     ${errors_number}=    Get Length    ${json_get_response[0]["results"]}
92     Should Be Equal As Strings  ${errors_number}  4
93     FOR   ${error}  IN  @{json_get_response[0]["results"]}
94         Should Contain   ${error["code"]}  R130206
95     END
96
97 Validate CSAR using all rule and use get method to receive outcome
98     [Documentation]    Validate CSAR with invalid PM_Dictionary (r130206) using all rules, then use get method with validation id to receive valdiation outcome
99
100     ${response}=   Validate CSAR usign Post request   ${csar_invalid_pm_dictionary}   ${execute_invalid_pm_dictionary_validation}
101     # Removing strings that are causing errors during evaluation,
102     # those strings are dependent on validation response and may need to be changed if vnf refrepo response changes
103     ${response}=   Remove String    ${response}    \\\\    \\u003c    \\u003e   \\"
104     ${json_response}=    evaluate    json.loads('''${response}''')    json
105
106     ${get_response}=   Get validation result using GET request    ${json_response[0]["executionId"]}
107     # Removing strings that are causing errors during evaluation,
108     # those strings are dependent on validation response and may need to be changed if vnf refrepo response changes
109     ${get_response}=   Remove String    ${get_response}    \\\\    \\u0027   \\u003c    \\u003e   \\"
110     ${json_get_response}=    evaluate    json.loads('''${get_response}''')    json
111     Should Be Equal As Strings    ${json_response[0]["results"]["criteria"]}   FAILED
112     FOR   ${resault}  IN  @{json_response[0]["results"]["results"]}
113         Should Be Equal As Strings   ${resault["warnings"]}   []
114         Run keyword if   "${resault["vnfreqName"]}" == "r130206"
115         ...   Should Be Equal As Strings   ${resault["passed"]}   False
116     END