Add O2 IMS compliance automation test scripts.
[it/test.git] / test_scripts / O2IMS_Compliance_Test / o2ims_compliance / 7.3.3_SMO_succeeds_to_subscribe_for_O2ims_inventory_changes_notification_and_succeeds_to_receive_notifications.robot
1 *** Settings ***
2 Documentation  Verify SMO succeeds to subscribe for O2ims inventory changes notification and succeeds to receive notifications
3 # Library  REST       ssl_verify=False    loglevel=DEBUG
4 Library  REST       ssl_verify=False
5 Resource             smo_server_mock.robot
6 Variables              ${EXECDIR}${/}test_configs.yaml
7
8 Suite Setup            Set REST Headers And Clear Subscriptions
9 Suite Teardown         Clear Subscriptions
10
11 *** Variables ***
12 ${ORAN_HOST_EXTERNAL_IP}    ${ocloud.oran_o2_app.api.host}
13 ${ORAN_SERVICE_NODE_PORT}   ${ocloud.oran_o2_app.api.node_port}
14 ${GLOBAL_OCLOUD_ID1}        ${ocloud.oran_o2_app.g_ocloud_id}
15 ${SMO_TOKEN_DATA}           ${ocloud.oran_o2_app.smo_token_data}
16 ${globalLocationId}         ${ocloud.oran_o2_app.g_location_id}
17
18 ${ORAN_O2IMS_ENDPOINT}  ${ocloud.oran_o2_app.api.protocol}://${ORAN_HOST_EXTERNAL_IP}:${ORAN_SERVICE_NODE_PORT}
19
20 ${SMO_INV_OBSERVER_URL}     ${smo.service.protocol}://${smo.service.host}:${smo.service.port}${smo.o2ims_inventory_observer.path}
21 ${consumerSubscriptionId}   3F20D850-AF4F-A84F-FB5A-0AD585410361
22
23 # ${subscription_data}  {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(neq,resourcePools.globalLocationId,${globalLocationId})" }
24
25 # ${subscription_data}  {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "" }
26
27 *** Test Cases ***
28 s1, create a subscription
29     [documentation]  This test case verifies ocloud inventory subscription management
30     [tags]  ORAN_Compliance     ORAN_O2     ORAN_O2IMS    ORAN_O2IMS_Inventory_Subscription
31
32     ${invalid_subscription_data}  input     {"consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "" }
33
34 # Check error input logic
35     Expect Response Body        ${CURDIR}/schemas/client_errors_properties.json
36     ${res}     POST   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/subscriptions     ${invalid_subscription_data}
37     Clear Expectations
38     log      ${res}   level=DEBUG
39     Integer  response status    400
40     Object   response body
41
42     Clear Expectations
43     # Expect Request        ${CURDIR}/schemas/subscription_post_resp_properties.json
44     # Expect Response Body        ${CURDIR}/schemas/subscription_post_resp_properties.json
45     Expect Response Body        ${CURDIR}/schemas/subscription_properties.json
46     Set Headers     {"Content-Type": "application/json"}
47     ${subscription_data}  input     {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "" }
48
49     # ${subscription_data}  input     {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(eq,objectType,ResourceTypeInfo)" }
50     # ${subscription_data}  input     {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(eq,objectType,ResourceTypeInfo);(eq,resourceTypeId,id1234)" }
51     # ${subscription_data}  input     {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(eq,objectType,ResourceTypeInfo);(neq,resourceTypeId,id1234)" }
52
53     # ${subscription_data}  input     {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(neq,objectType,ResourceTypeInfo);(neq,resourceTypeId,id1234)" }
54
55     # ${subscription_data}  input     {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(neq,vendor,id1234)" }
56
57     # ${subscription_data}  input     {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(eq,resourceId,resourceid1234)|(eq,objectType,ResourceTypeInfo);(neq,resourceTypeId, typeid1234)" }
58
59     # ${subscription_data}  input     {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(eq,objectType,ResourceInfo);(neq,resourceId,resourceid1234)|(eq,objectType,ResourceTypeInfo);(neq,resourceTypeId, typeid1234)" }
60
61     # ${subscription_data}  input     {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(eq,objectType,ResourceInfo);(eq,resourceId,bc175af1-b6ff-4002-80db-4ee3c2d4fce6) | (eq,objectType,ResourceInfo);(eq,resourceId,resourceid5678)" }
62
63     # ${subscription_data}  input     {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(eq,objectType,ResourceInfo);(neq,resourceId,bc175af1-b6ff-4002-80db-4ee3c2d4fce6) | (eq,objectType,ResourceInfo);(eq,resourceId,resourceid5678)" }
64
65     # ${subscription_data}  input     {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "[(eq,objectType,ResourceInfo);(neq,resourceId,bc175af1-b6ff-4002-80db-4ee3c2d4fce6) | (eq,objectType,ResourceInfo);(eq,resourceId,resourceid5678)]" }
66
67     # ${subscription_data}  input     {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "[(eq,objectType,ResourceInfo);(eq,resourceId,resourceid1234)]" }
68
69     # ${subscription_data}  input     {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "[()|()]" }
70
71     # ${subscription_data}  input     {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "[]" }
72
73     # ${subscription_data}  input     {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "()" }
74
75     # ${subscription_data}  input     {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "();" }
76
77     # ${subscription_data}  input     {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": ";()" }
78
79     # ${subscription_data}  input     {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": ";();" }
80
81     # ${subscription_data}  input     {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(eq,objectType,ResourceInfo);(eq,resourceId,resourceid1234);" }
82
83     ${res}     POST   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/subscriptions     ${subscription_data}
84     # Output Schema     request body   ${CURDIR}/schemas/.output/subscription_post_req_properties.json
85     # Output Schema   response body   ${CURDIR}/schemas/.output/subscription_post_resp_properties.json
86     Clear Expectations
87     log      ${res}   level=DEBUG
88     Integer  response status    201
89     Object   response body
90
91 #  s2, query subscription list without filter
92 #      [documentation]  This test case verifies Query OCloud resourceTypes without filter
93 #      [tags]  ORAN_Compliance     ORAN_O2     ORAN_O2IMS    ORAN_O2IMS_Inventory_Subscription
94
95     # Clear Expectations
96     Expect Response Body        ${CURDIR}/schemas/subscriptions_properties.json
97     ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/subscriptions
98     # Output Schema   response body   ${CURDIR}/schemas/.output/subscriptions_properties.json
99     Clear Expectations
100     log      ${res}   level=INFO
101     Integer     response status    200
102     Array       response body
103     Array       $   minItems=1  uniqueItems=true
104
105     Expect Response Body        ${CURDIR}/schemas/subscriptions_properties.json
106     ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/subscriptions?all_fields
107     Clear Expectations
108     log      ${res}   level=INFO
109     Integer     response status    200
110     Array       response body
111     Array       $   minItems=1  uniqueItems=true
112
113 # s3, query subscription list with filter
114 #      [documentation]  This test case verifies Query OCloud resourceTypes with filter
115 #      [tags]  ORAN_Compliance     ORAN_O2     ORAN_O2IMS    ORAN_O2IMS_Inventory_Subscription
116
117     # Clear Expectations
118     Expect Response Body        ${CURDIR}/schemas/subscriptions_properties.json
119     ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/subscriptions?filter=(eq,consumerSubscriptionId,${consumerSubscriptionId})
120     Clear Expectations
121     log      ${res}   level=INFO
122     Integer     response status    200
123     Array       response body
124     Array       $   minItems=1
125
126 #  s4, query a subscription detail
127 #      [documentation]  This test case verifies Query OCloud resourceTypes detail
128 #      [tags]  ORAN_Compliance     ORAN_O2     ORAN_O2IMS    ORAN_O2IMS_Inventory_Subscription
129
130      Clear Expectations
131      ${res}  GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/subscriptions
132      log   ${res}   level=INFO
133     ${subscriptionId}      output   $[0].subscriptionId
134     Set Global Variable   ${subscriptionId}
135      Clear Expectations
136     #Expect Response Body        ${CURDIR}/schemas/subscriptions_properties.json
137     ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/subscriptions/${subscriptionId}
138     # Output Schema   response body   ${CURDIR}/schemas/.output/resourceType_properties.json
139     Clear Expectations
140     log      ${res}   level=INFO
141     Integer     response status    200
142     Object       response body
143
144
145 # Check duplication logic
146     Expect Response Body        ${CURDIR}/schemas/client_errors_properties.json
147     ${res}     POST   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/subscriptions     ${subscription_data}
148     Clear Expectations
149     log      ${res}   level=DEBUG
150     Integer  response status    400
151     Object   response body
152
153 # s5, smo receives notification upon o2ims inventory changes
154 #      [documentation]  This test case verifies Query OCloud resourcePools without filter
155 #      [tags]  ORAN_Compliance     ORAN_O2     ORAN_O2IMS    ORAN_O2IMS_Inventory_Subscription
156
157     # Clear Expectations
158     # Expect Response Body        ${CURDIR}/schemas/subscriptions_properties.json
159     ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/subscriptions
160     #Output Schema   response body   ${CURDIR}/schemas/.output/resourcePools_properties.json
161     Clear Expectations
162      log      ${res}   level=INFO
163      Integer     response status    200
164      Array       response body
165      Array       $   minItems=1  uniqueItems=true
166     ${verify_data}   Output  {"httpRequest": {"path": "${smo.o2ims_inventory_observer.path}"},"times": {"atLeast": 1}}
167     SMO called by IMS verification   ${verify_data}
168
169
170 #  s6, delete a subscription
171 #      [documentation]  This test case verifies Query OCloud resourcePools with filter
172 #      [tags]  ORAN_Compliance     ORAN_O2     ORAN_O2IMS    ORAN_O2IMS_Inventory_Subscription
173
174     # Clear Expectations
175     # Expect Response Body        ${CURDIR}/schemas/subscriptions_properties.json
176     ${res}     DELETE   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/subscriptions/${subscriptionId}
177     # Output Schema   response body   ${CURDIR}/schemas/.output/resourcePools_properties.json
178     Clear Expectations
179     log      ${res}   level=INFO
180     Integer     response status    200
181     # Array       response body
182     # Array       $   minItems=1  maxItems=1
183
184 # s7, smo stop receiving notification upon o2ims inventory changes
185 #     [documentation]  This test case verifies Query OCloud resourcePools detail
186 #     [tags]  ORAN_Compliance     ORAN_O2     ORAN_O2IMS    ORAN_O2IMS_Inventory_Subscription
187
188     # # Clear Expectations
189     # Expect Response Body        ${CURDIR}/schemas/subscriptions_properties.json
190     # ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/subscriptions/${subscriptionId}
191     # # Output Schema   response body   ${CURDIR}/schemas/.output/resourcePool_properties.json
192     # Clear Expectations
193     # log      ${res}   level=INFO
194     # Integer     response status    200
195     # Object       response body
196
197 *** Keywords ***
198 Set REST Headers
199     Set Headers     {"accept": "application/json"}
200     Set Headers     {"Authorization": "Bearer ${SMO_TOKEN_DATA}"}
201
202 Clear Subscriptions
203     Clear Expectations
204     ${res}     GET   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/subscriptions
205     log     ${res}   level=DEBUG
206     @{subs}        output  $
207     FOR     ${sub}      IN      @{subs}
208         ${subscriptionId}=  input   ${sub}[subscriptionId]
209         ${res2}     DELETE   ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/subscriptions/${subscriptionId}
210         log     ${res2}   level=DEBUG
211     END
212
213 Set REST Headers And Clear Subscriptions
214     Set REST Headers
215     Clear Subscriptions