Skip to content

Commit

Permalink
Update device-reachability-status-subscriptions.feature
Browse files Browse the repository at this point in the history
  • Loading branch information
mdomale authored Aug 29, 2024
1 parent 5e4b11c commit 1385953
Showing 1 changed file with 39 additions and 30 deletions.
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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"
Expand All @@ -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"
Expand All @@ -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"
Expand All @@ -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
Expand Down

0 comments on commit 1385953

Please sign in to comment.