Пример #1
0
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
Пример #2
0
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
Пример #4
0
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
Пример #5
0
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
Пример #6
0
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
Пример #7
0
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
Пример #8
0
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
Пример #9
0
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
Пример #10
0
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
Пример #12
0
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
Пример #13
0
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
Пример #14
0
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
Пример #15
0
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
Пример #16
0
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
Пример #17
0
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
Пример #19
0
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
Пример #20
0
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
Пример #21
0
def test_start_unauthorized(domain_url):
    response = requests.get(
        domain_url + "/api/start",
    )

    data = response.json()
    ErrorSchema().load(data)
    assert response.status_code == 401
Пример #22
0
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
Пример #23
0
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
Пример #24
0
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
Пример #25
0
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
Пример #26
0
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
Пример #27
0
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
Пример #28
0
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
Пример #30
0
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