def test_get_currency(): app = Flask(__name__) configure_routes(app) app.testing = True client = app.test_client() # Get All currencies to get the first one url_currencies = '/api/currencies' response_currencies = client.get(url_currencies) result_currencies = json.loads(response_currencies.get_data(as_text=True)) first_currency = None if "data" in result_currencies: first_currency = result_currencies["data"][0] if first_currency and "symbol_text" in first_currency: url = '/api/currencies/%s' % first_currency["symbol_text"] response = client.get(url) result = json.loads(response.get_data(as_text=True)) assert response.status_code == 200 assert ("status" in result) == True assert ("data" in result and "symbol_text" in result["data"] and result["data"]["symbol_text"] == first_currency["symbol_text"]) == True else: assert False
def test_sort_false(): app = Flask(__name__) configure_routes(app) client = app.test_client() url = "/api/posts?tags=science,tech&sortBy=hghgfk" response = client.get(url) assert response.status_code == 400 assert b'{"error": "Invalid sortBy parameter"}\n'
def test_route_one(): app = Flask(__name__) configure_routes(app) client = app.test_client() url = "/api/ping" response = client.get(url) assert response.get_data() == b'{"success":true}\n' assert response.status_code == 200
def test_dir_false(): app = Flask(__name__) configure_routes(app) client = app.test_client() url = "/api/posts?tags=science,tech&sortBy=popularity&direction=ghggh" response = client.get(url) assert response.status_code == 400 assert b'{"error": "Invalid direction parameter"}\n'
def test_bird_route_get_wrong_data_type(): app = Flask(__name__) configure_routes(app) client = app.test_client() url = '/birds' response = client.get(url, query_string={'limit': "Hello"}) assert response.status_code == 500
def test_no_tags(): app = Flask(__name__) configure_routes(app) client = app.test_client() url = "/api/posts" response = client.get(url) assert response.status_code == 400 assert response.get_data() == b'{"error":"Missing tags parameter"}\n'
def base_route(): app = Flask(__name__) configure_routes(app) client = app.test_client() url = "/" response = client.get(url) assert response.get_data() == b'{"message":"Hello World"}\n' assert response.status_code == 200
def test_bird_route_get_empty_params(): app = Flask(__name__) configure_routes(app) client = app.test_client() url = '/birds' response = client.get(url, query_string={'limit': None}) assert response.status_code == 200 assert len(response.get_data()) > 0
def test_bird_route_get_limit(): app = Flask(__name__) configure_routes(app) client = app.test_client() url = '/birds' response = client.get(url, query_string={'limit': 2}) assert response.status_code == 200 assert len(response.get_json()) == 2
def test_bird_route_get_basic(): app = Flask(__name__) configure_routes(app) client = app.test_client() url = '/birds' response = client.get(url) assert response.status_code == 200 assert len(response.get_data()) > 0
def test_version_route(): app = Flask(__name__) configure_routes(app) client = app.test_client() url = '/version' response = client.get(url) assert response.get_data() == b'Birds Service. Version 0.1' assert response.status_code == 200
def test_base_route(): app = Flask(__name__) configure_routes(app) client = app.test_client() url = '/' response = client.get(url) assert response.get_data() == b'Hello, World' assert response.status_code == 200
def test_2_tags(): app = Flask(__name__) configure_routes(app) client = app.test_client() url = "/api/posts?tags=science,tech" response = client.get(url) assert response.status_code == 200 assert response.json["posts"] for p in response.json["posts"]: assert "science" in p["tags"] or "tech" in p["tags"]
def test_desc(): app = Flask(__name__) configure_routes(app) client = app.test_client() url = "/api/posts?tags=science,tech&sortBy=popularity&direction=desc" response = client.get(url) previous = math.inf assert response.status_code == 200 for p in response.json["posts"]: assert p['popularity'] <= previous previous = p['popularity']
def test_get_currency_fail(): app = Flask(__name__) configure_routes(app) client = app.test_client() url = '/api/currencies/any' response = client.get(url) result = json.loads(response.get_data(as_text=True)) assert response.status_code == 200 assert ("status" in result and result["status"] == False) == True assert ("data" in result) == True
def test_bird_route_get_offset(): app = Flask(__name__) configure_routes(app) client = app.test_client() url = '/birds' response_full = client.get(url) data1 = response_full.get_json() res1 = data1[5] response = client.get(url, query_string={'offset': 5}) data2 = response.get_json() res2 = data2[0] assert response.status_code == 200 assert res1 == res2
def test_bird_route_get_sorted(): app = Flask(__name__) configure_routes(app) client = app.test_client() url = '/birds' response = client.get(url, query_string={ 'attribute': 'name', 'order': 'asc' }) assert response.status_code == 200 attr_list = [item['name'] for item in response.get_json()] assert attr_list == sorted(attr_list)
def test_bird_route_post_inconsistent_data(): app = Flask(__name__) configure_routes(app) client = app.test_client() url = '/birds' mock_request_data = { "body_length": 1000, "name": "test_bird", "wingspan": 1000 } response = client.post(url, json=mock_request_data) assert response.status_code == 400
def test_post_route__failure__bad_request(): app = Flask(__name__) configure_routes(app) client = app.test_client() url = '/post/test' mock_request_headers = {'authorization-sha256': '123'} mock_request_data = {} response = client.post(url, data=json.dumps(mock_request_data), headers=mock_request_headers) assert response.status_code == 400
def test_bird_route_post_wrong_data_type(): app = Flask(__name__) configure_routes(app) client = app.test_client() url = '/birds' mock_request_data = { "body_length": "WRONG_DATA_TYPE", "color": "red & white", "name": "test_bird", "species": "pigeon", "wingspan": 1000 } response = client.post(url, json=mock_request_data) assert response.status_code == 400
def test_bird_route_post_success(): app = Flask(__name__) configure_routes(app) client = app.test_client() url = '/birds' new_bird = ''.join(random.choice(string.ascii_letters) for i in range(10)) mock_request_data = { "body_length": 1000, "color": "red & white", "name": new_bird, "species": "pigeon", "wingspan": 1000 } response = client.post(url, json=mock_request_data) assert response.status_code == 200
def test_post_route__failure__unauthorized(): app = Flask(__name__) configure_routes(app) client = app.test_client() url = '/post/test' mock_request_headers = {} mock_request_data = { 'request_id': '123', 'payload': { 'py': 'pi', 'java': 'script' } } response = client.post(url, data=json.dumps(mock_request_data), headers=mock_request_headers) assert response.status_code == 401
def client(): app = Flask(__name__) configure_routes(app) return app.test_client()
from flask import Flask from handlers.routes import configure_routes app = Flask(__name__) configure_routes(app) if __name__ == "__main__": app.run()
def app(): app = Flask(__name__, template_folder='templates') configure_routes(app) client = app.test_client() app.debug = True return client
""" Flask App main file Author: Diego Arango - @darango91 """ from flask import Flask from flask_pymongo import PyMongo from constants import MONGO_DB_CONNECTION from handlers.routes import configure_routes app = Flask(__name__) app.config["MONGO_URI"] = MONGO_DB_CONNECTION mongo = PyMongo(app) configure_routes(app, mongo) if __name__ == "__main__": app.run(debug=True)