def test_process_ar_filing(app, session): """Assert that an AR filling can be applied to the model correctly.""" from entity_filer.worker import process_filing from entity_filer.worker import get_filing_by_payment_id from legal_api.models import Business, Filing # vars payment_id = str(random.SystemRandom().getrandbits(0x58)) identifier = 'CP1234567' agm_date = datetime.date.fromisoformat(AR_FILING['filing']['annualReport'].get('annualGeneralMeetingDate')) ar_date = datetime.date.fromisoformat(COMBINED_FILING['filing']['annualReport'].get('annualReportDate')) # setup business = create_business(identifier) business_id = business.id create_filing(payment_id, AR_FILING, business.id) payment_token = {'paymentToken': {'id': payment_id, 'statusCode': Filing.Status.COMPLETED.value}} # TEST process_filing(payment_token, app) # Get modified data filing = get_filing_by_payment_id(payment_id) business = Business.find_by_internal_id(business_id) # check it out assert filing.transaction_id assert filing.business_id == business_id assert filing.status == Filing.Status.COMPLETED.value assert datetime.datetime.date(business.last_agm_date) == agm_date assert datetime.datetime.date(business.last_ar_date) == ar_date
def test_process_filing_failed(app, session): """Assert that an AR filling status is set to error if payment transaction failed.""" from entity_filer.worker import process_filing from entity_filer.worker import get_filing_by_payment_id from legal_api.models import Business, Filing # vars payment_id = str(random.SystemRandom().getrandbits(0x58)) identifier = 'CP1234567' # setup business = create_business(identifier) business_id = business.id create_filing(payment_id, AR_FILING, business.id) payment_token = { 'paymentToken': { 'id': payment_id, 'statusCode': 'TRANSACTION_FAILED' } } # TEST process_filing(payment_token, app) # Get modified data filing = get_filing_by_payment_id(payment_id) business = Business.find_by_internal_id(business_id) # check it out assert filing.business_id == business_id assert filing.status == Filing.Status.ERROR.value assert not business.last_agm_date assert not business.last_ar_date
def test_get_filing_by_payment_id(app, session): """Assert that a unique filling gets retrieved for a payment_id.""" from entity_filer.worker import get_filing_by_payment_id payment_id = str(random.SystemRandom().getrandbits(0x58)) create_filing(payment_id) filing = get_filing_by_payment_id(str(payment_id)) assert filing assert filing.payment_token == payment_id
async def test_cb_subscription_handler(app, session, stan_server, event_loop, client_id, entity_stan, future): """Assert that payment tokens can be retrieved and decoded from the Queue.""" # Call back for the subscription from entity_filer.worker import cb_subscription_handler from entity_filer.worker import get_filing_by_payment_id from legal_api.models import Business from tests.unit import create_filing, AR_FILING, create_business # vars payment_id = str(random.SystemRandom().getrandbits(0x58)) identifier = 'CP1234567' agm_date = datetime.date.fromisoformat( AR_FILING['filing']['annualReport'].get('annualGeneralMeetingDate')) ar_date = datetime.date.fromisoformat( AR_FILING['filing']['annualReport'].get('annualReportDate')) # setup business = create_business(identifier) business_id = business.id create_filing(payment_id, AR_FILING, business.id) # register the handler to test it entity_subject = await subscribe_to_queue(entity_stan, cb_subscription_handler) # add payment tokens to queue await helper_add_payment_to_queue(entity_stan, entity_subject, payment_id=payment_id, status_code='COMPLETED') try: await asyncio.sleep(1) # await asyncio.wait_for(cb_future, 2, loop=event_loop) except Exception as err: print(err) # Get modified data filing = get_filing_by_payment_id(payment_id) business = Business.find_by_internal_id(business_id) # check it out assert filing.transaction_id assert filing.business_id == business_id assert datetime.datetime.date(business.last_agm_date) == agm_date assert datetime.datetime.date(business.last_ar_date) == ar_date
def test_process_coa_filing(app, session): """Assert that an AR filling can be applied to the model correctly.""" from entity_filer.worker import process_filing from entity_filer.worker import get_filing_by_payment_id from legal_api.models import Business, Filing # vars payment_id = str(random.SystemRandom().getrandbits(0x58)) identifier = 'CP1234567' new_delivery_address = COA_FILING['filing']['changeOfAddress'][ 'deliveryAddress'] new_mailing_address = COA_FILING['filing']['changeOfAddress'][ 'mailingAddress'] # setup business = create_business(identifier) business_id = business.id create_filing(payment_id, COA_FILING, business.id) payment_token = { 'paymentToken': { 'id': payment_id, 'statusCode': Filing.Status.COMPLETED.value } } # TEST process_filing(payment_token, app) # Get modified data filing = get_filing_by_payment_id(payment_id) business = Business.find_by_internal_id(business_id) # check it out assert filing.transaction_id assert filing.business_id == business_id assert filing.status == Filing.Status.COMPLETED.value delivery_address = business.delivery_address.one_or_none().json compare_addresses(delivery_address, new_delivery_address) mailing_address = business.mailing_address.one_or_none().json compare_addresses(mailing_address, new_mailing_address)
def test_process_combined_filing(app, session): """Assert that an AR filling can be applied to the model correctly.""" import copy from legal_api.models import Business, Director, Filing from entity_filer.worker import process_filing from entity_filer.worker import get_filing_by_payment_id # vars payment_id = str(random.SystemRandom().getrandbits(0x58)) identifier = 'CP1234567' agm_date = datetime.date.fromisoformat(COMBINED_FILING['filing']['annualReport'].get('annualGeneralMeetingDate')) ar_date = datetime.date.fromisoformat(COMBINED_FILING['filing']['annualReport'].get('annualReportDate')) new_delivery_address = COMBINED_FILING['filing']['changeOfAddress']['deliveryAddress'] new_mailing_address = COMBINED_FILING['filing']['changeOfAddress']['mailingAddress'] end_date = datetime.datetime.utcnow().date() # prep director for no change filing_data = copy.deepcopy(COMBINED_FILING) director1 = create_director(filing_data['filing']['changeOfDirectors']['directors'][0]) # prep director for name change director2 = filing_data['filing']['changeOfDirectors']['directors'][1] director2['officer']['firstName'] = director2['officer']['prevFirstName'] director2['officer']['middleInitial'] = director2['officer']['prevMiddleInitial'] director2['officer']['lastName'] = director2['officer']['prevLastName'] director2 = create_director(director2) # prep director for cease director3 = create_director(filing_data['filing']['changeOfDirectors']['directors'][2]) director_ceased_id = director3.id # prep director for address change director4 = filing_data['filing']['changeOfDirectors']['directors'][3] director4['deliveryAddress']['streetAddress'] = 'should get changed' director4 = create_director(director4) # list of active/ceased directors in test filing ceased_directors, active_directors = active_ceased_lists(COMBINED_FILING) # setup business = create_business(identifier) business.directors.append(director1) business.directors.append(director2) business.directors.append(director3) business.directors.append(director4) business.save() # check that adding the director during setup was successful directors = Director.get_active_directors(business.id, end_date) assert len(directors) == 4 business_id = business.id create_filing(payment_id, COMBINED_FILING, business.id) payment_token = {'paymentToken': {'id': payment_id, 'statusCode': Filing.Status.COMPLETED.value}} # TEST process_filing(payment_token, app) # Get modified data filing = get_filing_by_payment_id(payment_id) business = Business.find_by_internal_id(business_id) # check it out assert filing.transaction_id assert filing.business_id == business_id assert filing.status == Filing.Status.COMPLETED.value assert datetime.datetime.date(business.last_agm_date) == agm_date assert datetime.datetime.date(business.last_ar_date) == ar_date # check address filing delivery_address = business.delivery_address.one_or_none().json compare_addresses(delivery_address, new_delivery_address) mailing_address = business.mailing_address.one_or_none().json compare_addresses(mailing_address, new_mailing_address) # check director filing directors = Director.get_active_directors(business.id, end_date) check_directors(business, directors, director_ceased_id, ceased_directors, active_directors)
def test_process_cod_mailing_address(app, session): """Assert that an AR filling can be applied to the model correctly.""" import copy from legal_api.models import Business, Director, Filing from entity_filer.worker import process_filing from entity_filer.worker import get_filing_by_payment_id # vars payment_id = str(random.SystemRandom().getrandbits(0x58)) identifier = 'CP1234567' end_date = datetime.datetime.utcnow().date() # prep director for no change filing_data = copy.deepcopy(COD_FILING_TWO_ADDRESSES) # setup business = create_business(identifier) business.save() directors = Director.get_active_directors(business.id, end_date) assert len(directors) == 0 # create filing business_id = business.id filing_data['filing']['changeOfDirectors']['directors'][0]['actions'] = ['appointed'] filing_data['filing']['changeOfDirectors']['directors'][1]['actions'] = ['appointed'] create_filing(payment_id, filing_data, business.id) payment_token = {'paymentToken': {'id': payment_id, 'statusCode': Filing.Status.COMPLETED.value}} # TEST process_filing(payment_token, app) filing = get_filing_by_payment_id(payment_id) business = Business.find_by_internal_id(business_id) directors = Director.get_active_directors(business.id, end_date) has_mailing = list(filter(lambda x: x.mailing_address is not None, directors)) no_mailing = list(filter(lambda x: x.mailing_address is None, directors)) assert len(has_mailing) == 1 assert has_mailing[0].mailing_address.street == 'test mailing 1' assert no_mailing[0].mailing_address is None # Add/update mailing address to a director del filing_data['filing']['changeOfDirectors']['directors'][0] filing_data['filing']['changeOfDirectors']['directors'][0]['actions'] = ['addressChanged'] mailing_address = { 'streetAddress': 'test mailing 2', 'streetAddressAdditional': 'test line 1', 'addressCity': 'testcity', 'addressCountry': 'Canada', 'addressRegion': 'BC', 'postalCode': 'T3S T3R', 'deliveryInstructions': 'director1' } filing_data['filing']['changeOfDirectors']['directors'][0]['mailingAddress'] = mailing_address payment_id = str(random.SystemRandom().getrandbits(0x58)) create_filing(payment_id, filing_data, business.id) payment_token = {'paymentToken': {'id': payment_id, 'statusCode': Filing.Status.COMPLETED.value}} process_filing(payment_token, app) filing = get_filing_by_payment_id(payment_id) business = Business.find_by_internal_id(business_id) directors = Director.get_active_directors(business.id, end_date) # Get modified data filing = get_filing_by_payment_id(payment_id) business = Business.find_by_internal_id(business_id) # check it out assert len(list(filter(lambda x: x.mailing_address is not None, directors))) == 2 assert filing.transaction_id assert filing.business_id == business_id assert filing.status == Filing.Status.COMPLETED.value directors = Director.get_active_directors(business.id, end_date)