In-Store Channel Test Cases
All test cases outlined are in our Merchant Integration environment
Summary | Description | Acceptance Criteria |
---|---|---|
Merchant Configuration | ||
Validate API credentials - Client ID | Merchant's API credentials are present and valid in the Flexiti Developer Portal | Merchant is able to successfully authenticate with Flexiti API using these credentials |
Validate API credentials - Client Secret | Merchant's API credentials are present and valid in the Flexiti Developer Portal | Merchant is able to successfully authenticate with Flexiti API using these credentials |
Validate API Base URL is referencing correct Flexiti environment | Merchant's environment should reference Flexiti’s environments |
|
Merchant Authentication and Login | ||
Unsuccessfully Authenticate with Flexiti's POS API - invalid client | Test Case: Access the API with 'client_id=xxxxxx' | POST /oauth/token - 400 - invalid_client |
Unsuccessfully call an endpoint - Invalid token | Test Case: Call the /token endpoint to generate a token and then call a different after the "expires_in" value expires. | Any endpoint - 401 - unauthorized |
Unsuccessfully call an endpoint - wrong scope | Test Case: Attempt to call the following endpoints with an token that has a “customer” scope:
|
|
Any API call - Session time out | Test Case: {{pos_url}}/flexiti/pos-api/v2.5/client-id/{{client_id}}/customers/lookup?account_number=0001 | GET {{pos_url}}/flexiti/pos-api/v2.5/client-id/{{client_id}}/customers/lookup?account_number=0001 - 504 - GATEWAY_TIMEOUT |
Successfully Authenticate with Flexiti's POS API | Test Case: Use the correct “client_secret” and “client_id” to access the Flexiti API. | POST /oauth/token - 200 |
Customer Application Flows | ||
Unsuccessful Drivers License Scan | Test Case: Send the following request to POST /client-id/{client_id}/customers/driverslicense {"code": "@\n\u001e\rxxx\n604428040101 DL00310219DLDCAunavI\nDCBNONE\nDCDNONE\nDBA20200515\nDCSNUMBER1\nDACENSTREAM \nDAD\nDBD20140516\nDBB19740515\nDBCZ\nDAYBLU\nDAU163 cm\nDAG55 UNIVERSITY AVE\nDAITORONTO\nDAJON\nDAKM5J 2H7\nDAQD61014070660905\nDCFPEJK368N4\nDCGCAN\nDDEU\nDDFU\nDDGU\r" } | POST /client-id/{client_id}/customers/driverslicense - 409 - Driver License's not supported |
Successful Drivers License Scan | Test Case: Send the following request to POST /client-id/{client_id}/customers/driverslicense {"code": "@\n\u001e\rANSI\n604428040101 DL00310219DLDCAunavI\nDCBNONE\nDCDNONE\nDBA20200515\nDCSNUMBER1\nDACENSTREAM \nDAD\nDBD20140516\nDBB19740515\nDBCZ\nDAYBLU\nDAU163 cm\nDAG55 UNIVERSITY AVE\nDAITORONTO\nDAJON\nDAKM5J 2H7\nDAQD61014070660905\nDCFPEJK368N4\nDCGCAN\nDDEU\nDDFU\nDDGU\r" } | POST /client-id/{client_id}/customers/driverslicense - 200 |
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 |
New user initiates and fails application flow - missing required parameters | Test Case: { "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", "govid_expiry": "2025-12-12", "city": "Montreal", "province": "QC", "postal_code": "A1A0H1", "govid_type": "CAP", "govid_issuedby": "CANADA", "govid_number": "AB123456", "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 } | POST /client-id/{client_id}/apply - 409 - " { "url": "/flexiti/pos-api/v2.5/client-id/{client-id}/apply", "message": "Some inputs are wrong!", "error": "wrong_inputs", "field_errors": [ { "param": "monthly_housing_expenses", "msg": "required" } ] } |
New user initiates and fails application flow - invalid inputs | Test Case: { "amount_requested": 5000, "phone_number": "5551231231", "language": "en-CA", "salutation": "mr", "first_name": "Garry", "middle_name": "", "last_name": "Blue", "dob": "1980-01-01", "address_1": "123 Any Street", "address_2": "Apt C", "govid_expiry": "2021-12-12", "city": "Montreal", "province": "QC", "postal_code": "A1A0H1", "govid_type": "CAP", "monthly_housing_expenses": 1000, "govid_issuedby": "CANADA", "govid_number": "", "input_type": "manual", "personal_income": "abc", "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": "Horse", "piw": "Cloud", "tos_agreement": true } | POST /client-id/{client_id}/apply - 409 - " { "url": "/flexiti/pos-api/v2.5/client-id/{client-id}/apply", "message": "Some inputs are wrong!", "error": "wrong_inputs", "field_errors": [ { "param": "personal_income", "msg": "invalid", "value": "abc" } ] } |
New user initiates and fails application flow - existing customer | Test Case: To be performed with Flexiti Assistance. { "amount_requested": 5000, "phone_number": "5551231231", "language": "en-CA", "salutation": "mr", "first_name": "Existing", "middle_name": "", "last_name": "Customer", "dob": "1980-01-01", "address_1": "123 Any Street", "address_2": "Apt C", "govid_expiry": "2021-12-12", "city": "Montreal", "province": "QC", "postal_code": "A1A0H1", "govid_type": "CAP", "monthly_housing_expenses": 1000, "govid_issuedby": "CANADA", "govid_number": "AB123456", "input_type": "manual", "personal_income": 100000, "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": "Horse", "piw": "Cloud", "tos_agreement": true } | POST /client-id/{client_id}/apply - 409 - "customer_already_exists" |
New user initiates and fails application flow - terms and conditions required | Test Case: Any application where | POST /client-id/{client_id}/apply - 409 - "tos_agreement_required" { "url": "/flexiti/pos-api/v2.5/client-id/{client-id}/apply", "message": "It has been following errors:", "error": "tos_agreement_required" } |
New user initiates and fails application flow - SIN number format | Test Case: Any application where | POST /client-id/{client_id}/apply - 409 - "wrong_inputs" { "url": "/flexiti/pos-api/v2.5/client-id/{client-id}/apply", "message": "Some inputs are wrong!", "error": "wrong_inputs", "field_errors": [ { "param": "sin", "msg": "invalid", "value": 12312 } ] } |
New user initiates and fails application flow - Third Party time out | Test Case: Any application with | POST /client-id/{client_id}/apply - 409 - application_create_error |
New Flexiti user initiates and completes application flow - approval | Test Case: Any application with | POST /client-id/{client_id}/apply - 200 - Approved response |
New Flexiti user initiates and completes application flow - pending | Test Case: Any application with | POST /client-id/{client_id}/apply - 200 - Pending response |
New Flexiti user initiates and completes application flow - decline | Test Case: Any application with | POST /client-id/{client_id}/apply - 200 - Declined response |
Customer Management | ||
Customer not found on Lookup | Test Case: {{pos_url}}/flexiti/pos-api/v2.5/client-id/{{client_id}}/customers/lookup?customer_id=1111111111111 | GET /client-id/{client_id}/customers/lookup - 404 - not_found { "url": "/flexiti/pos-api/v2.5/client-id/{client_id}/customers/lookup?customer_id=1111111111111", "message": "It has been following errors:", "error": "not_found" } |
Customer found not able to transact | Test Case: Merchant generated from test data in sandbox account
| GET /client-id/{client_id}/customers/lookup - 409 - user_not_able_to_purchase |
Customer account needs activation | Test Case: Merchant generated from test data in sandbox account
| GET /client-id/{client_id}/customers/lookup - 409 - user_not_active |
Successful customer lookup | Test Case:
| GET /client-id/{client_id}/customers/lookup - 200 |
Unsuccessful customer search - missing first name | Test Case: {{pos_url}}/flexiti/pos-api/v2.5/client-id/{{client_id}}/customers/search?lang=en&last_name=Morley&dob=1964-04-30 | GET /client-id/{client_id}/customers/search - 409 - wrong_inputs { "url": "/flexiti/pos-api/v2.5/client-id/{client_id}/customers/search?lang=en&last_name=Morley&dob=1964-04-30", "message": "Some inputs are wrong!", "error": "wrong_inputs", "field_errors": [ { "param": "first_name", "msg": "required" } ] } |
Unsuccessful customer search - missing last name | Test Case: {{pos_url}}/flexiti/pos-api/v2.5/client-id/{{client_id}}/customers/search?lang=en&first_name=David&dob=1964-04-30 | GET /client-id/{client_id}/customers/search - 409 - wrong_inputs { "url": "/flexiti/pos-api/v2.5/client-id/{client_id}/customers/search?lang=en&first_name=David&dob=1964-04-30", "message": "Some inputs are wrong!", "error": "wrong_inputs", "field_errors": [ { "param": "last_name", "msg": "required" } ] } |
Unsuccessful customer search - missing DOB | Test Case: {{pos_url}}/flexiti/pos-api/v2.5/client-id/{{client_id}}/customers/search?lang=en&first_name=David&last_name=Morley | GET /client-id/{client_id}/customers/search - 409 - wrong_inputs { "url": "/flexiti/pos-api/v2.5/client-id/{}client-id}/customers/search?lang=en&first_name=David&last_name=Morley", "message": "Some inputs are wrong!", "error": "wrong_inputs", "field_errors": [ { "param": "dob", "msg": "required" } ] } |
Unsuccessful customer search - invalid DOB format | Test Case: {{pos_url}}/flexiti/pos-api/v2.5/client-id/{{client_id}}/customers/search?lang=en&first_name=CERTIFICATION&last_name=03TEST&dob=01-1970-01 | GET /client-id/{client_id}/customers/search - 409 - wrong_inputs |
Successful customer search | Test Case: {{pos_url}}/flexiti/pos-api/v2.5/client-id/{{client_id}}/customers/search?lang=en&first_name=CERTIFICATION&last_name=03TEST&dob=1970-01-01 | GET /client-id/{client_id}/customers/search - 200 |
Available Plans and Terms | ||
Customer's Plans and Terms not displayed - customer not found | Test Case:
| POST /pos-api/client-id/{client_id}/accounts/{account_number}/calculate-interest - 404 - "not_found" |
Customer's Plans and Terms displayed (QC 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 |
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 |
Customer Verification | ||
Customer initiates and then fails verification - account not found | Test Case:
| POST /client-id/{client_id}/account/{account_number}/verify - 404 - not_found { "url": "/flexiti/pos-api/v2.5/client-id/{client_id}/account/123/verify", "message": "It has been following errors:", "error": "not_found" } |
Customer initiates and then fails verification - secret answer mismatch | Test Case:
{ "format": "security_question", "security_qid": 8, "security_answer": "Dog" } | POST /client-id/{client_id}/account/{account_number}/verify - 409 - secret_answer_mismatch { "url": "/flexiti/pos-api/v2.5/client-id/{client_id}/account/116991630/verify", "message": "It has been following errors:", "error": "secret_answer_mismatch" } |
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.
| POST /client-id/{client_id}/account/{account_number}/verify - 200 |
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.
| POST /client-id/{client_id}/account/{account_number}/verify - 200 |
Merchant successfully receives verification code with Security Question and Answer | Test Case:
{ "format": "security_question", "security_qid": 8, "security_answer": "Horse" } | POST /client-id/{client_id}/account/{account_number}/verify - 200 |
Flexiti Transactions (Deposit, In-store Payment, Trade-in) | ||
Customer initiates and then cancels Flexiti transaction 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. | Customer successfully cancels the transaction flow prior to the POST /client-id/{client_id}/transactions request |
Customer initiates and then fails Flexiti transaction - wrong verification code | Test Case: Merchant generated from test data in sandbox account verification_code: 9999 | POST /client-id/{client_id}/transactions - 409 - wrong_verification_code |
Customer initiates and then fails Flexiti transaction - missing verification code | Test Case: { "transaction_type": "deposit", "amount": "0.05", "customer_id": 1111111111111111 } | POST /client-id/{client_id}/transactions - 409 - verification_code_required { "url": "/flexiti/pos-api/v2.5/client-id/{client_id}/transactions", "message": "It has been following errors:", "error": "verification_code_required" } |
Customer initiates and then fails Flexiti transaction - VCC (FlexitiCard) not found | Test Case:
| POST /client-id/{client_id}/transactions - 404 - not_found { "url": "/flexiti/pos-api/v2.5/client-id/{client_id}/transactions", "message": "It has been following errors:", "error": "not_found" } |
Customer initiates and then fails Flexiti transaction - Customer ID not found | Test Case:
| POST /client-id/{client_id}/transactions - 404 - not_found { "url": "/flexiti/pos-api/v2.5/client-id/{client_id}/transactions", "message": "It has been following errors:", "error": "not_found" } |
Customer initiates and then fails Flexiti transaction - Account Number not found | Test Case:
| POST /client-id/{client_id}/transactions - 404 - not_found { "url": "/flexiti/pos-api/v2.5/client-id/{client_id}/transactions", "message": "It has been following errors:", "error": "not_found" } |
Customer initiates and then fails Flexiti transaction - user not able to purchase | Test Case:
| POST /client-id/{client_id}/transactions - 409 - user_not_able_to_purchase |
Customer initiates and then fails Flexiti transaction - Payment exceeds customer’s Open to Buy | Test Case: Merchant generated from test data in sandbox account
| POST /client-id/{client_id}/transactions - 409 - not_enough_credit |
Customer initiates and then fails Flexiti transaction - Payment exceeds limit | Test Case: Attempt to make a payment of $15,500
| POST /client-id/{client_id}/transactions - 409 - limit_payment_amount_24 |
Customer successfully performs a deposit | Test Case: Merchant generated from test data in sandbox account
| POST /client-id/{client_id}/transactions - 200 |
Customer successfully performs an in-store payment | Test Case: Merchant generated from test data in sandbox account
| POST /client-id/{client_id}/transactions - 200 |
Customer successfully performs a trade-in | Test Case: Merchant generated from test data in sandbox account
| POST /client-id/{client_id}/transactions - 200 |
Flexiti Authorization | ||
Customer initiates and then cancels Flexiti Authorization | 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. | Customer successfully cancels the transaction flow prior to the POST /client-id/{client-id}/authorization request |
Customer initiates and then fails Flexiti authorization - wrong verification code | Test Case: Merchant generated from test data in sandbox account | POST /client-id/{client-id}/authorization - 409 - wrong_verification_code |
Customer initiates and then fails Flexiti authorization - missing verification code | Test Case: Merchant generated from test data in sandbox account | POST /client-id/{client-id}/authorization - 409 - verification_code_required |
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 |
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 |
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 |
Customer initiates and then fails Flexiti authorization - invalid plan ID | Test Case: Merchant generated from test data in sandbox account | POST /client-id/{client-id}/authorization - 409 - plan_term_not_set |
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 |
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 |
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 - 200 |
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 |
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 |
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 |
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 |
Merchant Order Management | ||
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
Fully Capture an authorization | Test Case: Merchant generated from test data in sandbox account | POST /client-id/{clientId}/authorization/{authorizationId}/capture - 200 |
Partially Capture an authorization | Test Case: Merchant generated from test data in sandbox account | POST /client-id/{clientId}/authorization/{authorizationId}/capture - 200 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
View a list of Authorizations available for capture | Test Case: Merchant generated from test data in sandbox account | GET /client-id/{clientId}/authorizations - 200 |
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 |
View an authorization | Test Case: Merchant generated from test data in sandbox account | GET /client-id/{clientId}/authorization/{authorizationId} - 200 |
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 |
View a list of captures | Test Case: Merchant generated from test data in sandbox account | GET /client-id/{clientId}/captures - 200 |