Merge "Fix minor issues with CSITs"
[policy/docker.git] / csit / api / tests / api-test.robot
1 *** Settings ***
2 Library     Collections
3 Library     RequestsLibrary
4 Library     OperatingSystem
5 Library     json
6 Resource    ${CURDIR}/../../common-library.robot
7
8 *** Test Cases ***
9
10 Healthcheck
11      [Documentation]  Verify policy api health check
12      ${resp}=  GetReq  /policy/api/v1/healthcheck
13      Should Be Equal As Strings  ${resp.json()['code']}  200
14      Should Be Equal As Strings  ${resp.json()['healthy']}  True
15      Should Be Equal As Strings  ${resp.json()['message']}  alive
16
17 Statistics
18      [Documentation]  Verify policy api statistics
19      ${resp}=  GetReq  /policy/api/v1/statistics
20      Should Be Equal As Strings  ${resp.json()['code']}  200
21
22 RetrievePolicyTypes
23      [Documentation]  Retrieve all policy types
24      FetchPolicyTypes  /policy/api/v1/policytypes  37
25
26 CreateTCAPolicyTypeV1
27      [Documentation]  Create an existing policy type with modification and keeping the same version should result in error.
28      CreatePolicyType  /policy/api/v1/policytypes  406  onap.policy.monitoring.tcagen2.v1.json  null  null
29
30 CreateTCAPolicyTypeV2
31      [Documentation]  Create a policy type named 'onap.policies.monitoring.tcagen2' and version '2.0.0'
32      CreatePolicyType  /policy/api/v1/policytypes  200  onap.policy.monitoring.tcagen2.v2.json  onap.policies.monitoring.tcagen2  2.0.0
33
34 RetrieveMonitoringPolicyTypes
35      [Documentation]  Retrieve all monitoring related policy types
36      FetchPolicyTypes  /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2  2
37
38 CreateNewMonitoringPolicyV1
39      [Documentation]  Create a policy named 'onap.restart.tca' and version '1.0.0' using specific api
40      ${postjson}=  Get file  ${DATA}/vCPE.policy.monitoring.input.tosca.json
41      CreatePolicy  /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/1.0.0/policies  200  ${postjson}  onap.restart.tca  1.0.0
42
43 CreateNewMonitoringPolicyV1Again
44      [Documentation]  Create an existing policy with modification and keeping the same version should result in error.
45      ${postjson}=  Get file  ${DATA}/vCPE.policy.monitoring.input.tosca.v1_2.json
46      CreatePolicy  /policy/api/v1/policies  406  ${postjson}  null  null
47
48 CreateNewMonitoringPolicyV2
49      [Documentation]  Create a policy named 'onap.restart.tca' and version '2.0.0' using generic api
50      ${postjson}=  Get file  ${DATA}/vCPE.policy.monitoring.input.tosca.v2.json
51      CreatePolicy  /policy/api/v1/policies  200  ${postjson}  onap.restart.tca  2.0.0
52
53
54 CreateNodeTemplates
55    [Documentation]  Create node templates in database using specific api
56    ${postjson}=  Get file  ${NODETEMPLATES}/nodetemplates.metadatasets.input.tosca.json
57    CreateNodeTemplate  /policy/api/v1/nodetemplates  200  ${postjson}  3
58
59 RetrievePoliciesOfType
60      [Documentation]  Retrieve all policies belonging to a specific Policy Type
61      FetchPolicies  /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/1.0.0/policies  2
62
63 RetrieveAllPolicies
64      [Documentation]  Retrieve all policies
65      FetchPolicies  /policy/api/v1/policies  3
66
67 RetrieveSpecificPolicy
68      [Documentation]    Retrieve a policy named 'onap.restart.tca' and version '1.0.0' using generic api
69      FetchPolicy  /policy/api/v1/policies/onap.restart.tca/versions/1.0.0  onap.restart.tca
70
71 RetrieveAllNodeTemplates
72      [Documentation]  Retrieve all node templates
73      FetchNodeTemplates  /policy/api/v1/nodetemplates  3
74
75 RetrieveSpecificNodeTemplate
76      [Documentation]    Retrieve a node template named 'apexMetadata_grpc' and version '1.2.1' using generic api
77      FetchNodeTemplate  /policy/api/v1/nodetemplates/apexMetadata_grpc/versions/1.2.1  apexMetadata_grpc
78
79 DeleteSpecificNodeTemplate
80      [Documentation]  Delete a node template named 'apexMetadata_adaptive' and version '2.3.1' using generic api
81      DeleteReq  /policy/api/v1/nodetemplates/apexMetadata_adaptive/versions/2.3.1  200
82      DeleteReq  /policy/api/v1/nodetemplates/apexMetadata_adaptive/versions/2.3.1  404
83
84
85 DeleteSpecificPolicy
86      [Documentation]  Delete a policy named 'onap.restart.tca' and version '1.0.0' using generic api
87      DeleteReq  /policy/api/v1/policies/onap.restart.tca/versions/1.0.0  200
88      DeleteReq  /policy/api/v1/policies/onap.restart.tca/versions/1.0.0  404
89
90 DeleteSpecificPolicyV2
91      [Documentation]  Delete a policy named 'onap.restart.tca' and version '2.0.0' using specific api
92      DeleteReq  /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/1.0.0/policies/onap.restart.tca/versions/2.0.0  200
93      DeleteReq  /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/1.0.0/policies/onap.restart.tca/versions/2.0.0  404
94
95 DeleteSpecificPolicyTypeV1
96      [Documentation]  Delete a policy type named 'onap.policies.monitoring.tcagen2' and version '1.0.0'
97      DeleteReq  /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/1.0.0  200
98      DeleteReq  /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/1.0.0  404
99
100 DeleteSpecificPolicyTypeV2
101      [Documentation]  Delete a policy type named 'onap.policies.monitoring.tcagen2' and version '2.0.0'
102      DeleteReq  /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/2.0.0  200
103      DeleteReq  /policy/api/v1/policytypes/onap.policies.monitoring.tcagen2/versions/2.0.0  404
104
105 Metrics
106     [Documentation]  Verify policy-api is exporting prometheus metrics
107     ${auth}=  PolicyAdminAuth
108     ${resp}=  GetMetrics  ${POLICY_API_IP}  ${auth}
109     Should Contain  ${resp.text}  http_server_requests_seconds_count{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/policy/api/v1/healthcheck",} 1.0
110     Should Contain  ${resp.text}  http_server_requests_seconds_count{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/policy/api/v1/statistics",} 1.0
111     Should Contain  ${resp.text}  http_server_requests_seconds_count{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/policy/api/v1/policytypes",} 1.0
112     Should Contain  ${resp.text}  http_server_requests_seconds_count{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/policy/api/v1/policies",} 1.0
113     Should Contain  ${resp.text}  http_server_requests_seconds_count{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/policy/api/v1/policies/{policyId}/versions/{policyVersion}",} 1.0
114     Should Contain  ${resp.text}  http_server_requests_seconds_count{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/policy/api/v1/policytypes/{policyTypeId}/versions/{policyTypeVersion}/policies",} 1.0
115     Should Contain  ${resp.text}  http_server_requests_seconds_count{exception="None",method="POST",outcome="SUCCESS",status="200",uri="/policy/api/v1/policytypes/{policyTypeId}/versions/{policyTypeVersion}/policies",} 1.0
116     Should Contain  ${resp.text}  http_server_requests_seconds_count{exception="None",method="POST",outcome="SUCCESS",status="200",uri="/policy/api/v1/policytypes",} 1.0
117     Should Contain  ${resp.text}  http_server_requests_seconds_count{exception="None",method="DELETE",outcome="SUCCESS",status="200",uri="/policy/api/v1/policies/{policyId}/versions/{policyVersion}",} 1.0
118     Should Contain  ${resp.text}  http_server_requests_seconds_count{exception="None",method="DELETE",outcome="SUCCESS",status="200",uri="/policy/api/v1/policytypes/{policyTypeId}/versions/{versionId}",} 2.0
119     Should Contain  ${resp.text}  http_server_requests_seconds_count{exception="None",method="DELETE",outcome="SUCCESS",status="200",uri="/policy/api/v1/policytypes/{policyTypeId}/versions/{policyTypeVersion}/policies/{policyId}/versions/{policyVersion}",} 1.0
120     Should Contain  ${resp.text}  http_server_requests_seconds_sum
121     Should Contain  ${resp.text}  http_server_requests_seconds_max
122     Should Contain  ${resp.text}  spring_data_repository_invocations_seconds_count
123     Should Contain  ${resp.text}  spring_data_repository_invocations_seconds_sum
124     Should Contain  ${resp.text}  spring_data_repository_invocations_seconds_max
125     Should Contain  ${resp.text}  jvm_threads_live_threads
126
127 *** Keywords ***
128
129 GetReq
130      [Arguments]  ${url}
131      ${auth}=  PolicyAdminAuth
132      ${resp}=  PerformGetRequest  ${POLICY_API_IP}  ${url}  200  null  ${auth}
133      [return]  ${resp}
134
135 DeleteReq
136      [Arguments]  ${url}  ${expectedstatus}
137      ${auth}=  PolicyAdminAuth
138      ${resp}=  PerformDeleteRequest  ${POLICY_API_IP}  ${url}  ${expectedstatus}  ${auth}
139      [return]  ${resp}
140
141 CreatePolicyType
142      [Arguments]  ${url}  ${expectedstatus}  ${jsonfile}  ${policytypename}  ${policytypeversion}
143      [Documentation]  Create the specific policy type
144      ${postjson}=  Get file  ${CURDIR}/data/${jsonfile}
145      ${auth}=  PolicyAdminAuth
146      ${resp}=  PerformPostRequest  ${POLICY_API_IP}  ${url}  ${expectedstatus}  ${postjson}  null  ${auth}
147      Run Keyword If  ${expectedstatus}==200  List Should Contain Value  ${resp.json()['policy_types']}  ${policytypename}
148      Run Keyword If  ${expectedstatus}==200  Should Be Equal As Strings  ${resp.json()['policy_types']['${policytypename}']['version']}  ${policytypeversion}
149
150 FetchPolicyTypes
151      [Arguments]  ${url}  ${expectedLength}
152      [Documentation]  Fetch all policy types
153      ${resp}=  GetReq  ${url}
154      Length Should Be  ${resp.json()['policy_types']}  ${expectedLength}
155
156 FetchPolicy
157      [Arguments]  ${url}  ${keyword}
158      [Documentation]  Fetch the specific policy
159      ${resp}=  GetReq  ${url}
160      Dictionary Should Contain Key  ${resp.json()['topology_template']['policies'][0]}  ${keyword}
161
162 FetchPolicies
163      [Arguments]  ${url}  ${expectedLength}
164      [Documentation]  Fetch all policies
165      ${resp}=  GetReq  ${url}
166      Length Should Be  ${resp.json()['topology_template']['policies']}  ${expectedLength}
167
168
169 FetchNodeTemplates
170      [Arguments]  ${url}  ${expectedLength}
171      [Documentation]  Fetch all node templates
172      ${resp}=  GetReq  ${url}
173      Length Should Be  ${resp.json()}  ${expectedLength}
174
175 FetchNodeTemplate
176      [Arguments]  ${url}  ${keyword}
177      [Documentation]  Fetch the specific node template
178      ${resp}=  GetReq  ${url}
179      Dictionary Should Contain Value  ${resp.json()[0]}  ${keyword}