Example #1
0
def test_post_ar_not_paid_filing_to_a_business(session, client):
    """Assert that a unpaid filing can be posted."""
    identifier = 'CP7654321'
    factory_business(identifier)

    rv = client.post(f'/api/v1/businesses/{identifier}/filings',
                     json=AR_FILING)

    assert rv.status_code == HTTPStatus.CREATED
    assert rv.json == AR_FILING
Example #2
0
def test_post_empty_ar_filing_to_a_business(session, client):
    """Assert that an empty filing cannot be posted."""
    identifier = 'CP7654321'
    factory_business(identifier)

    rv = client.post(f'/api/v1/businesses/{identifier}/filings', json=None)

    assert rv.status_code == HTTPStatus.BAD_REQUEST
    assert rv.json == {
        'message': f'No filing json data in body of post for {identifier}.'
    }
Example #3
0
def test_post_ar_paid_filing_to_a_business(session, client):
    """Assert that a paid filing can be posted."""
    import copy
    identifier = 'CP7654321'
    factory_business(identifier)
    ar = copy.deepcopy(AR_FILING)
    ar['filing']['header']['paymentToken'] = 'token'

    rv = client.post(f'/api/v1/businesses/{identifier}/filings', json=ar)

    assert rv.status_code == HTTPStatus.CREATED
    assert rv.json == ar
Example #4
0
def test_post_ar_paid_invalid_filing_to_a_business(session, client):
    """Assert that a paid filing can be posted."""
    import copy
    identifier = 'CP7654321'
    factory_business(identifier)
    ar = copy.deepcopy(AR_FILING)
    ar['filing']['header']['paymentToken'] = 'token'
    ar['filing'].pop('business')

    rv = client.post(f'/api/v1/businesses/{identifier}/filings', json=ar)

    assert rv.status_code == HTTPStatus.UNPROCESSABLE_ENTITY
    assert rv.json['message'].startswith('Invalid filing:')
Example #5
0
def test_update_ar_with_missing_json_body_fails(session, client):
    """Assert that updating a filing with no JSON body fails."""
    identifier = 'CP7654321'
    b = factory_business(identifier)
    filings = factory_filing(b, AR_FILING)

    rv = client.put(f'/api/v1/businesses/{identifier}/filings/{filings.id+1}',
                    json=None)

    assert rv.status_code == HTTPStatus.BAD_REQUEST
    assert rv.json == {
        'message': f'No filing json data in body of post for {identifier}.'
    }
Example #6
0
def test_get_all_business_filings_only_one_in_ledger(session, client):
    """Assert that the business info can be received in a valid JSONSchema format."""
    identifier = 'CP7654321'
    b = factory_business(identifier)
    filings = factory_filing(b, AR_FILING)

    print('test_get_all_business_filings - filing:', filings)

    rv = client.get(f'/api/v1/businesses/{identifier}/filings')

    assert rv.status_code == 200
    assert len(rv.json.get('filings')) == 1
    assert rv.json.get('filings')[0].get('jsonSubmission') == AR_FILING
Example #7
0
def test_get_one_business_filing_by_id(session, client):
    """Assert that the business info cannot be received in a valid JSONSchema format."""
    identifier = 'CP7654321'
    b = factory_business(identifier)
    filings = factory_filing(b, AR_FILING)

    print('test_get_one_business_filing - filing:', filings)

    print(f'/api/v1/businesses/{identifier}/filings/{filings.id}')

    rv = client.get(f'/api/v1/businesses/{identifier}/filings/{filings.id}')

    assert rv.status_code == 200
    assert rv.json == AR_FILING
Example #8
0
def test_update_ar_with_a_missing_filing_id_fails(session, client):
    """Assert that updating a missing filing fails."""
    import copy
    identifier = 'CP7654321'
    b = factory_business(identifier)
    filings = factory_filing(b, AR_FILING)
    ar = copy.deepcopy(AR_FILING)
    ar['filing']['header']['paymentToken'] = 'token'

    rv = client.put(f'/api/v1/businesses/{identifier}/filings/{filings.id+1}',
                    json=ar)

    assert rv.status_code == HTTPStatus.NOT_FOUND
    assert rv.json == {'message': f'{identifier} no filings found'}
Example #9
0
def test_update_ar_to_paid_filing_to_a_business(session, client):
    """Assert that a valid filing can be updated to a paid filing."""
    import copy
    identifier = 'CP7654321'
    b = factory_business(identifier)
    filings = factory_filing(b, AR_FILING)
    ar = copy.deepcopy(AR_FILING)
    ar['filing']['header']['paymentToken'] = 'token'

    rv = client.put(f'/api/v1/businesses/{identifier}/filings/{filings.id}',
                    json=ar)

    assert rv.status_code == HTTPStatus.ACCEPTED
    assert rv.json == ar
Example #10
0
def test_post_invalid_filing_id(session, client):
    """Assert that a filing cannot be created against a given filing_id."""
    identifier = 'CP7654321'
    b = factory_business(identifier)
    filings = factory_filing(b, AR_FILING)

    rv = client.post(f'/api/v1/businesses/{identifier}/filings/{filings.id}',
                     json=AR_FILING)

    assert rv.status_code == HTTPStatus.FORBIDDEN
    assert rv.json == {
        'message':
        f'Illegal to attempt to create a new filing over an existing filing for {identifier}.'
    }
Example #11
0
def test_update_block_ar_update_to_a_paid_filing_to_a_business(
        session, client):
    """Assert that a valid filing can NOT be updated once it has been paid."""
    import copy
    identifier = 'CP7654321'
    b = factory_business(identifier)
    ar = copy.deepcopy(AR_FILING)
    ar['filing']['header']['paymentToken'] = 'token'
    filings = factory_filing(b, ar)

    ar['filing']['header'].pop('paymentToken', None)

    rv = client.put(f'/api/v1/businesses/{identifier}/filings/{filings.id}',
                    json=ar)

    assert rv.status_code == HTTPStatus.FORBIDDEN
    assert rv.json == {
        'message':
        'Filings cannot be changed after they are paid for and stored.'
    }
Example #12
0
def test_get_all_business_filings_multi_in_ledger(session, client):
    """Assert that the business info can be received in a valid JSONSchema format."""
    import copy
    from tests import add_years

    ar = copy.deepcopy(AR_FILING)
    identifier = 'CP7654321'

    # create business
    b = factory_business(identifier)

    # add 3 filings, add a year onto the AGM date
    for i in range(0, 3):
        ar['filing']['annualReport']['annualGeneralMeetingDate'] = \
            datetime.date(add_years(datetime(2001, 8, 5, 7, 7, 58, 272362), i)).isoformat()
        factory_filing(b, ar)

    rv = client.get(f'/api/v1/businesses/{identifier}/filings')

    assert rv.status_code == 200
    assert len(rv.json.get('filings')) == 3