This space is deprecated and no longer supported. Please use the latest available version here.
Ozone Connect Test Cases
The following test cases have been implemented in the Testing Tool:
Response code validations.
Response schema validations.
Response data validations.
The tests below are a subset of a broader range of tests. New tests will be introduced gradually as the Ozone Testing Tool is updated and new versions of CBUAE Open Finance Standards are released.
1. Bank Data Test Cases
GET /accounts
Scenario | Response | Expected outcome |
---|---|---|
Valid accountIds are included as a query parameter, each with distinct SubTypes like CurrentAccount, Savings, and CreditCard for a retail user in Active status | 200 | Returns a 200 if all headers are valid and returns a record for each specified accountId including CurrentAccount, Savings, and CreditCard for a retail user with status 'Active' and validate correct accountType and accountSubType fields are populated for each accountId |
Valid accountId which is in NotActive status | 200 | Returns a 200 if all headers are valid and the status of the account is NotActive |
Valid accountId which is in Dormant status | 200 | Returns a 200 if all headers are valid and the status of the account is Dormant |
Valid accountId which is in Unclaimed status | 200 | Returns a 200 if all headers are valid and the status of the account is Unclaimed |
Valid accountId which is in Deceased status | 200 | Returns a 200 if all headers are valid and the status of the account is Deceased |
Valid accountId which is in Suspended status | 200 | Returns a 200 if all headers are valid and the status of the account is Suspended |
Valid accountId which is in Closed status | 200 | Returns a 200 if all headers are valid and the status of the account is Closed |
Combination of valid and invalid ( correct format but there is no data) accountIds | 200 | Returns a 200 if all headers are valid and returns a record for each valid accountId when both valid and invalid accountIds are specified |
No accounts found | 200 | Returns a 200 if all headers are valid no account information is found for the specified accountId |
Missing accountIds query parameter | 400 | fails with 400 if accountIds query param is missing |
Mix of accountIds in correct and bad format | 200 | Returns a 200 if all headers are valid and Returns a record for each valid accountId when mix of properly formatted and badly formatted accountIds are specified |
Non-comma-separated accountIds | 200 | Returns a 200 with empty array. |
GET /accounts/{accountId}
Scenario | Response | Expected outcome |
---|---|---|
Valid accountId has been provided: CurrentAccount for retail user in Active status | 200 | Returns a 200 status code when a valid current accountId is provided in the path parameter which should be present in the response body and the schema aligns with a CurrentAccount for Retail user in Active status |
Valid accountId has been provided: CurrentAccount for SME user in Closed status | 200 | Returns a 200 status code when a valid current accountId is provided in the path parameter, and the schema aligns with a CurrentAccount for SME user in closed status |
Valid accountId has been provided: CurrentAccount for Corporate user in Dormant status | 200 | Returns a 200 status code when a valid current accountId is provided in the path parameter, and the schema aligns with a CurrentAccount for Corporate user in Dormant status |
Valid accountId has been provided :Savings for retail user in Suspended status | 200 | Returns a 200 status code when a valid current accountId is provided in the path parameter, and the schema aligns with a Savings account for retail user in Suspended status |
Valid accountId has been provided :Savings for SME user in NotActive status | 200 | Returns a 200 status code when a valid current accountId is provided in the path parameter, and the schema aligns with a Savings account for SME user in NotActive status |
Valid accountId has been provided :Savings for Corporate user | 200 | Returns a 200 status code when a valid current accountId is provided in the path parameter, and the schema aligns with a Savings account for Corporate user |
Valid accountId has been provided: CreditCard for retail user | 200 | Returns a 200 status code when a valid current accountId is provided in the path parameter, and the schema aligns with a CreditCard account for retail user |
Valid accountId has been provided: CreditCard for SME user | 200 | Returns a 200 status code when a valid current accountId is provided in the path parameter, and the schema aligns with a CreditCard account for SME user |
Valid accountId has been provided: CreditCard for Corporate user | 200 | Returns a 200 status code when a valid current accountId is provided in the path parameter, and the schema aligns with a CreditCard account for Corporate user |
A valid accountId has been provided: PrePaidCard for retail user | 200 | Returns a 200 status code when a valid current accountId is provided in the path parameter, and the schema aligns with a PrePaidCard account for retail user |
A valid accountId has been provided: PrePaidCard for SME user | 200 | Returns a 200 status code when a valid current accountId is provided in the path parameter, and the schema aligns with a PrePaidCard account for SME user |
A valid accountId has been provided: PrePaidCard for Corporate user | 200 | Returns a 200 status code when a valid current accountId is provided in the path parameter, and the schema aligns with a PrePaidCard account for Corporate user |
Valid accountId has been provided: EMoney for retail user | 200 | Returns a 200 status code when a valid current accountId is provided in the path parameter, and the schema aligns with a EMoney account for retail user |
Valid accountId has been provided: EMoney for SME user | 200 | Returns a 200 status code when a valid current accountId is provided in the path parameter, and the schema aligns with a EMoney account for SME user |
Valid accountId has been provided: EMoney for Corporate user | 200 | Returns a 200 status code when a valid current accountId is provided in the path parameter, and the schema aligns with a EMoney account for Corporate user |
Valid accountId has been provided: ChargeCard for SME user | 200 | Returns a 200 status code when a valid current accountId is provided in the path parameter, and the schema aligns with a ChargeCard account for SME user |
Valid accountId has been provided: ChargeCard for Corporate user | 200 | Returns a 200 status code when a valid current accountId is provided in the path parameter, and the schema aligns with a ChargeCard account for Corporate user |
Valid accountId has been provided: ChargeCard for Retail user | 200 | Returns a 200 status code when a valid current accountId is provided in the path parameter, and the schema aligns with a ChargeCard account for Retail user |
Valid accountId has been provided: Other for Retail | 200 | Returns a 200 status code when a valid current accountId is provided in the path parameter, and the schema aligns with a Other account for Retail user |
Valid accountId has been provided: Other for Corporate | 200 | Returns a 200 status code when a valid current accountId is provided in the path parameter, and the schema aligns with a Other account for Corporate user |
Valid accountId has been provided: Other for SME | 200 | Returns a 200 status code when a valid current accountId is provided in the path parameter, and the schema aligns with a Other account for SME user |
GET /accounts/{accountId}/balances
Scenario | Response | Expected outcome |
---|---|---|
Valid accountId provided in the path parameter which has positive balance and credit line included Note: Repeat the test for all eligible account types within the defined scope. | 200 | Returns a status code of 200 if all headers are valid and also retrieves the balances of the specified accountId , where the creditDebitIndicator value is 'credit', and the CreditLines are populated with relevant details. |
Valid accountId provided in the path parameter which has negative balance and credit line not included | 200 | Returns a status code of 200 if all headers are valid and also retrieves the balances of the specified accountId, where the creditDebitIndicator value is 'debit', and the CreditLines object is not present. Note: Add additional validations to check the schema of the amount especially for whole number to have the decimal formatting as required. |
Valid accountId provided in the path parameter which has zero balance | 200 | Returns a 200 if all headers are valid and Returns balances of specified accountId with creditDebitIndicator value as ‘credit’ Note: A zero balance is considered to be a credit balance. |
Valid accountId provided in the path parameter which holds international currency | 200 | Returns a 200 if all headers are valid and Returns balance in international currency of 3 character alphabetic code |
Valid accountId provided in the path parameter which has more than one balanceType and balanceType query param is not supplied | 200 | Returns a status code of 200 if all headers are valid and provides the balances associated with the specified accountId, including all available balance types for that account. |
Returns empty response when balanceType passed in the query param doesn’t fetch any response | 200 | Returns a 200 with empty array |
Return balances when a specific ‘{balanceType}’ is passed in the request | 200 | Returns a 200 if all headers are valid and Returns only balance with type '{balanceType}' |
Returns 400 response when balanceType is not valid | 400 | fails with 400 if balanceType is invalid |
Invalid accountId | 400 | fails with 400 if accountId format is invalid |
Missing accountId path parameter | 401 | fails with 401 if accountId path param is missing |
GET /accounts/{accountId}/beneficiaries
Scenario | Response | Expected outcome |
---|---|---|
A valid accountId is provided in the path parameter, which contains payees categorised as 'Activated' and 'NotActivated' under the BeneficiaryType. | 200 | Returns a 200 if all headers are valid and Returns beneficiaries of specified accountId |
A valid accountId is provided in the path parameter, which contains payees having AddressType as Business, Correspondence, DeliveryTo,MailTo,POBox,Postal,Residential,Statement | 200 | Returns a 200 with multiple payees in the response which has addressTypes as Business, Correspondence, DeliveryTo,MailTo,POBox,Postal,Residential,Statement |
Valid accountId provided in the path parameter which has a empty payees | 200 | Returns a 200 with empty array if all headers are valid accountId Returns no payees |
Missing accountId path parameter | 400 | fails with 400 if accountId is missing |
Invalid accountId | 400 | fails with 400 if accountId format is invalid |
GET /accounts/{accountId}/transactions
Scenario | Response | Expected outcome |
---|---|---|
Valid accountId provided in the path parameter which has a list of transactions | 200 | Returns a 200 if all headers are valid and Returns transactions of specified accountId |
Filter the transactions based on fromBookingDateTime query param | 200 | Returns a 200 with list of transactions from fromBookingDateTime until latest available transaction |
Filter the transactions based on toBookingDateTime query param | 200 | Returns a 200 with list of transactions from the earliest available transaction till toBookingDateTime |
Filter the transactions based on fromBookingDateTime and toBookingDateTime query params | 200 | Returns a 200 with list of transactions within fromBookingDateTime and toBookingDateTime query params |
Valid accountId provided in the path parameter which has empty transactions | 200 | Returns a 200 with empty array if all headers are valid accountId Returns no transactions |
Return error response when toBookingDateTime is before fromBookingDateTime | 400 | Returns 400 when toBookingDateTime is before fromBookingDateTime |
Return error when fromBookingDateTime is invalid | 400 | Returns 400 when fromBookingDateTime is invalid |
Return error when toBookingDateTime is invalid | 400 | Returns 400 when toBookingDateTime is invalid |
Invalid accountId | 400 | fails with 400 if accountId format is invalid |
GET /customer
id | Scenario | Response | Expected outcome |
---|---|---|---|
CUS-010-040 | Valid o3-psu-identifier provided in the header which belongs to a retail user | 200 | Returns a 200 status code with details of a retail user in the response as per the schema
|
Valid o3-psu-identifier provided in the header which belongs to a corporate user | 200 | Returns a 200 status code with details of a corporate user in the response as per the schema | |
Valid o3-psu-identifier provided in the header which belongs to a SME user | 200 | Returns a 200 status code with details of a SME user in the response as per the schema | |
CUS-010-190 | Valid o3-psu-identifier provided in the header which has no customer associated | 200 | Returns a 200 status code with empty data object |
GET /accounts/{accountId}/customer
Scenario | Response | Expected outcome |
---|---|---|
A valid accountId is provided in the path parameter | 200 | Returns a 200 status code when all headers are valid and provides the associated customer details linked to the accountId provided in the request Note: Make sure in the schema validations, fields required for the chosen customer type are returned by LFI correctly |
Valid accountId provided in the path parameter which has no associated parties | 200 | Returns a 200 status code with empty data array |
GET /accounts/{accountId}/direct-debits
Scenario | Response | Expected outcome |
---|---|---|
Valid accountId provided in the path parameter which has direct-debits in Active and Inactive status | 200 | Returns a 200 if all headers are valid and Returns direct-debits of specified accountId in descending/ascending order of which date? |
Valid accountId provided in the path parameter which has direct-debits of frequencies Annual, Daily,Fortnightly, HalfYearly,Monthly,NotKnown,Quartely, Weekly | 200 | Returns a 200 if all headers are valid and Returns direct-debits of specified account which has direct-debits of frequencies Annual, Daily,Fortnightly, HalfYearly,Monthly,NotKnown,Quartely, Weekly |
Valid accountId provided in the path parameter which has a empty direct debits | 200 | Returns a 200 with empty array if all headers are valid and accountId Returns no direct-debits |
Missing accountId path parameter | 400 | fails with 400 if accountId is missing |
Invalid accountId | 400 | fails with 400 if accountId format is invalid |
GET /accounts/{accountId}/scheduled-payments
Scenario | Response | Expected outcome |
---|---|---|
Valid accountId provided in the path parameter which has scheduled-payments in “Arrival” and “Execution” states | 200 | Returns a 200 if all headers are valid and Returns scheduled-payments of specified accountId in descending/ascending order of which date? |
Valid accountId provided in the path parameter which has creditorAccount schemeName as IBAN and AccountNumber | 200 | Returns a 200 if all headers are valid and Returns scheduled-payments of specified accountId with correct creditoraccountIdentification |
Valid accountId provided in the path parameter which has a empty Schedule Payments | 200 | Returns a 200 with empty array if all headers are valid and accountId Returns no scheduled-payments |
Missing accountId path parameter | 400 | fails with 400 if accountId is missing |
Invalid accountId | 400 | fails with 400 if accountId format is invalid |
GET /accounts/{accountId}/standing-orders
Scenario | Response | Expected outcome |
---|---|---|
Valid accountId provided in the path parameter which has standing-orders in Active and Inactive status | 200 | Returns a 200 if all headers are valid and Returns standing-orders of specified accountId in descending/ascending order of which date? |
Valid accountId provided in the path parameter which has standing-orders of type BetweenMyAccounts, SameBankTransfer, LocalBankTransfer, InternationalTransfer, Charity | 200 | Returns a 200 if all headers are valid and Returns standing-orders of specified accountId which has different SOs like BetweenMyAccounts, SameBankTransfer, LocalBankTransfer, InternationalTransfer, Charity |
Valid accountId provided in the path parameter which has a empty standing-orders | 200 | Returns a 200 with empty array if all headers are valid and accountId Returns no standing-orders |
Missing accountId path parameter | 401 | fails with 401 if accountIdis missing |
Invalid accountId | 400 | fails with 400 if accountId format is invalid |
Common header validations for AIS and PIS endpoints:
Scenario | Response | Expected outcome |
---|---|---|
Fail if o3-psu-identifier header is missing | 400 | Fail if o3-psu-identifier header is missing with status 400 and correct schema |
Fail if o3-api-uri header is missing | 400 | Fail if o3-api-uri header is missing with status 400 and correct schema |
Fail if o3-api-operation header is missing | 400 | Fail if o3-api-operation header is missing with status 400 and correct schema |
Fail if o3-aspsp-id header is missing | 400 | Fail if o3-aspsp-id header is missing with status 400 and correct schema |
Fail if o3-ozone-interaction-id header is missing | 400 | Fail if o3-ozone-interaction-id header is missing with status 400 and correct schema |
Fail if o3-provider-id header is missing | 400 | Fail if o3-provider-id header is missing with status 400 and correct schema |
Fail if o3-caller-org-id header is missing | 400 | Fail if o3-caller-org-id header is missing with status 400 and correct schema |
Fail if o3-caller-client-id header is missing | 400 | Fail if o3-caller-client-id header is missing with status 400 and correct schema |
Fail if o3-caller-software-statement-id header is missing | 400 | Fail if o3-caller-software-statement-id header is missing with status 400 and correct schema |
Fail if o3-consent-id header is missing | 400 | Fail if o3-consent-id header is missing with status 400 and correct schema |
Fail if o3-consent-id header is having invalid value | 400 | Fail if o3-consent-id header is having invalid value with status 400 and correct schema |
Fail if o3-caller-software-statement-id header is having invalid value | 400 | Fail if o3-caller-software-statement-id header is having invalid value with status 400 and correct schema |
Fail if o3-caller-client-id header is having invalid value | 400 | Fail if o3-caller-client-id header is having invalid value with status 400 and correct schema |
Fail if o3-caller-org-id header is having invalid value | 400 | Fail if o3-caller-org-id header is having invalid value with status 400 and correct schema |
Fail if o3-provider-id header is having invalid value | 400 | Fail if o3-provider-id header is having invalid value with status 400 and correct schema |
Fail if o3-ozone-interaction-id header is having invalid value | 400 | Fail if o3-ozone-interaction-id header is having invalid value with status 400 and correct schema |
Fail if o3-aspsp-id header is having invalid value | 400 | Fail if o3-aspsp-id header is having invalid value with status 400 and correct schema |
Fail if o3-api-operation header is having invalid value | 400 | Fail if o3-api-operation header is having invalid value with status 400 and correct schema |
Fail if o3-api-uri header is having invalid value | 400 | Fail if o3-api-uri header is having invalid value with status 400 and correct schema |
Fail if o3-psu-identifier header is having invalid value | 400 | Fail if o3-psu-identifier header is having invalid value with status 400 and correct schema |
Fails if o3-psu-identifier is not b64 encoded | 400 | Fails if o3-psu-identifier is not b64 encoded with status 400 and correct schema |
Fails if o3-psu-identifier does not evaluate to a json structure | 400 | Fails if o3-psu-identifier does not evaluate to a json structure, with status 400 and correct schema |
Fails if o3-psu-identifier does not contain userId | 400 | Fails if o3-psu-identifier does not contain userId, with status 400 and correct schema |
Fails if o3-psu-identifier header is invalid - the decoded value is valid JSON, but userId is null, empty or undefined | 400 | Fails if o3-psu-identifier header is invalid - the decoded value is valid JSON, but userId is null, empty or undefined, with status 400 and correct schema |
Fails if o3-psu-identifier header is invalid - the decoded value is valid JSON, but userId is not a string | 400 | Fails if o3-psu-identifier header is invalid - the decoded value is valid JSON, but userId is not a string, with status 400 and correct schema |
2. Bank Service Test Cases
POST /payments & Get /payments
Scenario | Response | Expected outcome |
---|---|---|
POST /payments Domestic single payment Consumer to Consumer:Successful response from LFI when the request is valid Note: Test cases for different account types like SME, Retail and Corporate have been added. The intention of these tests is to make sure that different users are able to make payments to different types of creditors as applicable. | 201 |
|
Get payments Inquire a 'Pending' Single Immediate domestic payment Note: When conducting the tests as described above, the main goal is to verify that all payments in different statuses can be accessed with the accurate schema and data structure. | 200 with payment details in the response | Returns a 200 with status 'Pending' |
Get /payments Inquire a 'Rejected' Single Immediate Domestic payment Note: As a pre-requisite need to post a payment which triggers business rules to get rejected and inquire that in Get endpoint | 200 | Returns a 200 with status 'Rejected' and with reason object populated with details |
Negative Test - Fail if | 400 | Error response |
Negative Test - Fail if | 400 | Error response |
Negative Test - Fail if | 400 | Error response |
Negative Test - Fail if | 400 | Error response |
POST /payments Domestic Future Dated payment:Successful response when the request is valid Note: the tests are repeated for different users like SME, Corporate and Retail | 201 |
|
Get /payments/{paymentId} Inquire a 'Pending' Future dated payment Note: When conducting the tests as described above, the main goal is to verify that all payments in different statuses can be accessed with the accurate schema and data structure. | 200 with payment details in the response | Returns a 200 with status 'Pending' |
The below status’s might not be feasible to validate , but GET /payment should supports these different status’s Inquire a 'AcceptedSettlementInProcess' Single Immediate Domestic payment | 200 | Returns a 200 with status 'AcceptedSettlementInProcess' |
Inquire a 'AcceptedSettlementCompleted' Single Immediate Domestic payment | 200 | Returns a 200 with status 'AcceptedSettlementCompleted' |
Inquire a 'AcceptedWithoutPosting' Single Immediate Domestic payment | 200 | Returns a 200 with status 'AcceptedWithoutPosting' |
Inquire a 'AcceptedWithoutPosting' Single Immediate Domestic payment | 200 | Returns a 200 with status 'AcceptedWithoutPosting' and data initially used to post the payment |
GET payments/{report-file}
Scenario | Response | Expected outcome |
---|---|---|
Succeeds if valid paymentId in path parameter returns file name | 200 | Return a 200 status with correct schema and file name in response |
Invalid paymentId in path parameter | 400 | Invalid paymentId provided in the path parameter should return a 400 status code and correct schema |
Fail if paymentId in path parameter is missing | 400 | The paymentId in the path parameter is missing, should return a 400 status code and correct schema |
3. Insurance Test Cases
<TODO>
4. Health Check Test Cases
<TODO>
© Ozone Financial Technology Limited 2024-2025
Ozone Non Commercial Software EULA
Please try out our Advanced Search function.