Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create Gherkin tests for device-reachability-status-subscriptions & device-roaming-status-subscriptions #187

Merged
merged 22 commits into from
Aug 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
60484ef
Create device-status-subscriptions
mdomale Jul 9, 2024
e767d0e
Update and rename device-status-subscriptions to device-roaming-statu…
mdomale Jul 23, 2024
89f5de9
Create device-reachability-status-subscriptions.feature
mdomale Jul 23, 2024
810cd9d
Update device-reachability-status-subscriptions.feature
mdomale Aug 28, 2024
0ba1ca7
Update device-roaming-status-subscriptions.feature
mdomale Aug 28, 2024
c777bdf
Update device-roaming-status-subscriptions.feature
mdomale Aug 29, 2024
b80604d
Update device-reachability-status-subscriptions.feature
mdomale Aug 29, 2024
f761dfa
Update device-reachability-status-subscriptions.feature
mdomale Aug 29, 2024
1c7abc4
Update device-roaming-status-subscriptions.feature
mdomale Aug 29, 2024
8f16aab
Update device-reachability-status-subscriptions.feature
mdomale Aug 29, 2024
0126c9b
Update device-reachability-status-subscriptions.feature
mdomale Aug 29, 2024
392c478
Update device-roaming-status-subscriptions.feature
mdomale Aug 29, 2024
12e4561
Update device-reachability-status-subscriptions.feature
mdomale Aug 29, 2024
5e4b11c
Update device-roaming-status-subscriptions.feature
mdomale Aug 29, 2024
1385953
Update device-reachability-status-subscriptions.feature
mdomale Aug 29, 2024
2f37df7
Update device-reachability-status-subscriptions.feature
mdomale Aug 29, 2024
fbc22a4
Update device-roaming-status-subscriptions.feature
mdomale Aug 29, 2024
5f62bd7
Update device-reachability-status-subscriptions.feature
mdomale Aug 30, 2024
54b0614
Update device-roaming-status-subscriptions.feature
mdomale Aug 30, 2024
bf37c42
Update device-roaming-status-subscriptions.feature
mdomale Aug 30, 2024
b48638e
Update device-reachability-status-subscriptions.feature
mdomale Aug 30, 2024
e18cc4e
Update device-roaming-status-subscriptions.feature
mdomale Aug 30, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,225 @@

@DeviceReachabilityStatusSubscription
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 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

######### Happy Path Scenarios #################################

@reachability_status_subscriptions_01_create_reachability_status_subscription_synchronously
Scenario: Create reachability status subscription synchronously
Given that subscriptions are created synchronously
And a valid subscription request body
When the request "createDeviceReachabilityStatusSubscription" is sent
Then the response code is 201
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_02_create_reachability_status_subscription_asynchronously
Scenario: Create reachability status subscription asynchronously
Given that subscriptions are created asynchronously
And a valid subscription request body
When the request "createDeviceReachabilityStatusSubscription" is sent
Then the response code is 202
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/SubscriptionAsync"

@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 the response body is an empty array

@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 path parameter "subscriptionId" is set to the identifier of an existing subscription
When the request "retrieveSubscription" 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_06_Operation_to_delete_subscription_based_on_an_existing_subscription-id
Scenario: Delete a subscription based on existing subscription-id.
Given the path parameter "subscriptionId" is set to the identifier of an existing subscription
When the request "deleteSubscription" 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_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
And the request body property "$.type" is "reachability-data"
When the request "createDeviceReachabilityStatusSubscription" is sent
Then the response code is 201
And if the device reachability is changed to data usage
Then event notification "reachability-data" is received on callback-url
And sink credentials are received as expected
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_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
And the request body property "$.type" is "reachability-sms"
When the request "createDeviceReachabilityStatusSubscription" is sent
Then the response code is 201
And if the device reachability is changed to sms usage
Then event notification "reachability-sms" is received on callback-url
And sink credentials are received as expected
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_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
And the request body property "$.type" is "reachability-disconnected"
When the request "createDeviceReachabilityStatusSubscription" is sent
Then the response code is 201
And if the device reachability is changed to disconnected
Then event notification "reachability-disconnected" is received on callback-url
And sink credentials are received as expected
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_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 "$.subscriptionExpireTime" is set to a value in the near future
When the request "createDeviceReachabilityStatusSubscription" is sent
Then the response code is 201
Then the subscription is expired
Then event notification "subscription-ends" is received on callback-url
And notification body complies with the OAS schema at "##/components/schemas/EventSubscriptionEnds"
And type="org.camaraproject.device-reachability-status-subscriptions.v0.subscription-ends"
And the response property "$.terminationReason" is "SUBSCRIPTION_EXPIRED"

@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
And the request body property "$.type" is "reachability-data"
And the request body property "$.subscriptionMaxEvents" is set to 1
When the request "createDeviceReachabilityStatusSubscription" is sent
Then the response code is 201
Then event notification "reachability-data" is received on callback-url
Then event notification "subscription-ends" is received on callback-url
And notification body complies with the OAS schema at "##/components/schemas/EventSubscriptionEnds"
And type="org.camaraproject.device-reachability-status-subscriptions.v0.subscription-ends"
And the response property "$.terminationReason" is "MAX_EVENTS_REACHED"

@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
When the request "createDeviceReachabilityStatusSubscription" is sent
Then the response code is 201
When the request "deleteSubscription" is sent
Then the response code is 202 or 204
Then event notification "subscription-ends" is received on callback-url
And notification body complies with the OAS schema at "##/components/schemas/EventSubscriptionEnds"
And type="org.camaraproject.device-reachability-status-subscriptions.v0.subscription-ends"
And the response property "$.terminationReason" is "SUBSCRIPTION_DELETED"


############### Error response scenarios ###########################

@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 "createDeviceReachabilityStatusSubscription" is sent
Then the response code is 400
And the response property "$.status" is 400
And the response property "$.code" is "INVALID_ARGUMENT"
And the response property "$.message" contains a user friendly text

@reachability_status_subscriptions_14_creation_of_subscription_with_expiry_time_in_past
Scenario: Expiry time in past
Given a valid subscription request body
And request body property "$.subscriptionexpiretime" in past
When the request "createDeviceReachabilityStatusSubscription" is sent
Then the response code is 400
And the response property "$.status" is 400
And the response property "$.code" is "INVALID_ARGUMENT"
And the response property "$.message" contains a user friendly text

@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"
When the request "createDeviceReachabilityStatusSubscription" is sent
Then the response property "$.status" is 400
And the response property "$.code" is "INVALID_PROTOCOL"
And the response property "$.message" contains a user friendly text

@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"
When the request "createDeviceReachabilityStatusSubscription" is sent
Then the response property "$.status" is 400
And the response property "$.code" is "INVALID_CREDENTIAL"
And the response property "$.message" contains a user friendly text

@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"
When the request "createDeviceReachabilityStatusSubscription" is sent
Then the response property "$.status" is 400
And the response property "$.code" is "INVALID_TOKEN" or "INVALID_ARGUMENT"
And the response property "$.message" contains a user friendly text

@reachability_status_subscription_18_invalid_credentials
Scenario: subscription creation with invalid credentials
Given a valid subscription request body
And header "Authorization" token is set to invalid credentials
When the request "createDeviceReachabilityStatusSubscription" 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_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
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 "createDeviceReachabilityStatusSubscription" 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_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 "retrieveSubscription" is sent
Then the response property "$.status" is 404
And the response property "$.code" is "NOT_FOUND"
And the response property "$.message" contains a user friendly text
Loading