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
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
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
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
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):
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)