Example #1
0
def test_schema_0_2_basic_1():

    cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-",
                                        dir=tempfile.gettempdir())
    json_filename = os.path.join(
        os.path.dirname(os.path.realpath(__file__)),
        "fixtures",
        "0.2",
        "pep_status_1.json",
    )

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results["schema_version"] == "0.2"
    assert results["statistics"][
        "count_person_statements_have_pep_status"] == 1
    # We want to test the dict has the correct keys!
    # So these tests are deliberately written so they will error if the specified key is not in that dict
    assert (results["statistics"]
            ["count_person_statements_have_pep_status_statuses"]["isPep"] == 1)
    assert (
        results["statistics"]
        ["count_person_statements_have_pep_status_statuses"]["isNotPep"] == 0)

    assert results["additional_checks_count"] == 0
Example #2
0
def test_schema_0_2_pep_details_no_missing_info_but_incorrect_status_1():

    cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-",
                                        dir=tempfile.gettempdir())
    json_filename = os.path.join(
        os.path.dirname(os.path.realpath(__file__)),
        "fixtures",
        "0.2",
        "pep_details_no_missing_info_but_incorrect_status_1.json",
    )

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results["schema_version"] == "0.2"
    assert results["statistics"][
        "count_person_statements_have_pep_status"] == 1
    # We want to test the dict has the correct keys!
    # So these tests are deliberately written so they will error if the specified key is not in that dict
    assert (results["statistics"]
            ["count_person_statements_have_pep_status_statuses"]["isPep"] == 0)
    assert (
        results["statistics"]
        ["count_person_statements_have_pep_status_statuses"]["isNotPep"] == 1)

    assert results["additional_checks_count"] == 1
    assert (results["additional_checks"][0]["type"] ==
            "has_pep_details_without_missing_info_but_incorrect_pep_status")
    assert results["additional_checks"][0]["statement_type"] == "person"
    assert (results["additional_checks"][0]["statement"] ==
            "a5680770-899f-4f7a-b795-e266f1ce8668")
Example #3
0
def test_schema_0_3_pep_details_but_incorrect_status_2():
    cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-",
                                        dir=tempfile.gettempdir())
    json_filename = os.path.join(
        os.path.dirname(os.path.realpath(__file__)),
        "fixtures",
        "0.3",
        "pep_details_but_incorrect_status_2.json",
    )

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results["schema_version"] == "0.3"
    assert results["statistics"][
        "count_person_statements_have_pep_status"] == 0
    # We want to test the dict has the correct keys!
    # So these tests are deliberately written so they will error if the specified key is not in that dict
    assert (results["statistics"]
            ["count_person_statements_have_pep_status_statuses"]["isPep"] == 0)
    assert (
        results["statistics"]
        ["count_person_statements_have_pep_status_statuses"]["isNotPep"] == 0)
    assert (
        results["statistics"]
        ["count_person_statements_have_pep_status_statuses"]["unknown"] == 0)

    assert results["additional_checks_count"] == 1
    assert (results["additional_checks"][0]["type"] ==
            "has_pep_details_but_incorrect_pep_status")
    assert results["additional_checks"][0]["statement_type"] == "person"
    assert (results["additional_checks"][0]["statement"] ==
            "019a93f1-e470-42e9-957b-03559861b2e2")
def test_basic_with_operating_mic_code_missing_1():

    cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-",
                                        dir=tempfile.gettempdir())
    json_filename = os.path.join(
        os.path.dirname(os.path.realpath(__file__)),
        "fixtures",
        "0.3",
        "basic_with_operating_mic_code_missing_1.json",
    )

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results["schema_version"] == "0.3"
    assert results["validation_errors_count"] == 0
    assert results["additional_fields_count"] == 0

    assert results["additional_checks_count"] == 1
    assert (
        results["additional_checks"][0]["type"] ==
        "entity_security_listing_market_identifier_code_set_but_not_operating_market_identifier_code"
    )
    assert results["additional_checks"][0]["statement_type"] == "entity"
    assert (results["additional_checks"][0]["statement"] ==
            "1dc0e987-5c57-4a1c-b3ad-61353b66a9b7")
def test_dict_then_0_2():

    cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-",
                                        dir=tempfile.gettempdir())
    json_filename = os.path.join(
        os.path.dirname(os.path.realpath(__file__)),
        "fixtures",
        "mixed",
        "dict_then_0.2.json",
    )

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results["schema_version"] == "0.3"

    assert results["additional_checks_count"] == 2

    assert results["additional_checks"][0][
        "type"] == "unknown_schema_version_used"
    assert results["additional_checks"][0]["schema_version"] == "{}"

    assert results["additional_checks"][1][
        "type"] == "inconsistent_schema_version_used"
    assert (results["additional_checks"][1]["statement"] ==
            "fbfd0547-d0c6-4a00-b559-5c5e91c34f5c")
    assert results["additional_checks"][1][
        "statement_type"] == "ownership_or_control"
    assert results["additional_checks"][1]["schema_version"] == "0.2"
def test_schema_0_3_basic_1():

    cove_temp_folder = tempfile.mkdtemp(
        prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir()
    )
    json_filename = os.path.join(
        os.path.dirname(os.path.realpath(__file__)), "fixtures", "0.3", "basic_1.json"
    )

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results["schema_version"] == "0.3"

    # We want to test the dict has the correct keys!
    # So these tests are deliberately written so they will error if the specified key is not in that dict
    assert (
        1
        == results["statistics"][
            "count_ownership_or_control_statement_interest_direct_or_indirect"
        ]["direct"]
    )
    assert (
        0
        == results["statistics"][
            "count_ownership_or_control_statement_interest_direct_or_indirect"
        ]["indirect"]
    )
    assert (
        0
        == results["statistics"][
            "count_ownership_or_control_statement_interest_direct_or_indirect"
        ]["unknown"]
    )
Example #7
0
def test_schema_0_1():

    cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-",
                                        dir=tempfile.gettempdir())
    json_filename = os.path.join(os.path.dirname(os.path.realpath(__file__)),
                                 "fixtures", "0.1", "basic_1.json")

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results["schema_version"] == "0.1"

    # Schema v0.1 and Schema v0.2 have different enum options, make sure that is reflected in data
    keys = results["statistics"][
        "count_ownership_or_control_statement_interest_statement_types"].keys(
        )
    assert 12 == len(keys)

    # We want to test the dict has the correct keys!
    # So these tests are deliberately written so they will error if the specified key is not in that dict
    assert (1 == results["statistics"]
            ["count_ownership_or_control_statement_interest_statement_types"]
            ["shareholding"])
    assert (0 == results["statistics"]
            ["count_ownership_or_control_statement_interest_statement_types"]
            ["voting-rights"])
    assert (0 == results["statistics"]
            ["count_ownership_or_control_statement_interest_statement_types"]
            ["appointment-of-board"])  # noqa
    assert (0 == results["statistics"]
            ["count_ownership_or_control_statement_interest_statement_types"]
            ["influence-or-control"])  # noqa
    assert (0 == results["statistics"]
            ["count_ownership_or_control_statement_interest_statement_types"]
            ["senior-managing-official"])  # noqa
    assert (0 == results["statistics"]
            ["count_ownership_or_control_statement_interest_statement_types"]
            ["settlor-of-trust"])  # noqa
    assert (0 == results["statistics"]
            ["count_ownership_or_control_statement_interest_statement_types"]
            ["trustee-of-trust"])  # noqa
    assert (0 == results["statistics"]
            ["count_ownership_or_control_statement_interest_statement_types"]
            ["protector-of-trust"])  # noqa
    assert (0 == results["statistics"]
            ["count_ownership_or_control_statement_interest_statement_types"]
            ["beneficiary-of-trust"])  # noqa
    assert (0 == results["statistics"]
            ["count_ownership_or_control_statement_interest_statement_types"]
            ["other-influence-or-control-of-trust"])  # noqa
    assert (0 == results["statistics"]
            ["count_ownership_or_control_statement_interest_statement_types"]
            ["rights-to-surplus-assets"])  # noqa
    assert (0 == results["statistics"]
            ["count_ownership_or_control_statement_interest_statement_types"]
            ["rights-to-profit-or-income"])  # noqa
def test_basic_1():

    cove_temp_folder = tempfile.mkdtemp(prefix='lib-cove-bods-tests-', dir=tempfile.gettempdir())
    json_filename = os.path.join(os.path.dirname(
        os.path.realpath(__file__)), 'fixtures', 'api', 'basic_1.json'
    )

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results['validation_errors_count'] == 0
    assert results['additional_fields_count'] == 0
    assert results['file_type'] == 'json'
def test_basic_1():

    cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-",
                                        dir=tempfile.gettempdir())
    json_filename = os.path.join(os.path.dirname(os.path.realpath(__file__)),
                                 "fixtures", "0.3", "basic_1.json")

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results["schema_version"] == "0.3"
    assert results["validation_errors_count"] == 0
    assert results["additional_fields_count"] == 0
    assert results["additional_checks_count"] == 0
Example #10
0
def test_not_in_old_schema():

    cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-",
                                        dir=tempfile.gettempdir())
    json_filename = os.path.join(os.path.dirname(os.path.realpath(__file__)),
                                 "fixtures", "0.1", "basic_1.json")

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results["schema_version"] == "0.1"
    assert "count_person_statements_have_pep_status" not in results[
        "statistics"]
    assert results["additional_checks_count"] == 0
Example #11
0
def test_schema_0_2():

    cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-",
                                        dir=tempfile.gettempdir())
    json_filename = os.path.join(os.path.dirname(os.path.realpath(__file__)),
                                 "fixtures", "0.2", "basic_1.json")

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results["schema_version"] == "0.2"

    assert (1 == results["statistics"][
        "count_ownership_or_control_statement_with_at_least_one_interest_beneficial"]
            )
def test_basic_missing_statement_ids():

    cove_temp_folder = tempfile.mkdtemp(prefix='lib-cove-bods-tests-', dir=tempfile.gettempdir())
    json_filename = os.path.join(os.path.dirname(
        os.path.realpath(__file__)), 'fixtures', 'api', 'basic_missing_statement_ids.json'
    )

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results['file_type'] == 'json'
    assert results['validation_errors_count'] == 3
    assert results['additional_fields_count'] == 0

    for validation_error, data in results['validation_errors']:
        validation_error_data = json.loads(validation_error)
        assert 'is not valid under any of the given schemas' in validation_error_data['message']
def test_person_address_alternative_and_other_1():
    """This has an alternative and another address, which is fine"""

    cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-",
                                        dir=tempfile.gettempdir())
    json_filename = os.path.join(
        os.path.dirname(os.path.realpath(__file__)),
        "fixtures",
        "0.2",
        "person_address_alternative_and_other_1.json",
    )

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results["schema_version"] == "0.2"
    assert results["additional_checks_count"] == 0
def test_schema_0_2():

    cove_temp_folder = tempfile.mkdtemp(
        prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir()
    )
    json_filename = os.path.join(
        os.path.dirname(os.path.realpath(__file__)), "fixtures", "0.2", "basic_1.json"
    )

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results["schema_version"] == "0.2"

    # Schema v0.1 and Schema v0.2 do not have this stat at all.
    assert (
        "count_ownership_or_control_statement_interest_direct_or_indirect"
        not in results["statistics"].keys()
    )
Example #15
0
def test_iscompontent_os_03_dr_03():
    """This is a piece of sample data direct from the schema with iscomponent / componentStatementIDs data.
    Make sure it passes all our tests"""

    cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-",
                                        dir=tempfile.gettempdir())
    json_filename = os.path.join(
        os.path.dirname(os.path.realpath(__file__)),
        "fixtures",
        "0.2",
        "iscompontent-os-03-dr-03.json",
    )

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results["schema_version"] == "0.2"
    assert results["validation_errors_count"] == 0
    assert results["additional_fields_count"] == 0
    assert results["additional_checks_count"] == 0
Example #16
0
def test_basic_address_with_postcode_in_address_1():

    cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-",
                                        dir=tempfile.gettempdir())
    json_filename = os.path.join(
        os.path.dirname(os.path.realpath(__file__)),
        "fixtures",
        "0.1",
        "basic_address_with_postcode_in_address_1.json",
    )

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results["schema_version"] == "0.1"

    assert results["statistics"]["count_addresses"] == 1
    assert results["statistics"]["count_addresses_with_postcode"] == 1
    assert results["statistics"]["count_addresses_with_country"] == 0
    assert (results["statistics"]
            ["count_addresses_with_postcode_duplicated_in_address"] == 1)
Example #17
0
def test_bad_statement_id_type():

    cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-",
                                        dir=tempfile.gettempdir())
    json_filename = os.path.join(
        os.path.dirname(os.path.realpath(__file__)),
        "fixtures",
        "0.2",
        "bad_statement_id_type.json",
    )

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results["schema_version"] == "0.2"
    assert results["validation_errors_count"] == 1
    validation_error = json.loads(results["validation_errors"][0][0])
    assert validation_error["message"].startswith(
        "'statementID' should be a string.")
    assert results["additional_fields_count"] == 0
    assert results["additional_checks_count"] == 0
Example #18
0
def test_schema_0_1_file_1():

    cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-",
                                        dir=tempfile.gettempdir())
    json_filename = os.path.join(
        os.path.dirname(os.path.realpath(__file__)),
        "fixtures",
        "0.1",
        "beneficialOwnershipOrControl_but_unspecified_person_1.json",
    )

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results["schema_version"] == "0.1"

    assert results["validation_errors_count"] == 0
    assert results["additional_checks_count"] == 1
    assert (
        results["additional_checks"][0]["type"] ==
        "statement_is_beneficialOwnershipOrControl_but_no_person_specified")
def test_entity_only_alternative_1():

    cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-",
                                        dir=tempfile.gettempdir())
    json_filename = os.path.join(
        os.path.dirname(os.path.realpath(__file__)),
        "fixtures",
        "0.2",
        "entity_address_only_alternative_1.json",
    )

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results["schema_version"] == "0.2"
    assert results["additional_checks_count"] == 1

    assert (results["additional_checks"][0]["type"] ==
            "alternative_address_with_no_other_address_types")
    assert (results["additional_checks"][0]["statement"] ==
            "1dc0e987-5c57-4a1c-b3ad-61353b66a9b7")
    assert results["additional_checks"][0]["statement_type"] == "entity"
def test_person_only_alternative_1():

    cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-",
                                        dir=tempfile.gettempdir())
    json_filename = os.path.join(
        os.path.dirname(os.path.realpath(__file__)),
        "fixtures",
        "0.2",
        "person_address_only_alternative_1.json",
    )

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results["schema_version"] == "0.2"
    assert results["additional_checks_count"] == 1

    assert (results["additional_checks"][0]["type"] ==
            "alternative_address_with_no_other_address_types")
    assert (results["additional_checks"][0]["statement"] ==
            "019a93f1-e470-42e9-957b-03559861b2e2")
    assert results["additional_checks"][0]["statement_type"] == "person"
def test_entity_sub_type_does_not_align_1():

    cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-",
                                        dir=tempfile.gettempdir())
    json_filename = os.path.join(
        os.path.dirname(os.path.realpath(__file__)),
        "fixtures",
        "0.3",
        "entity_sub_type_does_not_align_1.json",
    )

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results["schema_version"] == "0.3"
    assert results["validation_errors_count"] == 0
    assert results["additional_fields_count"] == 0

    assert results["additional_checks_count"] == 1
    assert (results["additional_checks"][0]["type"] ==
            "statement_entity_type_and_entity_sub_type_do_not_align")
    assert (results["additional_checks"][0]["statement"] ==
            "1dc0e987-5c57-4a1c-b3ad-61353b66a9b7")
def test_has_public_listing_information_but_has_public_listing_is_false_1():

    cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-",
                                        dir=tempfile.gettempdir())
    json_filename = os.path.join(
        os.path.dirname(os.path.realpath(__file__)),
        "fixtures",
        "0.3",
        "has_public_listing_information_but_has_public_listing_is_false_1.json",
    )

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results["schema_version"] == "0.3"
    assert results["validation_errors_count"] == 0
    assert results["additional_fields_count"] == 0

    assert results["additional_checks_count"] == 1
    assert (results["additional_checks"][0]["type"] ==
            "has_public_listing_information_but_has_public_listing_is_false")
    assert (results["additional_checks"][0]["statement"] ==
            "1dc0e987-5c57-4a1c-b3ad-61353b66a9b7")
def test_0_1_then_0_2():

    cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-",
                                        dir=tempfile.gettempdir())
    json_filename = os.path.join(
        os.path.dirname(os.path.realpath(__file__)),
        "fixtures",
        "mixed",
        "0.1_then_0.2.json",
    )

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results["schema_version"] == "0.1"
    assert results["additional_checks_count"] == 1

    assert results["additional_checks"][0][
        "type"] == "inconsistent_schema_version_used"
    assert (results["additional_checks"][0]["statement"] ==
            "019a93f1-e470-42e9-957b-03559861b2e2")
    assert results["additional_checks"][0]["statement_type"] == "person"
    assert results["additional_checks"][0]["schema_version"] == "0.2"
def test_iscomponent_true_but_has_component_statement_ids_1():

    cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-",
                                        dir=tempfile.gettempdir())
    json_filename = os.path.join(
        os.path.dirname(os.path.realpath(__file__)),
        "fixtures",
        "0.2",
        "iscomponent_true_but_has_component_statement_ids_1.json",
    )

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results["schema_version"] == "0.2"
    assert results["additional_checks_count"] == 1

    assert (
        results["additional_checks"][0]["type"] ==
        "ownership_or_control_statement_has_is_compontent_and_component_statement_ids"
    )  # noqa
    assert (results["additional_checks"][0]["statement"] ==
            "12340547-d0c6-4a00-b559-5c5e91c34f5d")
def test_statement_is_component_but_is_not_used_1():

    cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-",
                                        dir=tempfile.gettempdir())
    json_filename = os.path.join(
        os.path.dirname(os.path.realpath(__file__)),
        "fixtures",
        "0.2",
        "statement_is_component_but_is_not_used_1.json",
    )

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results["schema_version"] == "0.2"
    assert results["additional_checks_count"] == 1

    assert (results["additional_checks"][0]["type"] ==
            "statement_is_component_but_not_used_in_component_statement_ids")
    assert (results["additional_checks"][0]["statement"] ==
            "426b7dc8-8b7a-4d50-93de-8e200a4aedf5")
    assert results["additional_checks"][0][
        "statement_type"] == "ownership_or_control"
def test_statement_is_component_but_is_used_in_the_wrong_order_1():

    cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-",
                                        dir=tempfile.gettempdir())
    json_filename = os.path.join(
        os.path.dirname(os.path.realpath(__file__)),
        "fixtures",
        "0.2",
        "statement_is_component_but_is_used_in_the_wrong_order_1.json",
    )

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results["schema_version"] == "0.2"
    assert results["additional_checks_count"] == 1

    assert (results["additional_checks"][0]["type"] ==
            "statement_is_component_but_is_after_use_in_component_statement_id"
            )  # noqa
    assert (results["additional_checks"][0]["statement"] ==
            "24e604f2-790f-4600-8ff2-7fd8e46f047e")
    assert results["additional_checks"][0][
        "statement_type"] == "ownership_or_control"
def test_component_statement_ids_not_in_package_1():

    cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-",
                                        dir=tempfile.gettempdir())
    json_filename = os.path.join(
        os.path.dirname(os.path.realpath(__file__)),
        "fixtures",
        "0.2",
        "component_statement_ids_not_in_package_1.json",
    )

    results = bods_json_output(cove_temp_folder, json_filename)

    assert results["schema_version"] == "0.2"
    assert results["additional_checks_count"] == 1

    assert (results["additional_checks"][0]["type"] ==
            "component_statement_id_not_in_package")
    assert (results["additional_checks"][0]
            ["seen_in_ownership_or_control_statement"] ==
            "fbfd0547-d0c6-4a00-b559-5c5e91c34f5c")  # noqa
    assert (results["additional_checks"][0]["component_statement_id"] ==
            "000a00a0-a000-00a0-000a-00000000a0a0")