Exemple #1
0
def test_premium_account_update_bcol_pad(session, client, jwt, app):
    """Assert that the endpoint returns 200."""
    token = jwt.create_jwt(get_claims(roles=[Role.SYSTEM.value]), token_header)
    headers = {'Authorization': f'Bearer {token}', 'content-type': 'application/json'}

    rv = client.post('/api/v1/accounts', data=json.dumps(get_premium_account_payload()),
                     headers=headers)

    auth_account_id = rv.json.get('authAccountId')

    rv = client.get(f'/api/v1/accounts/{auth_account_id}', headers=headers)
    assert rv.json.get('authAccountId') == auth_account_id

    # assert switching to PAD returns bank details
    pad_account_details = get_pad_account_payload(account_id=int(auth_account_id))

    rv = client.put(f'/api/v1/accounts/{auth_account_id}', data=json.dumps(pad_account_details),
                    headers=headers)

    assert rv.status_code == 202

    assert rv.json.get('futurePaymentMethod') == PaymentMethod.PAD.value
    assert rv.json.get('bankTransitNumber') == pad_account_details.get('bankTransitNumber')

    # Assert switching to bcol returns no bank details
    rv = client.put(f'/api/v1/accounts/{auth_account_id}', data=json.dumps(get_premium_account_payload()),
                    headers=headers)

    assert rv.json.get('futurePaymentMethod') is None
    assert rv.json.get('bankTransitNumber') is None
Exemple #2
0
def test_premium_duplicate_account_creation(session, client, jwt, app):
    """Assert that the endpoint returns 200."""
    token = jwt.create_jwt(get_claims(role=Role.SYSTEM.value), token_header)
    headers = {'Authorization': f'Bearer {token}', 'content-type': 'application/json'}

    client.post('/api/v1/accounts', data=json.dumps(get_premium_account_payload()),
                headers=headers)

    rv = client.post('/api/v1/accounts', data=json.dumps(get_premium_account_payload()),
                     headers=headers)

    assert rv.status_code == 400
def test_create_pad_account_to_drawdown(session):
    """Assert updating PAD to DRAWDOWN works."""
    # Create a PAD Account first
    pad_account = PaymentAccountService.create(get_unlinked_pad_account_payload())
    # Update this payment account with drawdown and assert payment method
    bcol_account = PaymentAccountService.update(pad_account.auth_account_id, get_premium_account_payload())
    assert bcol_account.auth_account_id == bcol_account.auth_account_id
    assert bcol_account.payment_method == PaymentMethod.DRAWDOWN.value
Exemple #4
0
def test_premium_account_update(session, client, jwt, app):
    """Assert that the endpoint returns 200."""
    token = jwt.create_jwt(get_claims(roles=[Role.SYSTEM.value]), token_header)
    headers = {'Authorization': f'Bearer {token}', 'content-type': 'application/json'}

    rv = client.post('/api/v1/accounts', data=json.dumps(get_premium_account_payload()),
                     headers=headers)

    auth_account_id = rv.json.get('authAccountId')

    rv = client.get(f'/api/v1/accounts/{auth_account_id}', headers=headers)
    assert rv.json.get('authAccountId') == auth_account_id

    rv = client.put(f'/api/v1/accounts/{auth_account_id}', data=json.dumps(get_premium_account_payload()),
                    headers=headers)

    assert rv.status_code == 200
def test_create_bcol_account_to_pad(session):
    """Assert that update from BCOL to PAD works."""
    # Create a DRAWDOWN Account first
    bcol_account = PaymentAccountService.create(get_premium_account_payload())
    # Update to PAD
    pad_account = PaymentAccountService.update(bcol_account.auth_account_id, get_unlinked_pad_account_payload())

    assert bcol_account.auth_account_id == bcol_account.auth_account_id
    assert pad_account.payment_method == PaymentMethod.PAD.value
    assert pad_account.cfs_account_id
    assert pad_account.cfs_account is None
    assert pad_account.cfs_party is None
    assert pad_account.cfs_site is None
Exemple #6
0
def test_premium_account_update_with_no_create(session, client, jwt, app):
    """Assert that the endpoint returns 200."""
    token = jwt.create_jwt(get_claims(role=Role.SYSTEM.value), token_header)
    headers = {
        'Authorization': f'Bearer {token}',
        'content-type': 'application/json'
    }
    auth_account_id = 100000
    rv = client.put(
        f'/api/v1/accounts/{auth_account_id}',
        data=json.dumps(
            get_premium_account_payload(account_id=auth_account_id)),
        headers=headers)

    assert rv.status_code == 200
def test_create_pad_to_bcol_to_pad(session):
    """Assert that update from BCOL to PAD works."""
    # Create a PAD Account first
    pad_account_1 = PaymentAccountService.create(get_unlinked_pad_account_payload(bank_number='009'))
    assert pad_account_1.bank_number == '009'

    # Update this payment account with drawdown and assert payment method
    bcol_account = PaymentAccountService.update(pad_account_1.auth_account_id, get_premium_account_payload())
    assert bcol_account.auth_account_id == bcol_account.auth_account_id
    assert bcol_account.payment_method == PaymentMethod.DRAWDOWN.value

    # Update to PAD again
    pad_account_2 = PaymentAccountService.update(pad_account_1.auth_account_id,
                                                 get_unlinked_pad_account_payload(bank_number='010'))
    assert pad_account_2.bank_number == '010'
    assert pad_account_2.payment_method == PaymentMethod.PAD.value
    assert pad_account_2.cfs_account_id != pad_account_1.cfs_account_id
Exemple #8
0
def test_update_online_banking_to_credit(session):
    """Assert that update from online banking to credit card works."""
    online_banking_account = PaymentAccountService.create(
        get_basic_account_payload(
            payment_method=PaymentMethod.ONLINE_BANKING.value))
    credit_account = PaymentAccountService.update(
        online_banking_account.auth_account_id, get_basic_account_payload())
    assert credit_account.payment_method == PaymentMethod.DIRECT_PAY.value


@pytest.mark.parametrize('payload', [
    get_basic_account_payload(
        payment_method=PaymentMethod.ONLINE_BANKING.value),
    get_basic_account_payload(),
    get_premium_account_payload(),
    get_pad_account_payload(),
    get_unlinked_pad_account_payload()
])
def test_delete_account(session, payload):
    """Assert that delete payment account works."""
    pay_account: PaymentAccountService = PaymentAccountService.create(payload)
    PaymentAccountService.delete_account(payload.get('accountId'))

    # Try to find the account by id.
    pay_account = PaymentAccountService.find_by_id(pay_account.id)
    for cfs_account in CfsAccountModel.find_by_account_id(pay_account.id):
        assert cfs_account.status == CfsAccountStatus.INACTIVE.value if cfs_account else True


def test_delete_account_failures(session):
Exemple #9
0
    rv = client.post('/api/v1/accounts',
                     data=json.dumps(get_premium_account_payload()),
                     headers=headers)

    auth_account_id = rv.json.get('accountId')

    rv = client.delete(f'/api/v1/accounts/{auth_account_id}', headers=headers)
    assert rv.status_code == 204


@pytest.mark.parametrize(
    'pay_load, is_cfs_account_expected, expected_response_status, roles',
    [(get_unlinked_pad_account_payload(), True, 201,
      [Role.SYSTEM.value, Role.CREATE_SANDBOX_ACCOUNT.value]),
     (get_premium_account_payload(), False, 201,
      [Role.SYSTEM.value, Role.CREATE_SANDBOX_ACCOUNT.value]),
     (get_premium_account_payload(), False, 403, [Role.SYSTEM.value])])
def test_create_sandbox_accounts(session, client, jwt, app, pay_load,
                                 is_cfs_account_expected,
                                 expected_response_status, roles):
    """Assert that the payment records are created with 202."""
    token = jwt.create_jwt(get_claims(roles=roles), token_header)
    headers = {
        'Authorization': f'Bearer {token}',
        'content-type': 'application/json'
    }
    rv = client.post('/api/v1/accounts?sandbox=true',
                     data=json.dumps(pay_load),
                     headers=headers)