Beispiel #1
0
    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)
Beispiel #2
0
    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})
Beispiel #3
0
    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())