X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=test_scripts%2FO2IMS_Compliance_Test%2Fo2ims_compliance%2F7.3.3_SMO_succeeds_to_subscribe_for_O2ims_inventory_changes_notification_and_succeeds_to_receive_notifications.robot;fp=test_scripts%2FO2IMS_Compliance_Test%2Fo2ims_compliance%2F7.3.3_SMO_succeeds_to_subscribe_for_O2ims_inventory_changes_notification_and_succeeds_to_receive_notifications.robot;h=17f665af087236067a487bee658f08cf63e417b5;hb=409d070b3bdde3e4676c507a959d245ff246fa9f;hp=0000000000000000000000000000000000000000;hpb=ca6b81bb15b879eff50598350b018946f2e3dced;p=it%2Ftest.git diff --git a/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 b/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 new file mode 100644 index 0000000..17f665a --- /dev/null +++ b/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 @@ -0,0 +1,215 @@ +*** Settings *** +Documentation Verify SMO succeeds to subscribe for O2ims inventory changes notification and succeeds to receive notifications +# Library REST ssl_verify=False loglevel=DEBUG +Library REST ssl_verify=False +Resource smo_server_mock.robot +Variables ${EXECDIR}${/}test_configs.yaml + +Suite Setup Set REST Headers And Clear Subscriptions +Suite Teardown Clear Subscriptions + +*** Variables *** +${ORAN_HOST_EXTERNAL_IP} ${ocloud.oran_o2_app.api.host} +${ORAN_SERVICE_NODE_PORT} ${ocloud.oran_o2_app.api.node_port} +${GLOBAL_OCLOUD_ID1} ${ocloud.oran_o2_app.g_ocloud_id} +${SMO_TOKEN_DATA} ${ocloud.oran_o2_app.smo_token_data} +${globalLocationId} ${ocloud.oran_o2_app.g_location_id} + +${ORAN_O2IMS_ENDPOINT} ${ocloud.oran_o2_app.api.protocol}://${ORAN_HOST_EXTERNAL_IP}:${ORAN_SERVICE_NODE_PORT} + +${SMO_INV_OBSERVER_URL} ${smo.service.protocol}://${smo.service.host}:${smo.service.port}${smo.o2ims_inventory_observer.path} +${consumerSubscriptionId} 3F20D850-AF4F-A84F-FB5A-0AD585410361 + +# ${subscription_data} {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(neq,resourcePools.globalLocationId,${globalLocationId})" } + +# ${subscription_data} {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "" } + +*** Test Cases *** +s1, create a subscription + [documentation] This test case verifies ocloud inventory subscription management + [tags] ORAN_Compliance ORAN_O2 ORAN_O2IMS ORAN_O2IMS_Inventory_Subscription + + ${invalid_subscription_data} input {"consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "" } + +# Check error input logic + Expect Response Body ${CURDIR}/schemas/client_errors_properties.json + ${res} POST ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/subscriptions ${invalid_subscription_data} + Clear Expectations + log ${res} level=DEBUG + Integer response status 400 + Object response body + + Clear Expectations + # Expect Request ${CURDIR}/schemas/subscription_post_resp_properties.json + # Expect Response Body ${CURDIR}/schemas/subscription_post_resp_properties.json + Expect Response Body ${CURDIR}/schemas/subscription_properties.json + Set Headers {"Content-Type": "application/json"} + ${subscription_data} input {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "" } + + # ${subscription_data} input {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(eq,objectType,ResourceTypeInfo)" } + # ${subscription_data} input {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(eq,objectType,ResourceTypeInfo);(eq,resourceTypeId,id1234)" } + # ${subscription_data} input {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(eq,objectType,ResourceTypeInfo);(neq,resourceTypeId,id1234)" } + + # ${subscription_data} input {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(neq,objectType,ResourceTypeInfo);(neq,resourceTypeId,id1234)" } + + # ${subscription_data} input {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(neq,vendor,id1234)" } + + # ${subscription_data} input {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(eq,resourceId,resourceid1234)|(eq,objectType,ResourceTypeInfo);(neq,resourceTypeId, typeid1234)" } + + # ${subscription_data} input {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(eq,objectType,ResourceInfo);(neq,resourceId,resourceid1234)|(eq,objectType,ResourceTypeInfo);(neq,resourceTypeId, typeid1234)" } + + # ${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)" } + + # ${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)" } + + # ${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)]" } + + # ${subscription_data} input {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "[(eq,objectType,ResourceInfo);(eq,resourceId,resourceid1234)]" } + + # ${subscription_data} input {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "[()|()]" } + + # ${subscription_data} input {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "[]" } + + # ${subscription_data} input {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "()" } + + # ${subscription_data} input {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "();" } + + # ${subscription_data} input {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": ";()" } + + # ${subscription_data} input {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": ";();" } + + # ${subscription_data} input {"callback": "${SMO_INV_OBSERVER_URL}", "consumerSubscriptionId": "${consumerSubscriptionId}", "filter": "(eq,objectType,ResourceInfo);(eq,resourceId,resourceid1234);" } + + ${res} POST ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/subscriptions ${subscription_data} + # Output Schema request body ${CURDIR}/schemas/.output/subscription_post_req_properties.json + # Output Schema response body ${CURDIR}/schemas/.output/subscription_post_resp_properties.json + Clear Expectations + log ${res} level=DEBUG + Integer response status 201 + Object response body + +# s2, query subscription list without filter +# [documentation] This test case verifies Query OCloud resourceTypes without filter +# [tags] ORAN_Compliance ORAN_O2 ORAN_O2IMS ORAN_O2IMS_Inventory_Subscription + + # Clear Expectations + Expect Response Body ${CURDIR}/schemas/subscriptions_properties.json + ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/subscriptions + # Output Schema response body ${CURDIR}/schemas/.output/subscriptions_properties.json + Clear Expectations + log ${res} level=INFO + Integer response status 200 + Array response body + Array $ minItems=1 uniqueItems=true + + Expect Response Body ${CURDIR}/schemas/subscriptions_properties.json + ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/subscriptions?all_fields + Clear Expectations + log ${res} level=INFO + Integer response status 200 + Array response body + Array $ minItems=1 uniqueItems=true + +# s3, query subscription list with filter +# [documentation] This test case verifies Query OCloud resourceTypes with filter +# [tags] ORAN_Compliance ORAN_O2 ORAN_O2IMS ORAN_O2IMS_Inventory_Subscription + + # Clear Expectations + Expect Response Body ${CURDIR}/schemas/subscriptions_properties.json + ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/subscriptions?filter=(eq,consumerSubscriptionId,${consumerSubscriptionId}) + Clear Expectations + log ${res} level=INFO + Integer response status 200 + Array response body + Array $ minItems=1 + +# s4, query a subscription detail +# [documentation] This test case verifies Query OCloud resourceTypes detail +# [tags] ORAN_Compliance ORAN_O2 ORAN_O2IMS ORAN_O2IMS_Inventory_Subscription + + Clear Expectations + ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/subscriptions + log ${res} level=INFO + ${subscriptionId} output $[0].subscriptionId + Set Global Variable ${subscriptionId} + Clear Expectations + #Expect Response Body ${CURDIR}/schemas/subscriptions_properties.json + ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/subscriptions/${subscriptionId} + # Output Schema response body ${CURDIR}/schemas/.output/resourceType_properties.json + Clear Expectations + log ${res} level=INFO + Integer response status 200 + Object response body + + +# Check duplication logic + Expect Response Body ${CURDIR}/schemas/client_errors_properties.json + ${res} POST ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/subscriptions ${subscription_data} + Clear Expectations + log ${res} level=DEBUG + Integer response status 400 + Object response body + +# s5, smo receives notification upon o2ims inventory changes +# [documentation] This test case verifies Query OCloud resourcePools without filter +# [tags] ORAN_Compliance ORAN_O2 ORAN_O2IMS ORAN_O2IMS_Inventory_Subscription + + # Clear Expectations + # Expect Response Body ${CURDIR}/schemas/subscriptions_properties.json + ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/subscriptions + #Output Schema response body ${CURDIR}/schemas/.output/resourcePools_properties.json + Clear Expectations + log ${res} level=INFO + Integer response status 200 + Array response body + Array $ minItems=1 uniqueItems=true + ${verify_data} Output {"httpRequest": {"path": "${smo.o2ims_inventory_observer.path}"},"times": {"atLeast": 1}} + SMO called by IMS verification ${verify_data} + + +# s6, delete a subscription +# [documentation] This test case verifies Query OCloud resourcePools with filter +# [tags] ORAN_Compliance ORAN_O2 ORAN_O2IMS ORAN_O2IMS_Inventory_Subscription + + # Clear Expectations + # Expect Response Body ${CURDIR}/schemas/subscriptions_properties.json + ${res} DELETE ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/subscriptions/${subscriptionId} + # Output Schema response body ${CURDIR}/schemas/.output/resourcePools_properties.json + Clear Expectations + log ${res} level=INFO + Integer response status 200 + # Array response body + # Array $ minItems=1 maxItems=1 + +# s7, smo stop receiving notification upon o2ims inventory changes +# [documentation] This test case verifies Query OCloud resourcePools detail +# [tags] ORAN_Compliance ORAN_O2 ORAN_O2IMS ORAN_O2IMS_Inventory_Subscription + + # # Clear Expectations + # Expect Response Body ${CURDIR}/schemas/subscriptions_properties.json + # ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/subscriptions/${subscriptionId} + # # Output Schema response body ${CURDIR}/schemas/.output/resourcePool_properties.json + # Clear Expectations + # log ${res} level=INFO + # Integer response status 200 + # Object response body + +*** Keywords *** +Set REST Headers + Set Headers {"accept": "application/json"} + Set Headers {"Authorization": "Bearer ${SMO_TOKEN_DATA}"} + +Clear Subscriptions + Clear Expectations + ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/subscriptions + log ${res} level=DEBUG + @{subs} output $ + FOR ${sub} IN @{subs} + ${subscriptionId}= input ${sub}[subscriptionId] + ${res2} DELETE ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/subscriptions/${subscriptionId} + log ${res2} level=DEBUG + END + +Set REST Headers And Clear Subscriptions + Set REST Headers + Clear Subscriptions