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