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