def test_get_pet_200(self):
     response = get_v2_pet(self.client, self.pet['id'])
     assert_status_code(response, 200)
     assert_max_response_time(response, 1)
     assert_valid_schema(response.json(), 'pet/v2_pet.json')
     assert_response_key_value(response, 'id', self.pet['id'])
     assert_response_key_value(response, 'name', self.pet['name'])
Example #2
0
def test_group_list(conf, requests_session, headers):
    # Get our list of groups
    response = requests_session.get(urljoin(conf.getoption("server"),
                                            "/api/v3/group/"),
                                    headers=headers)
    assert response.status_code == 200
    assert_valid_schema(response.json())
Example #3
0
def test_approval_request_reject(conf, requests_session, headers):
    # Get an action we can work with
    action_response = requests_session.get(urljoin(conf.getoption("server"),
                                                   "/api/v3/action/"),
                                           headers=headers)
    data = action_response.json()
    action_id = data["results"][0]["id"]

    # Create a recipe associated with that action
    recipe_details = new_recipe(requests_session, action_id,
                                conf.getoption("server"), headers)

    # Update the name of the recipe
    updated_data = {
        "name":
        "update" + str(uuid.uuid4()),
        "action_id":
        action_id,
        "arguments":
        '{"learnMoreMessage":"This field may not be blank.","learnMoreUrl":"This field may not be blank.","message":"This field may not be blank.","postAnswerUrl":"This field may not be blank.","surveyId":"'
        + str(uuid.uuid4()) +
        '","thanksMessage":"This field may not be blank."}',
    }
    response = requests_session.put(
        urljoin(conf.getoption("server"),
                "/api/v3/recipe/{}/".format(recipe_details["id"])),
        data=updated_data,
        headers=headers,
    )
    assert response.status_code == 200, response.json()
    assert_valid_schema(response.json())
    latest_revision = response.json()["latest_revision"]
    assert latest_revision["name"] == updated_data["name"]
Example #4
0
def test_group_delete(conf, requests_session, headers):
    # Create a new group
    data = {"name": str(uuid.uuid4())}
    response = requests_session.post(urljoin(conf.getoption("server"),
                                             "/api/v3/group/"),
                                     headers=headers,
                                     data=data)
    assert response.status_code == 201
    assert_valid_schema(response.json())
    group_data = response.json()
    group_id = group_data["id"]

    # Verify group was stored and contains expected data
    response = requests_session.get(urljoin(
        conf.getoption("server"), "/api/v3/group/{}/".format(group_id)),
                                    headers=headers)
    group_data = response.json()
    assert response.status_code == 200
    assert_valid_schema(response.json())

    # Delete the group
    response = requests_session.delete(urljoin(
        conf.getoption("server"), "/api/v3/group/{}/".format(group_id)),
                                       headers=headers)
    assert response.status_code == 204

    # Verify that it no longer exists
    response = requests_session.get(urljoin(
        conf.getoption("server"), "/api/v3/group/{}/".format(group_id)),
                                    headers=headers)
    assert response.status_code == 404
Example #5
0
def test_user_partial_update(conf, requests_session, headers):
    # Create a new user
    user_data = create_new_user(requests_session, conf.getoption("server"),
                                headers)

    # Update the user's first name
    fake = Faker()
    updated_data = {"first_name": fake.first_name()}
    response = requests_session.patch(
        urljoin(conf.getoption("server"),
                "/api/v3/user/{}/".format(user_data["id"])),
        headers=headers,
        data=updated_data,
    )
    assert response.status_code == 200
    assert_valid_schema(response.json())

    # Verify they match our expected values
    response = requests_session.get(
        urljoin(conf.getoption("server"),
                "/api/v3/user/{}".format(user_data["id"])),
        headers=headers,
    )
    assert response.status_code == 200
    assert_valid_schema(response.json())
    assert updated_data["first_name"] == response.json()["first_name"]
Example #6
0
    def test_invalid_method(self, sender):
        """request type DELETE instead GET"""
        res = sender.build('DELETE', REQUEST_PATH, id="203102")
        self.response = res

        payload = json.loads(res.text)

        assert_valid_response(res, STATUS_CODE_OK)
        assert_valid_schema(payload, 'error_method.json')
Example #7
0
    def test_invalid_id(self, company_id, sender):
        """request empty id"""
        res = sender.build(REQUEST_TYPE, REQUEST_PATH, id=company_id)
        self.response = res

        payload = json.loads(res.text)

        assert_valid_response(res, STATUS_CODE_OK)
        assert_valid_schema(payload, 'errors.json')
Example #8
0
    def test_ok(self, sender):
        """valid request"""
        res = sender.build(REQUEST_TYPE, REQUEST_PATH, id="203102")
        self.response = res

        payload = json.loads(res.text)

        assert_valid_response(res, STATUS_CODE_OK)
        assert_valid_schema(payload, 'company_info.json')
Example #9
0
def test_recipe_enable(conf, requests_session, headers):
    # Get a list of actions and pick the first one
    action_response = requests_session.get(urljoin(conf.getoption("server"),
                                                   "/api/v3/action/"),
                                           headers=headers)
    data = action_response.json()
    action_id = data["results"][0]["id"]

    # Then create an approval request and submit it
    recipe_details = new_recipe(requests_session, action_id,
                                conf.getoption("server"), headers)
    response = create_approval_request(requests_session,
                                       conf.getoption("server"),
                                       recipe_details["latest_revision_id"],
                                       headers)
    data = response.json()
    approval_id = data["id"]
    approver_email = data["creator"]["email"]
    assert response.status_code != 404
    assert_valid_schema(response.json())

    # Verify that the request was actually created
    response = requests_session.get(
        urljoin(conf.getoption("server"),
                "/api/v3/approval_request/{}".format(approval_id)))
    data = response.json()
    assert response.status_code != 404
    assert_valid_schema(response.json())
    assert data["id"] == approval_id
    assert data["creator"]["email"] == approver_email

    # Approve the approval request
    response = approve_approval_request(requests_session,
                                        conf.getoption("server"), approval_id,
                                        headers)
    assert response.status_code != 404
    assert_valid_schema(response.json())

    # Look at the recipe and make sure that the recipe has been approved and our comment shows up
    response = requests_session.get(
        urljoin(conf.getoption("server"),
                "/api/v3/recipe/{}".format(recipe_details["id"])))
    assert response.status_code not in (404, 500)
    assert_valid_schema(response.json())
    approval_request = response.json()["latest_revision"]["approval_request"]
    assert approval_request["approved"] is True
    assert approval_request["comment"] == "r+"
    assert response.json()["latest_revision"]["enabled"] is False

    # Enable the recipe
    response = enable_recipe(requests_session, conf.getoption("server"),
                             recipe_details["id"], headers)
    assert response.status_code not in (404, 500)
    assert_valid_schema(response.json())
    assert response.json()["latest_revision"]["enabled"] is True
Example #10
0
def test_action_read(conf, requests_session):
    # Get the first action from the list and use it
    response = requests_session.get(urljoin(conf.getoption("server"), "/api/v3/action/"))
    data = response.json()
    action_id = data["results"][0]["id"]

    response = requests_session.get(
        urljoin(conf.getoption("server"), "/api/v3/action/{}".format(action_id))
    )
    assert response.status_code != 404
    assert_valid_schema(response.json())
Example #11
0
def test_extension_read(conf, requests_session):
    response = requests_session.get(urljoin(conf.getoption("server"), "/api/v3/extension/"))
    assert response.status_code != 404
    details = response.json()

    # Get the ID of the first record in the list and read it
    if len(details["results"]) == 0:
        pytest.skip("No extensions results were found")

    extension_id = details["results"][0]["id"]
    response = requests_session.get(
        urljoin(conf.getoption("server"), "/api/v3/extension/{}".format(extension_id))
    )
    assert_valid_schema(response.json())
Example #12
0
def test_recipe_revision_read(conf, requests_session):
    # Get a random recipe revision from the list and verify it
    response = requests_session.get(urljoin(conf.getoption("server"), "/api/v3/recipe_revision/"))
    data = response.json()

    if len(data["results"]) == 0:
        pytest.skip("Could not find any recipe revisions")

    idx = randint(0, len(data["results"]) - 1)
    id = data["results"][idx]["id"]
    response = requests_session.get(
        urljoin(conf.getoption("server"), "/api/v3/recipe_revision/{}/".format(id))
    )
    assert_valid_schema(response.json())
def test_approval_request_read(conf, requests_session):
    # Get the ID of the first approval request and use it
    response = requests_session.get(urljoin(conf.getoption("server"), "/api/v3/approval_request/"))
    data = response.json()

    if len(data["results"]) == 0:
        pytest.skip("No approval requests were found")

    id = data["results"][0]["id"]

    response = requests_session.get(
        urljoin(conf.getoption("server"), "/api/v3/approval_request/{}/".format(id))
    )
    assert response.status_code != 404
    assert_valid_schema(response.json())
Example #14
0
def test_recipe_history(conf, requests_session):
    # Get the ID of a random recipe and grab it's history
    response = requests_session.get(
        urljoin(conf.getoption("server"), "/api/v3/recipe/"))
    data = response.json()

    if len(data["results"]) == 0:
        pytest.skip("Could not find any recipe history")

    idx = randint(0, len(data["results"]) - 1)
    id = data["results"][idx]["id"]
    response = requests_session.get(
        urljoin(conf.getoption("server"),
                "/api/v3/recipe/{}/history/".format(id)))
    assert response.status_code != 404
    assert_valid_schema(response.json())
Example #15
0
def test_recipe_read(conf, requests_session):
    # Get random recipe and make sure it's valid
    response = requests_session.get(
        urljoin(conf.getoption("server"), "/api/v3/recipe/"))
    data = response.json()

    if len(data["results"]) == 0:
        pytest.skip("Could not find any recipes")

    element = randint(0, len(data["results"]) - 1)
    recipe_id = data["results"][element]["id"]
    response = requests_session.get(
        urljoin(conf.getoption("server"),
                "/api/v3/recipe/{}".format(recipe_id)))
    data = response.json()
    assert response.status_code != 404
    assert_valid_schema(response.json())
Example #16
0
def test_user_read(conf, requests_session, headers):
    # Get a list of users and use the ID of the first one
    response = requests_session.get(urljoin(conf.getoption("server"),
                                            "/api/v3/user/"),
                                    headers=headers)
    assert response.status_code == 200
    assert_valid_schema(response.json())
    user_id = response.json()["results"][0]["id"]
    email = response.json()["results"][0]["email"]

    # Retrieve the record associated with that ID and verify it matches
    response = requests_session.get(urljoin(
        conf.getoption("server"), "/api/v3/user/{}/".format(user_id)),
                                    headers=headers)
    assert response.status_code == 200
    assert_valid_schema(response.json())
    assert user_id == response.json()["id"]
    assert email == response.json()["email"]
Example #17
0
def test_approval_request_close(conf, requests_session, headers):
    # Get an action we can work with
    action_response = requests_session.get(urljoin(conf.getoption("server"),
                                                   "/api/v3/action/"),
                                           headers=headers)
    data = action_response.json()
    action_id = data["results"][0]["id"]

    # Create a recipe
    recipe_details = new_recipe(requests_session, action_id,
                                conf.getoption("server"), headers)

    # Create an approval request
    response = requests_session.post(
        urljoin(
            conf.getoption("server"),
            "/api/v3/recipe_revision/{}/request_approval/".format(
                recipe_details["latest_revision_id"]),
        ),
        headers=headers,
    )
    data = response.json()
    approval_id = data["id"]
    assert response.status_code != 404
    assert_valid_schema(response.json())

    # Close the approval request
    response = requests_session.post(
        urljoin(conf.getoption("server"),
                "/api/v3/approval_request/{}/close/".format(approval_id)),
        headers=headers,
    )
    assert response.status_code == 204

    # Verify that is no longer exists
    response = requests_session.get(
        urljoin(conf.getoption("server"),
                "/api/v3/approval_request/{}/".format(approval_id)),
        headers=headers,
    )
    assert response.status_code == 404
def test_group_partial_update(conf, requests_session, headers):
    # Create a new group
    data = {"name": str(uuid.uuid4())}
    response = requests_session.post(urljoin(conf.getoption("server"),
                                             "/api/v3/group/"),
                                     headers=headers,
                                     data=data)
    assert response.status_code == 201
    assert_valid_schema(response.json())
    group_data = response.json()
    group_id = group_data["id"]

    # Verify group was stored and contains expected data
    response = requests_session.get(urljoin(
        conf.getoption("server"), "/api/v3/group/{}/".format(group_id)),
                                    headers=headers)
    group_data = response.json()
    assert response.status_code == 200
    assert_valid_schema(response.json())

    # Use the update to change the name
    updated_data = {"name": str(uuid.uuid4())}
    response = requests_session.patch(
        urljoin(conf.getoption("server"),
                "/api/v3/group/{}/".format(group_id)),
        headers=headers,
        data=updated_data,
    )
    assert response.status_code == 200
    assert_valid_schema(response.json())
    assert response.json()["name"] == updated_data["name"]
    def test_pet(self):
        client = Client()
        pet = generate_pet()

        # POST a pet
        response = post_v2_pet(client, **pet)
        assert_status_code(response, 200)
        assert_max_response_time(response, 1)
        assert_valid_schema(response.json(), 'pet/v2_pet.json')

        # GET a pet
        response = get_v2_pet(client, pet['id'])
        assert_status_code(response, 200)
        assert_max_response_time(response, 1)
        assert_valid_schema(response.json(), 'pet/v2_pet.json')
        assert_response_key_value(response, 'id', pet['id'])
        assert_response_key_value(response, 'name', pet['name'])

        # PUT a pet
        pet['name'] = 'NewName'
        response = put_v2_pet(client, **pet)
        assert_status_code(response, 200)
        assert_max_response_time(response, 1)
        assert_valid_schema(response.json(), 'pet/v2_pet.json')
        assert_response_key_value(response, 'id', pet['id'])
        assert_response_key_value(response, 'name', pet['name'])

        # DELETE
        response = delete_v2_pet(client, pet['id'])
        assert_status_code(response, 200)
        assert_max_response_time(response, 1)

        # GET a pet
        response = get_v2_pet(client, pet['id'])
        assert_status_code(response, 404)
Example #20
0
def test_user_create(conf, requests_session, headers):
    # Get a list of groups and grab the ID of the first one
    response = requests_session.get(
        urljoin(conf.getoption("server"), "/api/v3/group/"), headers=headers
    )
    assert response.status_code == 200
    assert_valid_schema(response.json())
    group_id = response.json()["results"][0]["id"]
    group_name = response.json()["results"][0]["name"]
    fake = Faker()

    # Create a user, assigning them to the group we obtained
    user_data = {
        "first_name": fake.first_name(),
        "last_name": fake.last_name(),
        "email": fake.company_email(),
        "groups": {"id": group_id, "name": group_name},
    }
    response = requests_session.post(
        urljoin(conf.getoption("server"), "/api/v3/user/"), headers=headers, data=user_data
    )
    assert response.status_code == 201, response.json()
    assert_valid_schema(response.json())
    def test_get_pet(self):

        pet_id, pet_name = 21435431254521, 'Garfield'
        payload = {
            "id": pet_id,
            "name": "Garfield",
            "category": {
                "name": "cats"
            },
            "status": "available"
        }

        # POST a pet
        requests.post(url='https://petstore.swagger.io/v2/pet', json=payload)

        # GET a pet
        response = requests.get(url=f'https://petstore.swagger.io/v2/pet/{pet_id}')

        assert_status_code(response, 200)
        assert_max_response_time(response, 1)
        assert_valid_schema(response.json(), 'pet/v2_pet.json')
        assert_response_key_value(response, 'id', pet_id)
        assert_response_key_value(response, 'name', pet_name)
Example #22
0
def test_approval_request_reject(conf, requests_session, headers):
    # Get an action we can work with
    action_response = requests_session.get(urljoin(conf.getoption("server"),
                                                   "/api/v3/action/"),
                                           headers=headers)
    data = action_response.json()
    action_id = data["results"][0]["id"]

    # Create a recipe associated with that action
    recipe_details = new_recipe(requests_session, action_id,
                                conf.getoption("server"), headers)

    # Create a approval request
    response = requests_session.post(
        urljoin(
            conf.getoption("server"),
            "/api/v3/recipe_revision/{}/request_approval/".format(
                recipe_details["latest_revision_id"]),
        ),
        headers=headers,
    )
    data = response.json()
    approval_id = data["id"]
    assert response.status_code != 404
    assert_valid_schema(response.json())

    # Reject the approval
    response = requests_session.post(
        urljoin(conf.getoption("server"),
                "/api/v3/approval_request/{}/reject/".format(approval_id)),
        data={"comment": "r-"},
        headers=headers,
    )
    assert response.status_code == 200
    assert_valid_schema(response.json())

    # Look at the recipe and make sure it the approval status has been set to False and our comment shows up
    response = requests_session.get(
        urljoin(conf.getoption("server"),
                "/api/v3/recipe/{}/".format(recipe_details["id"])))
    assert response.status_code != 404
    assert_valid_schema(response.json())
    approval_request = response.json()["latest_revision"]["approval_request"]
    assert approval_request["approved"] is False
    assert approval_request["comment"] == "r-"
Example #23
0
def test_filters_list(conf, requests_session):
    response = requests_session.get(
        urljoin(conf.getoption("server"), "/api/v3/filters/"))
    assert response.status_code != 404
    assert_valid_schema(response.json())
Example #24
0
def test_service_info_list(conf, requests_session):
    response = requests_session.get(urljoin(conf.getoption("server"), "/api/v3/service_info/"))
    assert response.status_code == 200
    assert_valid_schema(response.json())
def test_approval_request_list(conf, requests_session):
    response = requests_session.get(
        urljoin(conf.getoption("server"), "/api/v3/approval_request/?page=1"))
    assert response.status_code != 404
    assert_valid_schema(response.json())
def test_api_list_all_resources(api_client):
    response = api_client.get()
    json_data = response.json()

    assert_valid_schema(json_data)
Example #27
0
def test_user_list(conf, requests_session, headers):
    response = requests_session.get(
        urljoin(conf.getoption("server"), "/api/v3/user/"), headers=headers
    )
    assert response.status_code == 200
    assert_valid_schema(response.json())