Online Channel Test Cases
Info |
---|
All test cases outlined are in our Merchant Integration environment |
Case | Summary | Description | Acceptance Criteria |
---|---|---|---|
A | Merchant Configuration | ||
A-1 | Validate API credentials - Client ID | Merchant's API credentials (Client ID and Client Secret) are present and valid in the Flexiti Developer Portal | Merchant is able to successfully authenticate with Flexiti API using these credentials |
A-2 | Validate API credentials - Client Secret | Merchant's API credentials (Client ID and Client Secret) are present and valid in the Flexiti Developer Portal | Merchant is able to successfully authenticate with Flexiti API using these credentials |
A-3 | Validate API Base URL is referencing correct Flexiti environment | Merchant's environment should reference the correct Flexiti environments |
|
B
Merchant Authentication and Login
B-1
Unsuccessfully Authenticate with Flexiti's POS API - invalid client
Test Case: Access the API with
Code Block |
---|
'client_id=xxxxxx' |
POST /oauth/token - 400 - invalid_client
B-2
Unsuccessfully call an endpoint - Invalid token
Test Case: Call the /token endpoint to generate a token and then call a different endpoint after the "expires_in" value expires.
Any endpoint - 401 - unauthorized
B-3
Unsuccessfully call an endpoint - wrong scope
Test Case: Attempt to call the following endpoints with an token that has a “customer” scope:
GETA-4 | Validate Disclaimers and Links | Verify that all disclaimers, pdfs, and links are working correctly | Verified by Marketing Team |
A-5 | Validate Field Lengths | Compare accepted field lengths with parameter lengths | Verified by Implementation Team |
A-6 | Verify that any merchant-scope API calls are made from the Merchant Server-side (i.e. POST oauth/token, /capture, GET /authorizations, /captures, /lookup, /search) | Ensure that all API Endpoints that require a merchant scope are made from the server-side | Verify that any merchant scope API calls are made from the merchant server-side |
A-7 | Verify that the APIs are called with the correct scope | Verify that the following API endpoints are called with the “customer” scope:
|
|
|
|
|
|
|
|
|
|
|
|
|
GET /client-id/{clientId}/authorization/{authorizationId}
|
GET /client-id/{client_id}/customers/search - 403 - forbidden
GET /client-id/{client_id}/customers/lookup - 403 - forbidden
POST /client-id/{clientId}/authorization/{authorizationId}/release - 403 - forbidden
| Verified by Implementation Team | ||||
B | Merchant Authentication and Login | ||||
B-1 | Unsuccessfully Authenticate with Flexiti's POS API - invalid client | Test Case: Access the API with
| POST /oauth/token - 400 - invalid_client | ||
B-2 | Unsuccessfully call an endpoint - Invalid token | Test Case: Call the /token endpoint to generate a token and then call a different endpoint after the "expires_in" value expires. | Any endpoint - 401 - unauthorized | ||
B-3 | Unsuccessfully call an endpoint - wrong scope | Test Case: Attempt to call the following endpoints with an token that has a “customer” scope:
|
|
|
|
|
|
|
|
Test Case:
|
|
B-4
Any API call - Session time out
|
|
|
|
|
|
B-5
Successfully Authenticate with Flexiti's POS API
Test Case: Use the correct “client_secret” and “client_id” from the Developer Portal to access the Flexiti API.
POST /oauth/token - 200
C
Customer Apply Flow
C-1
Customer already has an account that need to be to activated
Test Case:
Code Block |
---|
{
"customer_identification": {
"personal_information": {
"first_name": "Alice",
"middle_name": "",
"last_name": "Tester",
"dob": "1950-05-12",
"postal_code": "L1N7L1"
}
},
"flow": "apply",
"email": "test@example.com",
"phone_number": 5550097339,
"address_1": "225 HICKORY STREET NORTH #306",
"city": "Whitby",
"province": "ON",
"tos_agreement": true
} |
POST /client-id/{{client_id}}/widget/init - 200
action: "activation"
C-3
Customer submits a new application and Flexiti identifies the customer has an existing account.
Test Case:
Code Block |
---|
{
"customer_identification": {
"personal_information": {
"first_name": "CERTIFICATION",
"middle_name": "",
"last_name": "EXISTING",
"dob": "1980-01-01",
"postal_code": "M6S2R5"
}
},
"flow": "apply",
"email": "test@example.com",
"phone_number": 5551231231,
"address_1": "123 Any Street",
"city": "Montreal",
"province": "QC",
"tos_agreement": true
} |
POST /client-id/{{client_id}}/widget/init - 200
action: "purchase"
C-4
Customer submits a new application.
Test Case: Create Application with new information
POST /client-id/{{client_id}}/widget/init - 200
C-5
Customer submits a new application but cannot proceed with an application due to derogatory status’s on an existing account.
Test Case:
POST /client-id/{{client_id}}/widget/init
C-6
Customer is performing an application flow and we detect existing account(s) for that customer. Then, the customer chooses to make a purchase with one of those existing accounts.
Test Case:
POST /client-id/{{client_id}}/widget/init
C-7
Customer attempts an application but there is an IT related error.
Test Case:
POST /client-id/{{client_id}}/widget/init - 409 -application_create_error
C-8
Customer initiates and then fails verification - secret answer mismatch
Test Case:
Account #:
116991631
Code Block |
---|
{
"format": "security_question",
"security_qid": 8,
"security_answer": "Dog"
} |
POST /client-id/{{client_id}}/widget/init - 409 - secret_answer_mismatch
Code Block |
---|
{
"url": "/flexiti/pos-api/v2.5/client-id/{client_id}/account/116991630/verify",
"message": "It has been following errors:",
"error": "secret_answer_mismatch"
} |
C-9
Customer successfully receives verification code by email
Test Case: Merchant generated from test data in sandbox account. PIN will be delivered to email address in Developer Portal Account Validation tab.
Account #:
116991631
/ FlexitiCard #: 2374980012865116
POST /client-id/{{client_id}}/widget/init - 200
C-10
Customer successfully receives verification code by SMS
Test Case: Merchant generated from test data in sandbox account. PIN will be delivered to phone number in Developer Portal Account Validation tab.
Account #:
116991631
/ FlexitiCard #: 2374980012865116
POST /client-id/{{client_id}}/widget/init - 200
D
Customer Apply/Buy Flow
D-1
Customer submits a new application but cannot proceed with an application due to derogatory status’s on an existing account.
Test Case:
Account #:
116991633
/ FlexitiCard #: 2374980012865132
POST /client-id/{client_id}/transactions - 409 - “user_not_able_to_purchase”
D-2
New user initiates and then cancels Flexiti application flow
Test Case: To be handled by Merchant’s implementation design, the customer should be able to cancel the transaction process at any time up to the transaction call.
Merchant design driven
D-3
New user initiates and fails application flow - missing required parameters
Test Case:
Code Block |
---|
{
"amount_requested": 5000,
"phone_number": "1234567890",
"language": "en-CA",
"salutation": "mr",
"first_name": "Barry",
"middle_name": "",
"last_name": "Blue",
"dob": "1980-01-01",
"address_1": "123 Any Street",
"address_2": "Apt C",
"city": "Montreal",
"province": "QC",
"postal_code": "A1A0H1",
"input_type": "manual",
"personal_income": 123123,
"household_income": 223123,
"housing_type": "Rent",
"email": "email@address.com",
"occupation_id": "FE",
"occupation_title": "Baker",
"employer_name": "Tasty Bakery",
"employer_phone": "1231231231",
"sin": "",
"security_qid": "8",
"security_answer": "Griphon",
"piw": "Cloud",
"tos_agreement": true
} |
| |||||||
B-4 | Any API call - Session time out | Test Case:
| GET {{pos_url}}/flexiti/pos-api/v2.5/client-id/{{client_id}}/customers/lookup?account_number=0001 - 504 - GATEWAY_TIMEOUT | ||||
B-5 | Successfully Authenticate with Flexiti's POS API | Test Case: Use the correct “client_secret” and “client_id” from the Developer Portal to access the Flexiti API. | POST /oauth/token - 200 | ||||
C | Customer Apply & Apply/Buy Flows | ||||||
C-1 | Apply & Apply/Buy - Widget - /init endpoint | ||||||
C-1.1 | Customer already has an account that needs to be to activated | Test Case:
| POST /client-id/{{client_id}}/widget/init - 200
| ||||
C-1.2 | Customer submits a new application and Flexiti identifies the customer has an existing account. | Test Case:
| POST /client-id/{{client_id}}/widget/init - 200
| ||||
C-1.3 | Customer submits a new application (widget) | Test Case: Use a new application payload but pass the key below as the middle name:
| POST /client-id/{{client_id}}/widget/init - 200
Send the application payload through the POST /client-id/{client_id}/apply endpoint | ||||
C-1.4 | New Flexiti user initiates and completes application flow - pending | Test Case: Use a new application payload but pass the key below as the middle name:
| POST /client-id/{{client_id}}/widget/init - 200
Send the application payload through the POST /client-id/{client_id}/apply |
wrong_inputs
"endpoint | |||||
C-1.5 | New Flexiti user initiates and completes application flow - decline | Test Case: Use a new application payload but pass the key below as the middle name:
| POST /client-id/{{client |
_id |
D-4
New user initiates and fails application flow - invalid inputs
}}/widget/init - 200
Send the application payload through the POST /client-id/{client_id}/apply endpoint | ||||
C-1.6 | Customer submits a new application that will be declined due to a derogatory status’s on an existing account. | Test Case:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| POST /client-id/{{client_id}}/widget/init - 200
Send the application payload through the POST /client-id/{client_id}/apply endpoint | ||||
C-1.7 | Customer attempts an application but there is an IT related error. | To be performed with Flexiti Assistance. Test Case: Use a new application payload but pass the key below as the middle name:
| POST /client-id/{{client_id}}/widget/ |
init - 409 - |
wrong_inputs
"application_create_error
|
| |||
C-1.8 | Customer initiates and then fails verification | Test Case: Create Application with new information and enter 1111 as the pin 4 times. | POST /client-id/{{client |
_id}} |
D-5
New user initiates and fails application flow - existing customer
/widget/init - 200
Send the application payload through the POST /client-id/{client_id}/apply endpoint | ||||
C-2 | Apply & Apply/Buy - Application - /apply endpoint | |||
C-2.1 | Application submission fails - invalid inputs | Test Case:
|
|
|
|
|
|
|
POST /client-id/{client_id}/apply - 409 - "customer_already_exists"
D-6
New user initiates and fails application flow - terms and conditions required
|
| POST /client-id/{client_id}/apply - 409 - |
" |
|
|
|
D-7
| ||
C-2.2 | Application submission fails - Terms and Conditions required | Test Case: Any application where |
|
|
| POST /client-id/{client_id}/apply - 409 - " |
tos_agreement_ |
required"
|
|
|
|
D-8
| |||
C-2.3 | New Flexiti user initiates and completes application flow - approval | Test Case: Any application with | POST /client-id/{client_id}/apply - 200 - |
C-2.4 | New Flexiti user initiates and completes application flow - pending | Test Case: Any application with |
| POST /client-id/{client_id}/apply - |
application_create_error
D-9200 - | |
C-2.5 | New Flexiti user initiates and completes application flow - |
decline | Test Case: Any application with |
|
| POST /client-id/{client_id}/apply - 200 |
Approved response
D-10
New Flexiti user initiates and completes application flow - pending
"middle_name": "P-CREDIT",
- | |||
C-3 | Apply/Buy - Plan Section - /calculate-interest endpoint | ||
See D-2 | |||
C-4 | Apply/Buy - Purchase - /authorization endpoint | ||
See D-3 | |||
D | Customer Buy Flow | ||
D-1 | Buy - Widget - /init endpoint | ||
D-1.1 | Customer initiates and then fails verification - account not found | Test Case:
| POST /client-id/{{client_id}}/ |
widget/init - |
Pending response
D-11
New Flexiti user initiates and completes application flow - decline
"middle_name": "D-MISSING_INFO",
POST 404 - not_found
|
Declined response
E
Customer Buy Flow
E-1
Customer initiates and then fails verification - account not found
Test Case:
Account #: 1234 / FlexitiCard #: 9999999999999999
flow: purchase
POST /client-id/{{client_id}}/widget/init - 404 - not_found
| |||
D-2 | Buy - Plan Section - /calculate-interest endpoint | ||
D-2.1 | Customer's Plans and Terms not displayed - account not found | Test Case:
| POST /pos-api/client-id/{client_id}/accounts/{account |
_number}/calculate-interest - 404 - "not_found" |
D- |
2.2 | Customer |
To be handled by Merchant’s implementation design, the customer should be able to cancel the transaction process at any time up to the authorization call.
's Plans and Terms displayed (QC Customer Account) | Test Case:
| POST /pos-api/client-id/{client_id}/accounts/{account_number}/calculate-interest - 200 | |
D-2.3 | Customer's Plans and Terms displayed (ROC Customer Account) | Test Case: Merchant generated from test data in sandbox account
| POST /pos-api/client-id/{client |
_id}/accounts/{account_number}/calculate-interest - 200 | |||
D-3 | Buy - Purchase - /authorization endpoint | ||
D-3.1 | Customer initiates and then fails |
Flexiti authorization - |
not |
verified | Test Case: |
Account #: 1234 / FlexitiCard #: 9999999999999999
| POST /client-id/{ |
client |
-id} |
Code Block |
---|
{
"url": "/flexiti/pos-api/v2.5/client-id/{client_id}/account/123/verify",
"message": "It has been following errors:",
"error": "not_found"
} |
/authorization - 409 - not_verified | |||
D-3.2 | Customer initiates and then fails Flexiti authorization - Account Number not found | Test Case: Merchant generated from test data in sandbox account
| POST /client-id/{client-id}/authorization - 404 - not_found |
D-3.3 | Customer initiates and then fails Flexiti authorization - |
user not able to purchase | Test Case: Merchant generated from test data in sandbox account |
| POST /client-id/{client-id}/authorization - 409 - |
user_not_able_to_purchase | |
D-3.4 | Customer initiates and then fails Flexiti authorization - |
not |
enough credit | Test Case: Merchant generated from test data in sandbox account |
| POST /client-id/{client-id}/authorization - |
409 - |
credit_ |
exceeded |
D-3.5 | Customer initiates and then fails Flexiti authorization - |
invalid plan ID | Test Case: Merchant generated from test data in sandbox account |
116991633
/ FlexitiCard #: 2374980012865132POST /client-id/{client-id}/authorization - 409 - |
plan_term_not_ |
set | |
D-3.5 | Customer initiates and then fails Flexiti authorization - |
invalid term | Test Case: Merchant generated from test data in sandbox account |
POST /client-id/{client-id}/authorization - 409 - |
plan_term_not_set | |
D-3.7 | Customer initiates and then fails Flexiti authorization - |
plan |
not available to customer | Test Case: Merchant generated from test data |
in sandbox account
| POST /client-id/{client-id}/authorization - 409 - plan_term_not_ |
available |
D-3.8 | Customer |
successfully performs a regular purchase authorization (QC Account) | Test Case: Merchant generated from test data in sandbox account
| POST /client-id/{client-id}/authorization - |
G-9
200 | |||
D-3.9 | Customer successfully performs a promotional purchase authorization (QC Account) | Test Case: Merchant generated from test data in sandbox account
| POST /client-id/{client-id}/authorization - |
200 | |
D-3.10 | Customer successfully performs a regular purchase authorization ( |
ROC account) | Test Case: Merchant generated from test data in sandbox account
| POST /client-id/{client-id}/authorization - 200 |
D-3.11 | Customer successfully performs a promotional purchase authorization ( |
ROC Account) | Test Case: Merchant generated from test data in sandbox account
| POST /client-id/{client-id}/authorization - 200 |
D-3.12 |
Response in "account_avs" with customer address matching values | Test Case: Merchant generated from test data in sandbox account |
POST /client-id/{client-id}/authorization - 200 | |||
D-3.13 | Billing and Shipping Information should be separately passed in and matching the expected values | Test Case: Run an authorization where the billing and shipping information are not matching each other | POST /client-id/{client-id}/authorization - 200 |
G-13
Customer successfully performs a promotional purchase authorization (ROC Account)
Test Case: Merchant generated from test data in sandbox account
Account #: provided on requestVerify with the Flexiti implementation team that the request received has the different corresponding billing & shipping info. | |||
D3.14 | In-store pick-ups: If in-store pick-ups is desired for online, the shipping address passed in is the store address. | Test Case: Process a transaction for instore pickup (There’s no difference from the Flexiti API’s perspective) | POST /client-id/{client-id}/authorization - 200 |
G-14
Response in "account_avs" with customer address matching values
Test Case: Merchant generated from test data in sandbox account
POST /client-id/{client-id}/authorization - 200
Verify with the Flexiti implementation team & the merchant dev team that the shipping info received by Flexiti is that of the pick-up store info. | |||
E | Merchant Order Management |
E-1 | Unsuccessfully release an authorization - wrong transaction ID | Test Case: Merchant generated from test data in sandbox account | POST /client-id/{clientId}/authorization/{authorizationId}/release - not_found |
E-2 | Unsuccessfully release an authorization - total requested more than authorization | Test Case: Merchant generated from test data in sandbox account | POST /client-id/{clientId}/authorization/{authorizationId}/release - auth_amount_exceeded |
E-3 | Unsuccessfully release an authorization - authorization ended | Test Case: Merchant generated from test data in sandbox account with Flexiti assistance. | POST /client-id/{clientId}/authorization/{authorizationId}/release - authorization_ended |
E-4 | Unsuccessfully release an authorization - employee does not have permission | Test Case: Merchant generated from test data in sandbox account with Flexiti assistance | POST /client-id/{clientId}/authorization/{authorizationId}/release - not_permitted |
E-5 | Perform a full release of an Authorization | Test Case: Merchant generated from test data in sandbox account | POST /client-id/{clientId}/authorization/{authorizationId}/release - 200 |
E-6 | Perform a partial release of an Authorization | Test Case: Merchant generated from test data in sandbox account | POST /client-id/{clientId}/authorization/{authorizationId}/release - 200 |
E-7 | Unsuccessfully capture an authorization - customer not able to purchase | Test Case: Merchant generated from test data in sandbox account with Flexiti assistance. | POST /client-id/{clientId}/authorization/{authorizationId}/capture - 409 - not_permitted |
E-8 | Unsuccessfully capture an authorization - authorization not capturable | Test Case: Merchant generated from test data in sandbox account with Flexiti assistance. | POST /client-id/{clientId}/authorization/{authorizationId}/capture - 409 - not_permitted |
E-9 | Unsuccessfully capture an authorization - wrong authorization ID | Test Case: Merchant generated from test data in sandbox account | POST /client-id/{clientId}/authorization/{authorizationId}/capture - 404 - not_found |
E-10 | Unsuccessfully capture an authorization - amount greater than authorization | Test Case: Merchant generated from test data in sandbox account | POST /client-id/{clientId}/authorization/{authorizationId}/capture - 409 - auth_amount_exceeded |
E-11 | Fully Capture an authorization | Test Case: Merchant generated from test data in sandbox account | POST /client-id/{clientId}/authorization/{authorizationId}/capture - 200 |
E-12 | Partially Capture an authorization | Test Case: Merchant generated from test data in sandbox account | POST /client-id/{clientId}/authorization/{authorizationId}/capture - 200 |
E-13 | Unsuccessfully refund a captured regular purchase - customer account not found | Test Case: Account #: 1234 | POST /client-id/{client_id}/accounts/{account_number}/refund - 404 - not_found |
E-14 | Unsuccessfully refund a captured regular purchase - refund exceeds limit | Test Case: Merchant generated from test data in sandbox account with Flexiti assistance. | POST /client-id/{client_id}/accounts/{account_number}/refund - 409 - refunds_limit_exceeded_amount |
E-15 | Perform a full refund of a captured regular purchase | Test Case: Merchant generated from test data in sandbox account | POST /client-id/{client_id}/accounts/{account_number}/refund - 200 |
E-16 | Perform a Partial Refund of a captured regular purchase | Test Case: Merchant generated from test data in sandbox account | POST /client-id/{client_id}/accounts/{account_number}/refund - 200 |
E-17 | Unsuccessfully return a captured promotional purchase - wrong authorization ID | Test Case: Merchant generated from test data in sandbox account | POST /client-id/{clientId}/authorization/{authorizationId}/capture/{captureId}/return |
E-18 | Unsuccessfully return a captured promotional purchase - return exceeds limit | Test Case: Merchant generated from test data in sandbox account | POST /client-id/{clientId}/authorization/{authorizationId}/capture/{captureId}/return |
E-19 | Perform a full Return on a captured promotional purchase | Test Case: Merchant generated from test data in sandbox account | POST /client-id/{clientId}/authorization/{authorizationId}/capture/{captureId}/return - 200 |
E-20 | Perform a Partial return of a captured promotional purchase | Test Case: Merchant generated from test data in sandbox account | POST /client-id/{clientId}/authorization/{authorizationId}/capture/{captureId}/return - 200 |
E-21 | Unsuccessfully view list of Authorizations available for capture - wrong dates | Test Case: Merchant generated from test data in sandbox account | GET /client-id/{clientId}/authorizations - 409 - date_from_bigger_than_date_to |
E-22 | View a list of Authorizations available for capture | Test Case: Merchant generated from test data in sandbox account | GET /client-id/{clientId}/authorizations - 200 |
E-23 | Unsuccessfully view an authorization - authorization not found | Test Case: Merchant generated from test data in sandbox account | GET /client-id/{clientId}/authorization/{authorizationId} - 409 - not_found |
E-24 | View an authorization | Test Case: Merchant generated from test data in sandbox account | GET /client-id/{clientId}/authorization/{authorizationId} - 200 |
E-25 | Unsuccessfully View a list of captures - wrong dates | Test Case: Merchant generated from test data in sandbox account | GET /client-id/{clientId}/captures - 409 - date_from_bigger_than_date_to |
E-26 | View a list of captures | Test Case: Merchant generated from test data in sandbox account | GET /client-id/{clientId}/captures - 200 |
Ac