Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

In-Store Channel Test Cases

...

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

Code Block
'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:

  • GET /client-id/{client_id}/customers/search

  • GET /client-id/{client_id}/customers/lookup

  • POST /client-id/{clientId}/authorization/{authorizationId}/release

  • POST /client-id/{clientId}/authorization/{authorizationId}/capture

  • POST /client-id/{clientId}/authorization/{authorizationId}/capture/{captureId}/return

  • POST /client-id/{client_id}/accounts/{account_number}/refund

  • GET /client-id/{clientId}/authorizations

  • GET /client-id/{clientId}/authorization/{authorizationId}

  • GET /client-id/{clientId}/captures

  • 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

  • POST /client-id/{clientId}/authorization/{authorizationId}/capture - 403 - forbidden

  • POST /client-id/{clientId}/authorization/{authorizationId}/capture/{captureId}/return - 403 - forbidden

  • POST /client-id/{client_id}/accounts/{account_number}/refund - 403 - forbidden

  • GET /client-id/{clientId}/authorizations - 403 - forbidden

  • GET /client-id/{clientId}/authorization/{authorizationId} - 403 - forbidden

  • GET /client-id/{clientId}/captures - 403 - forbidden

Any API call - Session time out

Test Case: 

Code Block
{{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 Block
{"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 Block
{"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:

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",
  "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 - "wrong_inputs"

Code Block
{
    "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:

Code Block
{
  "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 - "wrong_inputs"

Code Block
{
    "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.

Code Block
{
  "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 "tos_agreement": false

POST /client-id/{client_id}/apply - 409 -  "tos_agreement_required"

Code Block
{
    "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 "sin": 12312

POST /client-id/{client_id}/apply - 409 - "wrong_inputs"

Code Block
{
    "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 "middle_name": "D-EMAIL_DBL_TIMEOUT",

POST /client-id/{client_id}/apply - 409 - application_create_error 

New Flexiti user initiates and completes application flow - approval

 Test Case: Any application with "middle_name": "A-RR_L",

POST /client-id/{client_id}/apply - 200 - Approved response

New Flexiti user initiates and completes application flow - pending

 Test Case: Any application with "middle_name": "P-CREDIT",

POST /client-id/{client_id}/apply - 200 - Pending response

New Flexiti user initiates and completes application flow - decline

 Test Case: Any application with"middle_name": "D-MISSING_INFO",

POST /client-id/{client_id}/apply - 200 - Declined response

Customer Management

Customer not found on Lookup

Test Case:

Code Block
{{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

Code Block
{
    "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

  • 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

  • Account #:

GET /client-id/{client_id}/customers/lookup - 409 - user_not_active

Successful customer lookup

Test Case: Merchant generated from test data in sandbox account

  • Account #: provided on request

GET /client-id/{client_id}/customers/lookup - 200

Customer not found on Search

Test Case: Merchant generated from test data in sandbox account

  • Account #:

GET /client-id/{client_id}/customers/search - 404 - not_found

Unsuccessful customer search - missing first name

Test Case:

GET /client-id/{client_id}/customers/search - 409 - wrong_inputs

Unsuccessful customer search - missing last name

Test Case:

GET /client-id/{client_id}/customers/search - 409 - wrong_inputs

Unsuccessful customer search - missing DOB

Test Case:

Code Block
{{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

Code Block
{
    "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:

GET /client-id/{client_id}/customers/search - 409 - wrong_inputs

Successful customer search

Test Case: Merchant generated from test data in sandbox account

  • Account #: provided on request

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

  • Account #: provided on request

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

  • Account #: provided on request

POST /pos-api/client-id/{client_id}/accounts/{account_number}/calculate-interest - 200

Customer Verification

Customer initiates and then fails verification - SMS not found

Test Case:

  • Account #:

POST /client-id/{client_id}/account/{account_number}/verify - 404 - not_found

Customer initiates and then fails verification - email not found

Test Case:

  • Account #:

POST /client-id/{client_id}/account/{account_number}/verify - 404 - not_found

Customer initiates and then fails verification - email invalid

Test Case:

  • Account #:

Test Case:

Customer initiates and then fails verification - secret answer mismatch

Test Case:

  • Account #:

POST /client-id/{client_id}/account/{account_number}/verify - 409 - secret_answer_mismatch

Customer successfully receives verification code by email

Test Case: Merchant generated from test data in sandbox account

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

POST /client-id/{client_id}/account/{account_number}/verify - 200

Merchant successfully receives verification code with Security Question and Answer

Test Case: Merchant generated from test data in sandbox account

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

Code Block
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: Merchant generated from test data in sandbox account

POST /client-id/{client_id}/transactions - 409 - verification_code_required

Customer initiates and then fails Flexiti transaction - VCC (FlexitiCard) not found

Test Case:

  • VCC #:

POST /client-id/{client_id}/transactions - 404 - not_found

Customer initiates and then fails Flexiti transaction - Customer ID not found

Test Case:

  • Customer ID:

POST /client-id/{client_id}/transactions - 404 - not_found

Customer initiates and then fails Flexiti transaction - Account Number not found

Test Case:

  • Account #:

POST /client-id/{client_id}/transactions - 404 - not_found

Customer initiates and then fails Flexiti transaction - user not active

Test Case:

  • Account #:

POST /client-id/{client_id}/transactions - 409 - user_not_active

Customer initiates and then fails Flexiti transaction - user not able to purchase

Test Case:

  • Account #:

POST /client-id/{client_id}/transactions - 409 - user_not_able_to_purchase

Customer initiates and then fails Flexiti transaction - invalid transaction type

Test Case: Merchant generated from test data in sandbox account

POST /client-id/{client_id}/transactions - 409 - invalid_transaction_type

Customer initiates and then fails Flexiti transaction - Payment exceeds customer’s Open to Buy

Test Case:

  • Account #: provided on request

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 $10,500

  • Account #:

POST /client-id/{client_id}/transactions - 409 - limit_payment_amount_24

Customer successfully performs a deposit 

 Test Case:

  • Account #: provided on request

POST /client-id/{client_id}/transactions - 200

Customer successfully performs an in-store payment 

Test Case: Merchant generated from test data in sandbox account

  • Account #: provided on request

POST /client-id/{client_id}/transactions - 200

Customer successfully performs a trade-in 

Test Case: Merchant generated from test data in sandbox account

  • Account #: provided on request

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

  • Account #:

POST /client-id/{client-id}/authorization - 404 - not_found

Customer initiates and then fails Flexiti authorization - user not active

Test Case: Merchant generated from test data in sandbox account

  • Account #:

POST /client-id/{client-id}/authorization - 409 - user_not_able_to_purchase

Customer initiates and then fails Flexiti authorization - user not able to purchase

Test Case: Merchant generated from test data in sandbox account

  • 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

  • Account #: provided on request

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

  • Account #: provided on request

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

  • Account #: provided on request

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

  • Account #: provided on request

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

  • Account #: provided on request

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

  • Account #: provided on request

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:

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:

POST /client-id/{client_id}/accounts/{account_number}/refund - 404 - not_found

Unsuccessfully refund a captured regular purchase - refund exceeds limit

Test Case:

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

...