From 13859534cb3c512eb78c93068d29e14add1a996b Mon Sep 17 00:00:00 2001 From: mdomale <125565716+mdomale@users.noreply.github.com> Date: Thu, 29 Aug 2024 21:24:04 +0530 Subject: [PATCH] Update device-reachability-status-subscriptions.feature --- ...-reachability-status-subscriptions.feature | 69 +++++++++++-------- 1 file changed, 39 insertions(+), 30 deletions(-) diff --git a/code/Test_definitions/device-reachability-status-subscriptions.feature b/code/Test_definitions/device-reachability-status-subscriptions.feature index 10a90ef..d295f41 100644 --- a/code/Test_definitions/device-reachability-status-subscriptions.feature +++ b/code/Test_definitions/device-reachability-status-subscriptions.feature @@ -1,11 +1,11 @@ @DeviceReachabilityStatusSubscription -Feature: Device Reachability Status Subscriptions API, v0.6.0 - Operations ReachabilityStatus +Feature: Device Reachability Status Subscriptions API, v0.6.0 - Operations Reachability Status Subscription # Input to be provided by the implementation to the tests # References to OAS spec schemas refer to schemas specified in device-reachability-status-subscriptions.yaml, version v0.6.0 - Background: Common Device Reachability Status setup + Background: Common Device Reachability Status Subscriptions setup Given the resource "{apiroot}/device-reachability-status-subscriptions/v0.6" as base-url And the header "Authorization" is set to a valid access token And the header "x-correlator" is set to a UUID value @@ -32,36 +32,43 @@ Feature: Device Reachability Status Subscriptions API, v0.6.0 - Operations Reach And the response header "x-correlator" has same value as the request header "x-correlator" And the response body complies with the OAS schema at "/components/schemas/SubscriptionAsync" -@reachability_status_subscriptions_03_Operation_to_retrieve_list_of_subscriptions - Scenario: Get a list of subscriptions. - Given the request body is not available +@reachability_status_subscriptions_03_Operation_to_retrieve_list_of_subscriptions_when_no_records + Scenario: Get a list of subscriptions when no subscriptions available + Given a client without subscriptions created When the request "retrieveSubscriptionList" is sent Then the response code is 200 And the response header "Content-Type" is "application/json" And the response header "x-correlator" has same value as the request header "x-correlator" - And each item in the response body, if any, complies with the OAS schema at "/components/schemas/Subscription" + And the response body is an empty array - @reachability_status_subscriptions_04_Operation_to_retrieve_subscription_based_on_an_existing_subscription-id +@reachability_status_subscriptions_04_Operation_to_retrieve_list_of_subscriptions + Scenario: Get a list of subscriptions + Given a client with subscriptions created + When the request "retrieveSubscriptionList" is sent + Then the response code is 200 + And the response header "Content-Type" is "application/json" + And the response header "x-correlator" has same value as the request header "x-correlator" + And the response body has an array of items and each item complies with the OAS schema at "/components/schemas/Subscription" + + @reachability_status_subscriptions_05_Operation_to_retrieve_subscription_based_on_an_existing_subscription-id Scenario: Get a subscription based on existing subscription-id. - Given the request body is not available - And path parameter "subscriptionId" is set to the identifier of an existing subscription + Given the path parameter "subscriptionId" is set to the identifier of an existing subscription When the request "retrieveReachabilityStatusSubscription" is sent Then the response code is 200 And the response header "Content-Type" is "application/json" And the response header "x-correlator" has same value as the request header "x-correlator" And the response body complies with the OAS schema at "/components/schemas/Subscription" - @reachability_status_subscriptions_05_Operation_to_delete_subscription_based_on_an_existing_subscription-id + @reachability_status_subscriptions_06_Operation_to_delete_subscription_based_on_an_existing_subscription-id Scenario: Delete a subscription based on existing subscription-id. - Given the request body is not available - And path parameter "subscriptionId" is set to the identifier of an existing subscription + Given the path parameter "subscriptionId" is set to the identifier of an existing subscription When the request "deleteReachabilityStatusSubscription" is sent Then the response code is 202 or 204 And the response header "x-correlator" has same value as the request header "x-correlator" And if the response property $.status is 204 then response body is not available And if the response property $.status is 202 then response body complies with the OAS schema at "/components/schemas/SubscriptionAsync" -@reachability_status_subscriptions_06_Receive_notification_when_device_reachability_changed_to_data_usage +@reachability_status_subscriptions_07_Receive_notification_when_device_reachability_changed_to_data_usage Scenario: Receive notification for reachability-data event Given that subscriptions are created synchronously And a valid subscription request body @@ -74,7 +81,7 @@ Feature: Device Reachability Status Subscriptions API, v0.6.0 - Operations Reach And notification body complies with the OAS schema at "##/components/schemas/EventReachabilityData" And type="org.camaraproject.device-reachability-status-subscriptions.v0.reachability-data" -@reachability_status_subscriptions_07_Receive_notification_when_device_reachability_changed_to_sms_usage +@reachability_status_subscriptions_08_Receive_notification_when_device_reachability_changed_to_sms_usage Scenario: Receive notification for reachability-sms event Given that subscriptions are created synchronously And a valid subscription request body @@ -87,7 +94,7 @@ Feature: Device Reachability Status Subscriptions API, v0.6.0 - Operations Reach And notification body complies with the OAS schema at "##/components/schemas/EventReachabilitySms" And type="org.camaraproject.device-reachability-status-subscriptions.v0.reachability-sms" -@reachability_status_subscriptions_08_Receive_notification_when_device_reachability_changed_to_disconnected +@reachability_status_subscriptions_09_Receive_notification_when_device_reachability_changed_to_disconnected Scenario: Receive notification for reachability-disconnected event Given that subscriptions are created synchronously And a valid subscription request body @@ -100,11 +107,10 @@ Feature: Device Reachability Status Subscriptions API, v0.6.0 - Operations Reach And notification body complies with the OAS schema at "##/components/schemas/EventReachabilityDisconnected" And type="org.camaraproject.device-reachability-status-subscriptions.v0.reachability-disconnected" -@reachability_status_subscriptions_09_subscription_Expiry +@reachability_status_subscriptions_10_subscription_expiry Scenario: Receive notification for subscription-ends event on expiry Given that subscriptions are created synchronously - And a valid subscription request body - And the request body property "$.type" is "reachability-data" + And a valid subscription request body And the request body property "$.subscriptionExpireTime" is set to a value in the near future When the request "createSubscription" is sent Then the response code is 201 @@ -114,7 +120,7 @@ Scenario: Receive notification for subscription-ends event on expiry And type="org.camaraproject.geofencing-subscriptions.v0.subscription-ends" And the response property "$.terminationReason" is "SUBSCRIPTION_EXPIRED" -@reachability_status_subscriptions_10_subscription_end_when_max_events +@reachability_status_subscriptions_11_subscription_end_when_max_events Scenario: Receive notification for subscription-ends event on max events reached Given that subscriptions are created synchronously And a valid subscription request body @@ -128,7 +134,7 @@ Scenario: Receive notification for subscription-ends event on expiry And type="org.camaraproject.geofencing-subscriptions.v0.subscription-ends" And the response property "$.terminationReason" is "MAX_EVENTS_REACHED" - @reachability_status_subscriptions_11_subscription_delete_event_validation + @reachability_status_subscriptions_12_subscription_delete_event_validation Scenario: Receive notification for subscription-ends event on deletion Given that subscriptions are created synchronously And a valid subscription request body @@ -144,7 +150,7 @@ Scenario: Receive notification for subscription-ends event on expiry ############### Error response scenarios ########################### - @reachability_status_subscriptions_12_Create_reachability_status_subscription_for_a_device_with_invalid_parameter + @reachability_status_subscriptions_13_Create_reachability_status_subscription_with_invalid_parameter Scenario: Create subscription with invalid parameter Given the request body is not compliant with the schema "/components/schemas/SubscriptionRequest" When the request "createSubscription" is sent @@ -153,7 +159,7 @@ Scenario: Receive notification for subscription-ends event on expiry And the response property "$.code" is "INVALID_ARGUMENT" And the response property "$.message" contains a user friendly text -@reachability_status_subscriptions_13_creation_of_subscription_with_expiry_time_in_past +@reachability_status_subscriptions_14_creation_of_subscription_with_expiry_time_in_past Scenario: Expiry time in past Given a valid subscription request body with expiry time in past When the request "createSubscription" is sent @@ -162,7 +168,7 @@ Scenario: Receive notification for subscription-ends event on expiry And the response property "$.code" is "INVALID_ARGUMENT" And the response property "$.message" contains a user friendly text - @reachability_status_subscription_14_invalid_protocol + @reachability_status_subscription_15_invalid_protocol Scenario: subscription creation with invalid protocol Given a valid subscription request body And the request property "$.protocol" is not set to "HTTP" @@ -171,7 +177,7 @@ Scenario: Receive notification for subscription-ends event on expiry And the response property "$.code" is "INVALID_PROTOCOL" And the response property "$.message" contains a user friendly text -@reachability_status_subscription_15_invalid_credential_type +@reachability_status_subscription_16_invalid_credential_type Scenario: subscription creation with invalid credential type Given a valid subscription request body And the request property "$.credentialType" is not "ACCESSTOKEN" @@ -180,7 +186,7 @@ Scenario: Receive notification for subscription-ends event on expiry And the response property "$.code" is "INVALID_CREDENTIAL" And the response property "$.message" contains a user friendly text -@reachability_status_subscription_16_invalid_access_token_type +@reachability_status_subscription_17_invalid_access_token_type Scenario: subscription creation with invalid access token type Given a valid subscription request body And the request property "$.accessTokenType" is not "bearer" @@ -189,24 +195,27 @@ Scenario: Receive notification for subscription-ends event on expiry And the response property "$.code" is "INVALID_TOKEN" And the response property "$.message" contains a user friendly text -@reachability_status_subscription_17_invalid_credentials +@reachability_status_subscription_18_invalid_credentials Scenario: subscription creation with invalid credentials - Given a valid subscription request body with invalid credentials + Given a valid subscription request body + And header "Authorization" token is set to invalid credentials When the request "createSubscription" is sent Then the response property "$.status" is 401 And the response property "$.code" is "UNAUTHENTICATED" And the response property "$.message" contains a user friendly text -@reachability_status_subscription_18_invalid_inconsistent_access_token +@reachability_status_subscription_19_invalid_inconsistent_access_token Scenario: subscription creation with inconsistent access token for requested events subscription # To test this, a token have to be obtained for a different device - Given a valid subscription request body with inconsistent access token from different device + Given a valid subscription request body + And the request body property "$.device" is set to a valid testing device supported by the service + And header "Authorization" set to access token referring different device When the request "createSubscription" is sent Then the response property "$.status" is 403 And the response property "$.code" is "SUBSCRIPTION_MISMATCH" And the response property "$.message" contains a user friendly text -@reachability_status_subscription_19_unknown_subscription_id +@reachability_status_subscription_20_unknown_subscription_id Scenario: Get subscription when subscription-id is unknown to the system Given the path parameter property "$.subscriptionId" is unknown to the system When the request "retrieveReachabilityStatusSubscription" is sent