def test_order_controller(flask_app, auth_user, es_create, willorders_ws_db_session): prod_list = es_create("products", 2) item_id = prod_list[0].meta["id"] item_id2 = prod_list[1].meta["id"] with flask_app.test_client(user=auth_user) as client: with client.session_transaction() as sess: sess["cart"] = {item_id: 1, item_id2: 2} assert sess["cart"][item_id] == 1 assert sess["cart"][item_id2] == 2 response = client.put("api/cart/order") data = json.loads(response.data) assert data == {} assert response.status_code == 201 assert session["cart"] == {} response = client.put("api/cart/order") data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 400 with client.session_transaction() as sess: sess["cart"] = {"notregistered": 1} assert sess["cart"]["notregistered"] == 1 response = client.put("api/cart/order") data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 400 assert session["cart"]["notregistered"] == 1
def test_find_products_controller_invalid_json(mocker, flask_app, request_json, ftype): with flask_app.test_client() as client: response = client.post("api/store/find/%s/test/1" % ftype, json="notjson") data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 400 invalid_min = deepcopy(request_json) invalid_min["pricerange"].update(min=-10.0) with flask_app.test_client() as client: response = client.post("api/store/find/%s/test/1" % ftype, json=invalid_min) data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 400 invalid_max = deepcopy(request_json) invalid_max["pricerange"].update(max=-10.0) with flask_app.test_client() as client: response = client.post("api/store/find/%s/test/1" % ftype, json=invalid_max) data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 400 invalid_range = deepcopy(request_json) invalid_range["pricerange"].update(min=100.0, max=50.0) with flask_app.test_client() as client: response = client.post("api/store/find/%s/test/1" % ftype, json=invalid_range) data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 400 invalid_pagesize = deepcopy(request_json) invalid_pagesize.update(pagesize=0) with flask_app.test_client() as client: response = client.post("api/store/find/%s/test/1" % ftype, json=invalid_pagesize) data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 400
def test_insert_controller_invalid_json(login_disabled_app, request_json): invalid_user_slug = deepcopy(request_json) invalid_user_slug.update(user_slug="invalidslug") with login_disabled_app.test_client() as client: response = client.put("api/order/insert", json=invalid_user_slug) data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 400 not_unique_item_list = deepcopy(request_json) not_unique_item_list.update(item_list=[{ "item_id": "string", "amount": 1 }, { "item_id": "string", "amount": 2 }]) with login_disabled_app.test_client() as client: response = client.put("api/order/insert", json=not_unique_item_list) data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 400 invalid_item_id = deepcopy(request_json) invalid_item_id.update(item_list=[{"item_id": "", "amount": 1}]) with login_disabled_app.test_client() as client: response = client.put("api/order/insert", json=invalid_item_id) data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 400 invalid_amount = deepcopy(request_json) invalid_amount.update(item_list=[{"item_id": "string", "amount": 0}]) with login_disabled_app.test_client() as client: response = client.put("api/order/insert", json=invalid_amount) data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 400
def test_session_controller_invalid_json(mocker, login_disabled_app, request_json): with login_disabled_app.test_client() as client: response = client.post( "api/session/test", json="notjson" ) data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 400 invalid_min = deepcopy(request_json) invalid_min["pricerange"].update(min=-10.0) with login_disabled_app.test_client() as client: response = client.post( "api/session/test", json=invalid_min ) data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 400 invalid_max = deepcopy(request_json) invalid_max["pricerange"].update(max=-10.0) with login_disabled_app.test_client() as client: response = client.post( "api/session/test", json=invalid_max ) data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 400 invalid_range = deepcopy(request_json) invalid_range["pricerange"].update(min=100.0, max=50.0) with login_disabled_app.test_client() as client: response = client.post( "api/session/test", json=invalid_range ) data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 400
def test_session_products_controller_invalid_page(flask_app): with flask_app.test_client() as client: response = client.post("api/store/session/test/0") data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 400
def test_search_controller_unauthorized(flask_app): with flask_app.test_client() as client: response = client.post("api/search/query", ) data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 401
def test_select_by_slug_unauthorized(domain_url): response = requests.get(domain_url + "/api/order/WILLrogerPEREIRAslugBR", verify=False) data = response.json() ErrorSchema().load(data) assert response.status_code == 401
def test_update_controller_invalid_amount(flask_app): with flask_app.test_client() as client: response = client.post("api/cart/update/id/0") data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 400
def test_select_by_slug_controller_unauthorized(flask_app): with flask_app.test_client() as client: response = client.get("api/order/WILLrogerPEREIRAslugBR", ) data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 401
def test_basic_api_wrong_method(flask_app): with flask_app.test_client() as client: response = client.patch("/start") data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 404
def test_product_list_controller(token_app, es_object): price = {"outlet": 10.0, "retail": 20.0} prod_list = ProductFactory.create_batch(2, price=price) [prod_obj.save(using=es_object.connection) for prod_obj in prod_list] Index("store", using=es_object.connection).refresh() prod_item_list = [{ "item_id": p.meta["id"], "amount": 3 } for p in prod_list] with token_app.test_client() as client: response = client.post("api/product/list", json={ "item_list": prod_item_list, }) data = json.loads(response.data) ProductsListSchema().load(data) assert response.status_code == 200 assert len(data["products"]) == 2 assert data["total"]["outlet"] == 60.0 assert data["total"]["retail"] == 120.0 fake_item_list = [{"item_id": str(uuid4()), "amount": 1} for p in range(2)] with token_app.test_client() as client: response = client.post("api/product/list", json={ "id_list": prod_item_list + fake_item_list, }) data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 400
def test_select_by_user_controller_unauthorized(domain_url): response = requests.post( domain_url + "/api/order/user/WILLrogerPEREIRAslugBR", ) data = response.json() ErrorSchema().load(data) assert response.status_code == 401
def test_find_controller_invalid_ftype(flask_app): with flask_app.test_client() as client: response = client.post("api/store/find/invalid/test") data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 400
def test_select_by_slug_controller_invalid_slug(login_disabled_app): with login_disabled_app.test_client() as client: response = client.get("api/order/invalidslug/WILLrogerPEREIRAslugBR") data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 400 with login_disabled_app.test_client() as client: response = client.get("api/order/WILLrogerPEREIRAslugBR/invalidslug") data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 400
def test_order_controller_unauthorized(flask_app): with flask_app.test_client() as client: response = client.put("api/cart/order") data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 401
def test_select_from_user_controller_unauthorized(flask_app): with flask_app.test_client() as client: response = client.post("api/order/user", ) data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 401
def test_order(domain_url, auth_session, es_create, willorders_ws_db_session): prod_list = es_create("products", 2) item_id = prod_list[0].meta["id"] item_id2 = prod_list[1].meta["id"] auth_session.post(domain_url + "/api/cart/update/%s/1" % item_id) response = auth_session.post(domain_url + "/api/cart/update/%s/2" % item_id2) cookie = response.cookies.get("session") response = auth_session.put(domain_url + "/api/cart/order") data = response.json() assert data == {} assert response.status_code == 201 assert cookie != response.cookies.get("session") cookie = response.cookies.get("session") response = auth_session.put(domain_url + "/api/cart/order") data = response.json() ErrorSchema().load(data) assert response.status_code == 400 assert cookie == response.cookies.get("session")
def test_product_list_controller_unauthorized(flask_app): with flask_app.test_client() as client: response = client.post("api/product/list", ) data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 401
def test_product_list(domain_url, es_object, token_session): price = {"outlet": 10.0, "retail": 20.0} prod_list = ProductFactory.create_batch(2, price=price) [prod_obj.save(using=es_object.connection) for prod_obj in prod_list] Index("store", using=es_object.connection).refresh() prod_item_list = [{ "item_id": p.meta["id"], "amount": 3 } for p in prod_list] response = token_session.post(domain_url + "/api/product/list", json={ "item_list": prod_item_list, }) data = response.json() ProductsListSchema().load(data) assert response.status_code == 200 assert len(data["products"]) == 2 assert data["total"]["outlet"] == 60.0 assert data["total"]["retail"] == 120.0 fake_item_list = [{"item_id": str(uuid4()), "amount": 1} for p in range(2)] response = token_session.post(domain_url + "/api/product/list", json={ "item_list": prod_item_list + fake_item_list, }) data = response.json() ErrorSchema().load(data) assert response.status_code == 400
def test_delete_unauthorized(domain_url): response = requests.delete( domain_url + "/api/order/delete/WILLrogerPEREIRAslugBR/WILLrogerPEREIRAslugBR", ) data = response.json() ErrorSchema().load(data) assert response.status_code == 401
def test_start_unauthorized(domain_url): response = requests.get( domain_url + "/api/start", ) data = response.json() ErrorSchema().load(data) assert response.status_code == 401
def test_insert_controller_no_json(login_disabled_app): with login_disabled_app.test_client() as client: response = client.put("api/order/insert") data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 400
def test_session_products_unauthorized(domain_url): response = requests.post( domain_url + "/api/session/1/1", ) data = response.json() ErrorSchema().load(data) assert response.status_code == 401
def test_search_unauthorized(domain_url): response = requests.post( domain_url + "/api/search/query", ) data = response.json() ErrorSchema().load(data) assert response.status_code == 401
def test_select_from_user_unauthorized(domain_url): response = requests.post( domain_url + "/api/order/user", verify=False ) data = response.json() ErrorSchema().load(data) assert response.status_code == 401
def test_user_controller_current_unauthorized(flask_app): with flask_app.test_client() as client: response = client.get("/api/user/current") assert current_user.is_authenticated is False data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 401
def test_gender_controller_invalid_json(mocker, login_disabled_app, request_json): with login_disabled_app.test_client() as client: response = client.post("api/gender/test", json="notjson") data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 400 invalid_amount = deepcopy(request_json) invalid_amount.update(amount=0) with login_disabled_app.test_client() as client: response = client.post("api/gender/test", json=invalid_amount) data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 400
def test_order_controller_empty_cart(mocker, login_disabled_app): mocker.patch.object(CartService, "to_list", side_effect=NoContentError()) with login_disabled_app.test_client() as client: response = client.put("api/cart/order") data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 400
def test_select_by_user_slug_controller_invalid_slug(login_disabled_app): with login_disabled_app.test_client() as client: response = client.post( "api/order/user/invalidslug" ) data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == 400
def test_login_controller_error(mocker, flask_app, test_url, error, status_code): mocker.patch("flask_login.utils._get_user", side_effect=error) with flask_app.test_client() as client: response = client.get(test_url) data = json.loads(response.data) ErrorSchema().load(data) assert response.status_code == status_code