예제 #1
0
def test_people_import_dependency_collection_validation(client, app, capsys):
    with app.app_context():
        purge_and_import_collection('people', '{}/people.json'.format(root))
        captured = capsys.readouterr()
        assert 'Dependency collection \'fruits\' empty' in captured.out
        assert 'Dependency collection \'vegetables\' empty' in captured.out
        assert 'Dependency collection \'companies\' empty' in captured.out
예제 #2
0
def test_collection_name(client, app, capsys):
    with app.app_context():
        purge_and_import_collection('wrong_collection', '/some_path')
        collections = '\'companies\', \'people\', \'fruits\', \'vegetables\''
        expected = 'ERROR: Invalid collection name. Should be one of the following: [{}]'.format(
            collections)
        captured = capsys.readouterr()
        assert expected in captured.out
예제 #3
0
def test_companies_data_sanitization(client, app, capsys):
    with app.app_context():
        purge_and_import_collection(
            'companies', '{}/extra_fields_wrong_companies_2.json'.format(root))
        captured = capsys.readouterr()
        assert 'Success' in captured.out
        company = get_item_from_collection_by_field('companies', 'index', 1)
        assert 'extra_field' not in company
예제 #4
0
def test_companies_schema_error_validation(client, app, capsys):
    with app.app_context():
        purge_and_import_collection('companies',
                                    '{}/wrong_companies_1.json'.format(root))
        captured = capsys.readouterr()
        assert ' Unknown Index: index field not present in the JSON description' in captured.out
        assert '" \'hello string\': \'index\' value not a number"' in captured.out
        assert ' 2: company field not present in the JSON description' in captured.out
예제 #5
0
def test_companies_successful_data_import(client, app, capsys):
    with app.app_context():
        purge_and_import_collection('companies',
                                    '{}/companies.json'.format(root))
        captured = capsys.readouterr()
        assert 'Success' in captured.out
        company = get_item_from_collection_by_field('companies', 'index', 92)
        assert company['index'] == 92
        assert company['company'] == "SUNCLIPSE"
예제 #6
0
def test_get_wrong_company_index(client, app, capsys):
    with app.app_context():
        purge_and_import_collection('companies', '{}/companies.json'.format(root))
        captured = capsys.readouterr()
        assert 'Success' in captured.out
        company = get_item_from_collection_by_field('companies', 'index', 92)
        assert company['index'] == 92
        assert company['company'] == "SUNCLIPSE"

        resp = client.get('/api/v1/companies/1', headers={'Accept': 'application/json'})
        assert 404 == resp.status_code
예제 #7
0
def test_get_company_no_employees(client, app, capsys):
    with app.app_context():
        purge_and_import_collection('companies', '{}/companies.json'.format(root))
        captured = capsys.readouterr()
        assert 'Success' in captured.out
        company = get_item_from_collection_by_field('companies', 'index', 92)
        assert company['index'] == 92
        assert company['company'] == "SUNCLIPSE"

        resp = client.get('/api/v1/companies/92/employees', headers={'Accept': 'application/json'})
        assert 404 == resp.status_code
        resp_data = json.loads(resp.data.decode('utf-8'))
        assert resp_data['error']['error_msg'] == 'Company 92 has no employees'
예제 #8
0
def test_get_common_special_friends(client, app, capsys):
    with app.app_context():
        purge_and_import_collection('companies',
                                    '{}/companies.json'.format(root))
        purge_and_import_collection('fruits', '{}/fruits.json'.format(root))
        purge_and_import_collection('vegetables',
                                    '{}/vegetables.json'.format(root))
        purge_and_import_collection('people', '{}/people.json'.format(root))
        captured = capsys.readouterr()
        assert 'Success' in captured.out
        resp = client.get(
            '/api/v1/people/special_friends?person_1={}&person_2={}'.format(
                1, 2),
            headers={'Accept': 'application/json'})
        assert 200 == resp.status_code
        resp_data = json.loads(resp.data.decode('utf-8'))
        assert {'common_brown_eyed_alive_friends',
                'people'} == set(resp_data.keys())
        assert resp_data['people'][0][
            'address'] == '492 Stockton Street, Lawrence, Guam, 4854'
        assert resp_data['people'][0]['age'] == 60
        assert resp_data['people'][0]['name'] == "Decker Mckenzie"
        assert resp_data['people'][0]['index'] == 1
        assert resp_data['people'][1][
            'address'] == '455 Dictum Court, Nadine, Mississippi, 6499'
        assert resp_data['people'][1]['age'] == 54
        assert resp_data['people'][1]['name'] == "Bonnie Bass"
        assert resp_data['people'][1]['index'] == 2
        assert resp_data['common_brown_eyed_alive_friends'][0]['index'] == 1
예제 #9
0
def test_get_successful_data(client, app, capsys):
    with app.app_context():
        purge_and_import_collection('companies',
                                    '{}/companies.json'.format(root))
        purge_and_import_collection('fruits', '{}/fruits.json'.format(root))
        purge_and_import_collection('vegetables',
                                    '{}/vegetables.json'.format(root))
        purge_and_import_collection('people', '{}/people.json'.format(root))
        captured = capsys.readouterr()
        assert 'Success' in captured.out
        person = get_item_from_collection_by_field('people', 'index', 943)
        assert "orange" in person['fruits']
        assert "banana" in person['fruits']
        assert "beetroot" in person['vegetables']
        assert "celery" in person['vegetables']

        resp = client.get('/api/v1/people/943/liked_food',
                          headers={'Accept': 'application/json'})
        assert 200 == resp.status_code
        resp_data = json.loads(resp.data.decode('utf-8'))
        assert {'age', 'fruits', 'username', 'vegetables',
                '_links'} == set(resp_data.keys())
        assert resp_data['age'] == 59
        assert set(resp_data['fruits']) == set(['orange', "banana"])
        assert resp_data['username'] == "Mullen Jennings"
        assert set(resp_data['vegetables']) == set(["beetroot", "celery"])
예제 #10
0
def test_people_import_company_dependency_validation(client, app, capsys):
    with app.app_context():
        purge_and_import_collection(
            'companies', '{}/missing_company_dependency.json'.format(root))
        purge_and_import_collection('fruits', '{}/fruits.json'.format(root))
        purge_and_import_collection('vegetables',
                                    '{}/vegetables.json'.format(root))
        purge_and_import_collection('people', '{}/people.json'.format(root))
        captured = capsys.readouterr()
        assert 'ERROR: Referenced companies with these indexes are missing: [92]' in captured.out
예제 #11
0
def test_people_removes_extra_fields(client, app, capsys):
    with app.app_context():
        purge_and_import_collection('companies',
                                    '{}/companies.json'.format(root))
        purge_and_import_collection('fruits', '{}/fruits.json'.format(root))
        purge_and_import_collection('vegetables',
                                    '{}/vegetables.json'.format(root))
        purge_and_import_collection(
            'people', '{}/extra_fields_wrong_people_2.json'.format(root))
        captured = capsys.readouterr()
        assert 'Success' in captured.out
        person = get_item_from_collection_by_field('people', 'index', 0)
        assert "extra_field" not in person
예제 #12
0
def test_people_schema_error_validation(client, app, capsys):
    with app.app_context():
        purge_and_import_collection('companies',
                                    '{}/companies.json'.format(root))
        purge_and_import_collection('fruits', '{}/fruits.json'.format(root))
        purge_and_import_collection('vegetables',
                                    '{}/vegetables.json'.format(root))
        purge_and_import_collection('people',
                                    '{}/wrong_people_1.json'.format(root))
        captured = capsys.readouterr()
        assert ' Unknown Index: index field not present in the JSON description' in captured.out
        assert ' \'1\': \'has_died\' value not a boolean value"' in captured.out
        assert ' \'2\': \'tags\' value not a list' in captured.out
        assert ' \'3\': \'age\' value not a number' in captured.out
예제 #13
0
def test_get_wrong_person_index(client, app, capsys):
    with app.app_context():
        purge_and_import_collection('fruits', '{}/fruits.json'.format(root))
        purge_and_import_collection('vegetables',
                                    '{}/vegetables.json'.format(root))
        purge_and_import_collection('people', '{}/people.json'.format(root))
        captured = capsys.readouterr()
        assert 'Success' in captured.out

        resp = client.get('/api/v1/people/123456789/favourite_food',
                          headers={'Accept': 'application/json'})
        assert 404 == resp.status_code
예제 #14
0
def test_people_populates_fruits_vegetables(client, app, capsys):
    with app.app_context():
        purge_and_import_collection('companies',
                                    '{}/companies.json'.format(root))
        purge_and_import_collection('fruits', '{}/fruits.json'.format(root))
        captured = capsys.readouterr()
        assert 'Success' in captured.out
        purge_and_import_collection('vegetables',
                                    '{}/vegetables.json'.format(root))
        captured = capsys.readouterr()
        assert 'Success' in captured.out
        purge_and_import_collection('people', '{}/people.json'.format(root))
        captured = capsys.readouterr()
        assert 'Success' in captured.out
        person = get_item_from_collection_by_field('people', 'index', 943)
        assert "orange" in person['fruits']
        assert "banana" in person['fruits']
        assert "beetroot" in person['vegetables']
        assert "celery" in person['vegetables']
예제 #15
0
def test_get_company_employees(client, app, capsys):
    with app.app_context():
        purge_and_import_collection('companies', '{}/companies.json'.format(root))
        captured = capsys.readouterr()
        assert 'Success' in captured.out
        company = get_item_from_collection_by_field('companies', 'index', 92)
        assert company['index'] == 92
        assert company['company'] == "SUNCLIPSE"

        purge_and_import_collection('fruits', '{}/fruits.json'.format(root))
        purge_and_import_collection('vegetables', '{}/vegetables.json'.format(root))
        purge_and_import_collection('people', '{}/people.json'.format(root))
        captured = capsys.readouterr()
        assert 'Success' in captured.out
        person = get_item_from_collection_by_field('people', 'index', 943)

        resp = client.get('/api/v1/companies/92/employees', headers={'Accept': 'application/json'})
        assert 200 == resp.status_code
        employee = json.loads(resp.data.decode('utf-8'))
        assert employee[0].get('index') == 943
예제 #16
0
def test_file_path_exists(client, app, capsys):
    with app.app_context():
        purge_and_import_collection('companies', '/something.json')
        expected = 'File /something.json does not exist.'
        captured = capsys.readouterr()
        assert expected in captured.out
예제 #17
0
def test_file_extension(client, app, capsys):
    with app.app_context():
        purge_and_import_collection('companies', __file__)
        expected = 'Only \'.json\' files are accepted.'
        captured = capsys.readouterr()
        assert expected in captured.out