def test_get_distribution(session, client, jwt, app): """Assert that the endpoint returns 200.""" # Insert a record first and then query for it token = jwt.create_jwt(get_claims(role=Role.STAFF_ADMIN.value), token_header) headers = {'Authorization': f'Bearer {token}', 'content-type': 'application/json'} rv = client.post('/api/v1/fees/distributions', data=json.dumps(get_distribution_code_payload()), headers=headers) assert rv.status_code == 201 distribution_id = rv.json.get('distributionCodeId') rv = client.get(f'/api/v1/fees/distributions/{distribution_id}', headers=headers) assert rv.json.get('client') == get_distribution_code_payload().get('client')
def test_put_distribution_updates_invoice_status(session, client, jwt, app): """Assert that updating an existing fee distribution will update the invoice status.""" # Insert a record first and then query for it token = jwt.create_jwt(get_claims(role=Role.STAFF_ADMIN.value), token_header) headers = {'Authorization': f'Bearer {token}', 'content-type': 'application/json'} rv = client.post('/api/v1/fees/distributions', data=json.dumps(get_distribution_code_payload()), headers=headers) distribution_id = rv.json.get('distributionCodeId') rv = client.put(f'/api/v1/fees/distributions/{distribution_id}', data=json.dumps(get_distribution_code_payload(client='200')), headers=headers) assert rv.json.get('client') == '200'
def test_get_payment_system_url_service_fees(session, public_user_mock): """Assert that the url returned is correct.""" today = current_local_time().strftime(PAYBC_DATE_FORMAT) payment_account = factory_payment_account() payment = factory_payment() payment_account.save() payment.save() invoice = factory_invoice(payment_account) invoice.save() invoice_ref = factory_invoice_reference(invoice.id).save() fee_schedule = FeeSchedule.find_by_filing_type_and_corp_type('CP', 'OTANN') distribution_code = DistributionCodeModel.find_by_active_for_fee_schedule(fee_schedule.fee_schedule_id) distribution_code_svc = DistributionCode() distribution_code_payload = get_distribution_code_payload() # Set service fee distribution distribution_code_payload.update({'serviceFeeDistributionCodeId': distribution_code.distribution_code_id}) # update the existing gl code with new values distribution_code_svc.save_or_update(distribution_code_payload, distribution_code.distribution_code_id) service_fee = 100 line = factory_payment_line_item(invoice.id, fee_schedule_id=fee_schedule.fee_schedule_id, service_fees=service_fee) line.save() direct_pay_service = DirectPayService() payment_response_url = direct_pay_service.get_payment_system_url_for_invoice(invoice, invoice_ref, 'google.com') url_param_dict = dict(urllib.parse.parse_qsl(urllib.parse.urlsplit(payment_response_url).query)) assert url_param_dict['trnDate'] == today assert url_param_dict['glDate'] == today assert url_param_dict['description'] == 'Direct_Sale' assert url_param_dict['pbcRefNumber'] == current_app.config.get('PAYBC_DIRECT_PAY_REF_NUMBER') assert url_param_dict['trnNumber'] == generate_transaction_number(invoice.id) assert url_param_dict['trnAmount'] == str(invoice.total) assert url_param_dict['paymentMethod'] == 'CC' assert url_param_dict['redirectUri'] == 'google.com' revenue_str = f"1:{distribution_code_payload['client']}." \ f"{distribution_code_payload['responsibilityCentre']}." \ f"{distribution_code_payload['serviceLine']}." \ f"{distribution_code_payload['stob']}." \ f"{distribution_code_payload['projectCode']}." \ f'000000.0000:10.00' revenue_str_service_fee = f"2:{distribution_code_payload['client']}." \ f"{distribution_code_payload['responsibilityCentre']}." \ f"{distribution_code_payload['serviceLine']}." \ f"{distribution_code_payload['stob']}." \ f"{distribution_code_payload['projectCode']}." \ f'000000.0000:{format(service_fee, DECIMAL_PRECISION)}' assert url_param_dict['revenue'] == f'{revenue_str}|{revenue_str_service_fee}' urlstring = f"trnDate={today}&pbcRefNumber={current_app.config.get('PAYBC_DIRECT_PAY_REF_NUMBER')}&" \ f'glDate={today}&description=Direct_Sale&' \ f'trnNumber={generate_transaction_number(invoice.id)}&' \ f'trnAmount={invoice.total}&' \ f'paymentMethod=CC&' \ f'redirectUri=google.com&' \ f'currency=CAD&' \ f'revenue={revenue_str}|' \ f'{revenue_str_service_fee}' expected_hash_str = HashingService.encode(urlstring) assert expected_hash_str == url_param_dict['hashValue']
def test_distribution_code_saved_from_new(session, public_user_mock): """Assert that the fee schedule is saved to the table.""" distribution_code_svc = services.DistributionCode() distribution_code = distribution_code_svc.save_or_update( get_distribution_code_payload()) assert distribution_code is not None assert distribution_code.get('client') == '100'
def test_create_distribution_with_unauthorized_token(session, client, jwt, app): """Assert that the endpoint returns 401.""" # Insert a record first and then query for it token = jwt.create_jwt(get_claims(role=Role.STAFF.value), token_header) headers = {'Authorization': f'Bearer {token}', 'content-type': 'application/json'} rv = client.post('/api/v1/fees/distributions', data=json.dumps(get_distribution_code_payload()), headers=headers) assert rv.status_code == 401
def test_create_distribution_to_fee_link(session, public_user_mock): """Assert that the fee schedule is saved to the table.""" distribution_code_svc = services.DistributionCode() distribution_code = distribution_code_svc.save_or_update( get_distribution_code_payload()) assert distribution_code is not None distribution_id = distribution_code.get('distribution_code_id') distribution_code_svc.create_link([{ 'feeScheduleId': 1 }, { 'feeScheduleId': 2 }, { 'feeScheduleId': 3 }], distribution_id) schedules = distribution_code_svc.find_fee_schedules_by_distribution_id( distribution_id) assert len(schedules.get('items')) == 3