Ejemplo n.º 1
0
    async def get(self, request):
        pk = self.request.args.get("project_id")
        if not pk:
            return resp_json(FAIL, msg="项目不存在!")
        code = await self.model.filter(project_id=pk)

        return resp_json(body=code)
Ejemplo n.º 2
0
    async def post(self, request):
        project_id = request.json.get("project")
        pro = await models.Project.filter(pk=project_id).first()

        if not project_id:
            return resp_json(FAIL, msg="项目不存在")
        test_config = {
            "name": request.json.get("name"),
            "request": {
                "url": request.json.get("url"),
                "method": request.json.get("method"),
                "headers": request.json.get("header")["header"],
                "form": request.json.get("request")["form"]["data"],
                "json": request.json.get("request")["json"],
                "params": request.json.get("request")["params"]["params"],
            },
            "extract": request.json.get("extract")["extract"],
            "validate": request.json.get("validate")["validate"],
            "setup_hooks": request.json.get("hooks")["setup_hooks"],
            "teardown_hooks": request.json.get("hooks")["teardown_hooks"],
        }

        result = {
            "name": request.json.get("name"),
            "body": test_config,
            "url": request.json.get("url"),
            "method": request.json.get("method"),
            "relation": request.json.get("nodeId"),
            "project": pro,
        }

        await models.API.create(**result)
        return resp_json(msg="接口添加成功!")
Ejemplo n.º 3
0
    async def get(self, request):
        pk = self.request.args.get("project_id")
        if not pk:
            return resp_json(FAIL, msg="项目不存在!")
        queryset = await self.model.filter(id=pk).first()
        api_count = await models.API.filter(project_id=pk).count()
        case_count = await models.Case.filter(project_id=pk).count()
        config_count = await models.Config.filter(project_id=pk).count()
        variables_count = await models.Variables.filter(project_id=pk).count()
        host_count = await models.HostIP.filter(project_id=pk).count()
        report_count = await models.Report.filter(project_id=pk).count()

        data = {
            "id": pk,
            "name": queryset.name,
            "desc": queryset.desc,
            "api_count": api_count,
            "case_count": case_count,
            "config_count": config_count,
            "variables_count": variables_count,
            "host_count": host_count,
            "report_count": report_count,
        }

        return resp_json(body=data)
Ejemplo n.º 4
0
    async def delete(self, request):
        pk = request.json.get("id")
        instance = await self.model.get_or_404(pk)
        if not instance:
            return resp_json(FAIL, msg="项目不存在!")
        await instance.delete()

        return resp_json(msg="操作成功!")
Ejemplo n.º 5
0
 async def post(self, request):
     name = request.json.get("name", None)
     project_name = await self.model.filter(name=name).first()
     if project_name:
         return resp_json(FAIL, msg="项目已存在")
     result = {
         "name": name,
         "desc": request.json.get("desc"),
         "responsible": request.json.get("responsible"),
     }
     await models.Project.create(**result)
     return resp_json(msg="项目添加成功!")
Ejemplo n.º 6
0
    async def post(self, request):
        project_id = request.json.get("project")
        pro = await models.Project.filter(pk=project_id).first()

        if not project_id:
            return resp_json(FAIL, msg="项目不存在")
        result = {
            "value": request.json.get("value"),
            "name": request.json.get("name"),
            "project": pro,
        }
        await models.Report.create(**result)
        return resp_json(msg="报告添加成功!")
Ejemplo n.º 7
0
    async def post(self, request):
        project_id = request.json.get("project")
        pro = await models.Project.filter(pk=project_id).first()

        if not project_id:
            return resp_json(FAIL, msg="项目不存在")
        result = {
            "body": request.json,
            "name": request.json.get("name"),
            "base_url": request.json.get("base_url"),
            "project": pro,
        }
        await models.Config.create(**result)
        return resp_json(msg="项目添加成功!")
Ejemplo n.º 8
0
    async def post(self, request):
        username = request.json.get("username", None)
        password = request.json.get("password", "")
        email = request.json.get("email", "")

        register_user = await models.UserInfo.filter(username=username).first()
        register_email = await models.UserInfo.filter(email=email).first()
        if register_user or register_email:
            return resp_json(FAIL, msg="用户已经存在")

        context = {"username": username, "password": password, "email": email}

        await models.UserInfo.create(**context)
        return resp_json(msg="用户注册成功!", body=context)
Ejemplo n.º 9
0
    async def patch(self, request):
        pk = request.json.get("variableData")['id']
        instance = await self.model.filter(pk=pk).first()
        if not instance:
            return resp_json(FAIL, msg="变量不存在!")
        instance.key = request.json.get("variableData")["key"]
        instance.value = request.json.get("variableData")["value"]

        schema = self.get_schema(request)
        result = schema.dump(instance)

        await instance.save()

        return resp_json(result.data)
Ejemplo n.º 10
0
    async def get(self, request):
        if self.request.args.get("row"):
            queryset = await self.model.filter(id=self.request.args.get("row"))
            schema = self.get_schema(request)
            result = schema.dump(queryset, many=True)
            return resp_json(body=result.data)

        else:
            pk = self.request.args.get("project")
            queryset = await self.model.filter(project_id=pk)

            schema = self.get_schema(request)
            result = schema.dump(queryset, many=True)

            return resp_json(body=result.data)
Ejemplo n.º 11
0
    async def post(self, request):

        code = request.json[0].get("code")
        debug = DebugCode(code)
        debug.run()

        return resp_json(msg="项目运行成功!")
Ejemplo n.º 12
0
    async def get(self, request):
        queryset = await self.model.all()

        schema = self.get_schema(request)
        result = schema.dump(queryset, many=True)

        return resp_json(body=result.data)
Ejemplo n.º 13
0
    async def post(self, request):
        project_id = request.json.get("project")
        pro = await models.Project.filter(pk=project_id).first()

        if not project_id:
            return resp_json(FAIL, msg="项目不存在")
        result = {
            "name": request.json.get("name"),
            "identity": request.json.get("data"),
            "status": request.json.get("switch"),
            "send_type": request.json.get("strategy"),
            "config": request.json.get("corntab"),
            "receiver": request.json.get("receiver"),
            "copy": request.json.get("copy"),
            "project": pro,
        }
        await models.Schedule.create(**result)
        return resp_json(msg="报告添加成功!")
Ejemplo n.º 14
0
    async def post(self, request):
        host = await models.HostIP.filter(name=request.json.get("host")
                                          ).first()
        config = await models.Config.filter(name=request.json.get("config")
                                            ).first()
        name = request.json.get("name")
        back_async = request.json.get("async")
        relation = request.json.get("relation")
        pro = await models.Project.filter(pk=request.json.get("project")
                                          ).first()

        config_body = {} if request.json.get("config") == "请选择" else eval(
            config.body)

        test_case = []

        if host != "请选择":
            host = await models.HostIP.get(name=host, project=pro)
        for relation_id in relation:
            api = await models.API.filter(
                project=request.json.get("project"),
                relation=relation_id).order_by("id").values("body")

            for content in api:
                api = eval(content['body'])

        data = {
            "project_mapping": {
                "PWD": "",
                "functions": {},
                "env": {}
            },
            "testcases": []
        }

        test_struct = {"config": config_body, "teststeps": [api]}

        data["testcases"].append(test_struct)

        runner = HttpRunner(failfast=False)
        runner.run(data)

        if back_async:
            summary = loader.TEST_NOT_EXISTS
            summary["msg"] = "接口运行中,请稍后查看报告"
        else:
            summary = runner.summary
        result = {
            "name": summary["time"]["start_datetime"],
            "type": 1,
            "summary": [summary],
            "project": pro
        }
        await models.Report.create(**result)

        return resp_json(msg="报告添加成功!")
Ejemplo n.º 15
0
    async def patch(self, request):
        name = request.json.get("name", None)
        pk = request.json.get("id")
        instance = await self.model.get_or_404(pk)

        if not instance:
            return resp_json(FAIL, msg="项目不存在!")
        if name != instance.name:
            if await models.Project.filter(name=name).first():
                return resp_json(FAIL, msg="项目已存在!")

        instance.name = name
        instance.desc = request.json.get("desc")
        schema = self.get_schema(request)
        result = schema.dump(instance)

        await instance.save()

        return resp_json(msg="请求成功", body=result.data)
Ejemplo n.º 16
0
    async def post(self, request):
        username = request.json.get("username", None)
        password = request.json.get("password", "")

        if not username and not password:
            return resp_json(FAIL, msg="用户名密码错误")

        user_obj = await models.UserInfo.filter(username=username).first()

        if username != user_obj.username:
            return resp_json(FAIL, msg="用户不存在")
        if password != user_obj.password:
            return resp_json(FAIL, msg="密码错误!")
        token = generate_token(username)
        body = {
            "username": username,
            "password": password,
            "token": token,
        }
        return resp_json(body=body)
Ejemplo n.º 17
0
    async def patch(self, request):
        project_id = request.json.get("project_id")
        code = request.json.get("code")
        pro = await models.Project.filter(pk=project_id).first()

        result = {
            "code": code,
            "project": pro,
        }
        await models.DebugTalk.create(**result)

        return resp_json()
Ejemplo n.º 18
0
    async def get(self, request):
        host = await models.HostIP.filter(name=self.request.args.get("host")
                                          ).first()
        name = self.request.args.get("name")
        pro = self.request.args.get("project")

        test_list = await models.CaseStep.filter(
            case_id__in=self.request.args.get("id")
        ).order_by("step").values("body")

        test_case = []
        config = {}
        if host != "请选择":
            host = await models.HostIP.filter(name=host, project=pro)

        for content in test_list:

            body = eval(content["body"])
            if "base_url" in body["request"]:
                config = await models.Config.filter(
                    name=body["name"], project=request.json.get("project"))
                continue
            test_case.append(parse_host(host, body))

        data = {
            "project_mapping": {
                "PWD": "",
                "functions": {},
                "env": {}
            },
            "testcases": []
        }

        test_struct = {"config": config, "teststeps": test_case}

        data["testcases"].append(test_struct)

        runner = HttpRunner(failfast=False)
        runner.run(data)

        summary = runner.summary

        result = {
            "name": summary["time"]["start_datetime"],
            "type": 1,
            "summary": [summary],
            "project": pro
        }
        await models.Report.create(**result)

        return resp_json(msg="报告添加成功!")
Ejemplo n.º 19
0
    async def get(self, request):
        api = await models.API.filter(id=self.request.args.get("id")).first()
        config = await models.Config.filter(
            name=self.request.args.get("config")).first()

        pro = await models.Project.filter(pk=api.project_id).first()

        debug_talk = await models.DebugTalk.filter(project_id=api.project_id
                                                   ).first()

        variables = await models.Variables.filter(project_id=api.project_id
                                                  ).values("key", "value")

        config_body = {} if self.request.args.get("config") == "请选择" else eval(
            config.body)

        data = {
            "project_mapping": {
                "PWD": "",
                "functions": {},
                "env": {}
            },
            "testcases": []
        }

        test_struct = {"config": config_body, "teststeps": [eval(api.body)]}

        data["testcases"].append(test_struct)

        runner = HttpRunner(failfast=False)
        runner.run(data)

        summary = runner.summary

        result = {
            "name": summary["time"]["start_datetime"],
            "type": 1,
            "summary": [summary],
            "project": pro
        }
        await models.Report.create(**result)

        return resp_json(msg="报告添加成功!")
Ejemplo n.º 20
0
    async def post(self, request):

        host = await models.HostIP.filter(name=request.json.get("host")
                                          ).first()
        config_body = await models.Config.filter(
            name=request.json.get("config")).first()

        pro = await models.Project.filter(pk=request.json.get("project")
                                          ).first()

        config = {} if request.json.get("config") == "请选择" else eval(
            config_body.body)

        test_config = {
            "name": request.json.get("name"),
            "request": {
                "url": request.json.get("url"),
                "method": request.json.get("method"),
                "headers": request.json.get("header")["header"],
                "form": request.json.get("request")["form"]["data"],
                "json": request.json.get("request")["json"],
                "params": request.json.get("request")["params"]["params"],
            },
            "extract": request.json.get("extract")["extract"],
            "validate": request.json.get("validate")["validate"],
            "setup_hooks": request.json.get("hooks")["setup_hooks"],
            "teardown_hooks": request.json.get("hooks")["teardown_hooks"],
        }

        test_case = {
            "name": request.json.get("name"),
            "body": test_config,
            "url": request.json.get("url"),
            "method": request.json.get("method"),
            "relation": request.json.get("nodeId"),
            "project": pro,
        }

        data = {
            "project_mapping": {
                "PWD": "",
                "functions": {},
                "env": {}
            },
            "testcases": []
        }

        test_struct = {"config": config, "teststeps": [test_case]}

        data["testcases"].append(test_struct)

        runner = HttpRunner(failfast=False)
        runner.run(data)
        summary = runner.summary

        result = {
            "name": summary["time"]["start_datetime"],
            "type": 1,
            "summary": [summary],
            "project": pro
        }
        await models.Report.create(**result)

        return resp_json(msg="报告添加成功!")
Ejemplo n.º 21
0
    async def post(self, request):

        host = await models.HostIP.filter(name=request.json.get("host")
                                          ).first()
        name = request.json.get("name")
        back_async = request.json.get("async")
        relation = request.json.get("relation")
        pro = await models.Project.filter(pk=request.json.get("project")
                                          ).first()

        test_sets = []
        suite_list = []
        config_list = []

        if host != "请选择":
            host = await models.HostIP.get(name=host, project=pro)
        for relation_id in relation:
            suite = await models.Case.filter(
                project=request.json.get("project"),
                relation=relation_id).order_by("id").values("id", "name")

            for content in suite:
                test_list = await models.CaseStep.filter(
                    case_id=content["id"]).order_by("step").values("body")
                testcase_list = []
                config = {}
                for content in test_list:
                    body = eval(content['body'])

                    if "base_url" in body["request"]:
                        config = await models.Config.filter(
                            name=body["name"],
                            project=request.json.get("project"))
                        continue
                    testcase_list.append(parse_host(host, body))

                config_list.append(parse_host(host, config))
                test_sets.append(testcase_list)
                suite_list += suite

        data = {
            "project_mapping": {
                "PWD": "",
                "functions": {},
                "env": {}
            },
            "testcases": []
        }

        test_struct = {"config": config, "teststeps": suite_list}

        data["testcases"].append(test_struct)

        runner = HttpRunner(failfast=False)
        runner.run(data)

        if back_async:
            summary = loader.TEST_NOT_EXISTS
            summary["msg"] = "接口运行中,请稍后查看报告"
        else:
            summary = runner.summary

        result = {
            "name": summary["time"]["start_datetime"],
            "type": 1,
            "summary": [summary],
            "project": pro
        }
        await models.Report.create(**result)

        return resp_json(msg="报告添加成功!")