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
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
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
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
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"
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
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'
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
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"])
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
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
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
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
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']
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
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
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