def get(self, project_name, case_name=None): """ Get testcases(s) info :param project_name: :param case_name: """ if case_name is None: case_name = "" get_request = dict() get_request["project_name"] = project_name if len(case_name) > 0: get_request["name"] = case_name res = [] cursor = self.db.test_cases.find(get_request) print get_request while (yield cursor.fetch_next): test_case = TestCase.test_case_from_dict(cursor.next_object()) res.append(test_case.format_http()) meta = dict() meta["total"] = len(res) meta["success"] = True if len(res) > 0 else False answer = dict() answer["test_cases"] = res answer["meta"] = meta self.finish_request(answer)
def put(self, project_name, case_name): """ Updates the name and description of a test case :raises HTTPError (HTTP_NOT_FOUND, HTTP_FORBIDDEN) """ print "PUT request for : {}/{}".format(project_name, case_name) case_request = {"project_name": project_name, "name": case_name} # check if there is a case for the project in url parameters mongo_dict = yield self.db.test_cases.find_one(case_request) test_case = TestCase.test_case_from_dict(mongo_dict) if test_case is None: raise HTTPError( HTTP_NOT_FOUND, "{} could not be found as a {} case to be updated".format(case_name, project_name) ) new_name = self.json_args.get("name") new_project_name = self.json_args.get("project_name") new_description = self.json_args.get("description") # check if there is not an existing test case # with the name provided in the json payload mongo_dict = yield self.db.test_cases.find_one({"project_name": new_project_name, "name": new_name}) if mongo_dict is not None: raise HTTPError(HTTP_FORBIDDEN, "{} already exists as a project".format(new_name)) # new dict for changes request = dict() request = prepare_put_request(request, "name", new_name, test_case.name) request = prepare_put_request(request, "project_name", new_project_name, test_case.project_name) request = prepare_put_request(request, "description", new_description, test_case.description) # we raise an exception if there isn't a change if not request: raise HTTPError(HTTP_FORBIDDEN, "Nothing to update") # we merge the whole document """ edit_request = test_case.format() edit_request.update(request) """ Updating the DB """ res = yield self.db.test_cases.update(case_request, edit_request) print res edit_request["_id"] = str(test_case._id) self.finish_request({"message": "success", "content": edit_request})
def post(self, project_name): """ Create a test case""" print "POST Request for {}".format(project_name) if self.json_args is None: raise HTTPError(HTTP_BAD_REQUEST, "Check your request payload") # retrieve test project mongo_dict = yield self.db.test_projects.find_one({"name": project_name}) if mongo_dict is None: raise HTTPError(HTTP_FORBIDDEN, "Could not find project {}".format(project_name)) # test_project = TestProject.testproject_from_dict(self.json_args) case = TestCase.test_case_from_dict(self.json_args) case.project_name = project_name case.creation_date = datetime.now() future = self.db.test_cases.insert(case.format()) result = yield future case._id = result self.finish_request(case.format_http())