def __init__(self, component_code=None, *args, **kwargs):
     self.component = FancyDict({
         'code': component_code,
         'global_outputs': FancyDict({}),
         'inputs': FancyDict({})
     })
     super(ServiceActivity, self).__init__(*args, **kwargs)
    def test_get_user_project_list__success(self):

        project_list = [
            FancyDict(id=1, bk_biz_id=1, name="name1", is_disable=False),
            FancyDict(id=2, bk_biz_id=2, name="name2", is_disable=False),
            FancyDict(id=3, bk_biz_id=3, name="name3", is_disable=True),
        ]

        with patch(
                APIGW_GET_USER_PROJECT_LIST_GET_USER_PROJECT_LIST,
                MagicMock(return_value=project_list),
        ):
            response = self.client.get(path=self.url(),
                                       data={"bk_username": "******"})

            data = json.loads(response.content)

            self.assertTrue(data["result"])
            self.assertEqual(data["code"], err_code.SUCCESS.code)
            self.assertEqual(
                data["data"],
                [
                    {
                        "project_id": 1,
                        "bk_biz_id": 1,
                        "name": "name1"
                    },
                    {
                        "project_id": 2,
                        "bk_biz_id": 2,
                        "name": "name2"
                    },
                ],
            )
Exemple #3
0
 def __init__(self, inputs, outputs=None):
     if not isinstance(inputs, dict):
         raise exceptions.DataTypeErrorException('inputs is not dict')
     self.inputs = FancyDict(inputs)
     if outputs is None:
         outputs = {}
     if not isinstance(outputs, dict):
         raise exceptions.DataTypeErrorException('outputs is not dict')
     self.outputs = FancyDict(outputs)
Exemple #4
0
 def __init__(self,
              component_code=None,
              failure_handler=None,
              *args,
              **kwargs):
     self.component = FancyDict({
         'code': component_code,
         'inputs': FancyDict({})
     })
     self.failure_handler = '{module}.{name}'.format(
         module=failure_handler.__module__,
         name=failure_handler.__name__) if failure_handler else None
     super(ServiceActivity, self).__init__(*args, **kwargs)
class GetTemplateSchemesAPITest(APITest):
    def url(self):
        return "/apigw/get_template_schemes/{project_id}/{template_id}/"

    @patch(
        PROJECT_GET,
        MagicMock(return_value=MockProject(
            project_id=TEST_PROJECT_ID,
            name=TEST_PROJECT_NAME,
            bk_biz_id=TEST_BIZ_CC_ID,
            from_cmdb=True,
        )),
    )
    @patch(
        TASKTEMPLATE_GET,
        MagicMock(return_value=FancyDict(pipeline_template=FancyDict(
            id=TEST_PIPELINE_TEMPLATE_ID))),
    )
    @patch(
        TEMPLATESCHEME_FILTER,
        MagicMock(return_value=[
            FancyDict(unique_id="id1", name="name1", data="data1"),
            FancyDict(unique_id="id2", name="name2", data="data2"),
        ]),
    )
    def test_get_template_schemes(self):
        response = self.client.get(path=self.url().format(
            project_id=TEST_PROJECT_ID, template_id=TEST_TASK_TEMPLATE_ID))

        data = json.loads(response.content)

        self.assertTrue(data["result"])
        self.assertEqual(data["code"], err_code.SUCCESS.code)
        self.assertEqual(
            data["data"],
            [
                {
                    "id": "id1",
                    "name": "name1",
                    "data": "data1"
                },
                {
                    "id": "id2",
                    "name": "name2",
                    "data": "data2"
                },
            ],
        )
Exemple #6
0
class Params(object):
    def __init__(self, params=None):
        self.params = FancyDict(params or {})

    def to_dict(self):
        base = {}

        for key, value in self.params.items():
            base[key] = value.to_dict() if isinstance(value, Var) else value

        return base
Exemple #7
0
 def __init__(self,
              start,
              data=None,
              params=None,
              global_outputs=None,
              *args,
              **kwargs):
     self.start = start
     self.data = data
     self.params = params or {}
     self.global_outputs = FancyDict(global_outputs or {})
     super(SubProcess, self).__init__(*args, **kwargs)
Exemple #8
0
 def __init__(self,
              component_code=None,
              failure_handler=None,
              error_ignorable=False,
              timeout=None,
              skippable=True,
              retryable=True,
              *args,
              **kwargs):
     self.component = FancyDict({
         'code': component_code,
         'inputs': FancyDict({})
     })
     self.failure_handler = '{module}.{name}'.format(
         module=failure_handler.__module__,
         name=failure_handler.__name__) if failure_handler else None
     self.error_ignorable = error_ignorable
     self.timeout = timeout
     self.skippable = skippable
     self.retryable = retryable
     super(ServiceActivity, self).__init__(*args, **kwargs)
Exemple #9
0
class Data(object):
    def __init__(self, inputs=None, outputs=None):
        self.inputs = FancyDict(inputs or {})
        self.outputs = outputs or []

    def to_dict(self):
        base = {'inputs': {},
                'outputs': self.outputs}

        for key, value in self.inputs.items():
            base['inputs'][key] = value.to_dict() if isinstance(value, Var) else value

        return base
Exemple #10
0
    def __init__(self,
                 get_outputs_return=None,
                 get_inputs_return=None,
                 get_one_of_outputs_return=None,
                 ex_data=None):
        get_inputs_return = get_inputs_return or FancyDict()
        get_outputs_return = get_outputs_return or FancyDict()
        self.update_outputs = mock.MagicMock()
        self.get_outputs = mock.MagicMock(return_value=get_outputs_return)
        self.set_outputs = mock.MagicMock()
        self.get_inputs = mock.MagicMock(return_value=get_inputs_return)
        self.inputs = get_inputs_return
        self.outputs = get_outputs_return
        self.ex_data = ex_data

        if isinstance(get_one_of_outputs_return, dict):
            def side_effect(arg):
                return get_one_of_outputs_return[arg]

            self.get_one_of_outputs = mock.MagicMock(side_effect=side_effect)
        else:
            self.get_one_of_outputs = mock.MagicMock(return_value=get_one_of_outputs_return)
Exemple #11
0
class DataObject(object):
    def __init__(self, inputs, outputs=None):
        if not isinstance(inputs, dict):
            raise exceptions.DataTypeErrorException('inputs is not dict')
        self.inputs = FancyDict(inputs)
        if outputs is None:
            outputs = {}
        if not isinstance(outputs, dict):
            raise exceptions.DataTypeErrorException('outputs is not dict')
        self.outputs = FancyDict(outputs)

    def get_inputs(self):
        return self.inputs

    def get_outputs(self):
        return self.outputs

    def get_one_of_inputs(self, key, default=None):
        return self.inputs.get(key, default)

    def get_one_of_outputs(self, key, default=None):
        return self.outputs.get(key, default)

    def set_outputs(self, key, value):
        self.outputs.update({key: value})
        return True

    def reset_outputs(self, outputs):
        if not isinstance(outputs, dict):
            raise exceptions.DataTypeErrorException('outputs is not dict')
        self.outputs = FancyDict(outputs)
        return True

    def update_outputs(self, dic):
        self.outputs.update(dic)

    def inputs_copy(self):
        return copy.deepcopy(self.inputs)

    def outputs_copy(self):
        return copy.deepcopy(self.outputs)

    def override_inputs(self, inputs):
        if not isinstance(inputs, FancyDict):
            inputs = FancyDict(inputs)
        self.inputs = inputs

    def override_outputs(self, outputs):
        if not isinstance(outputs, FancyDict):
            outputs = FancyDict(outputs)
        self.outputs = outputs

    def serializer(self):
        result = {'inputs': self.inputs, 'outputs': self.outputs}
        return json.dumps(result)

    def __setstate__(self, state):
        self.inputs = FancyDict(state['inputs'])
        self.outputs = FancyDict(state['outputs'])
Exemple #12
0
 def __init__(self,
              start=None,
              data=None,
              params=None,
              global_outputs=None,
              replace_id=False,
              template_id=None,
              *args,
              **kwargs):
     self.start = start
     self.data = data
     self.params = params or {}
     self.replace_id = replace_id
     self.global_outputs = FancyDict(global_outputs or {})
     self.template_id = template_id
     super(SubProcess, self).__init__(*args, **kwargs)
Exemple #13
0
 def __init__(self, inputs=None, outputs=None):
     self.inputs = FancyDict(inputs or {})
     self.outputs = outputs or []
Exemple #14
0
 def __setstate__(self, state):
     self.inputs = FancyDict(state['inputs'])
     self.outputs = FancyDict(state['outputs'])
Exemple #15
0
 def override_outputs(self, outputs):
     if not isinstance(outputs, FancyDict):
         outputs = FancyDict(outputs)
     self.outputs = outputs
Exemple #16
0
 def override_inputs(self, inputs):
     if not isinstance(inputs, FancyDict):
         inputs = FancyDict(inputs)
     self.inputs = inputs
class GetUserProjectDetailAPITest(APITest):
    def url(self):
        return "/apigw/get_user_project_detail/{project_id}/"

    @patch(
        PROJECT_GET,
        MagicMock(return_value=MockProject(
            project_id=TEST_PROJECT_ID,
            name=TEST_PROJECT_NAME,
            bk_biz_id=TEST_BIZ_CC_ID,
            from_cmdb=True,
        )),
    )
    @patch(
        APIGW_GET_USER_PROJECT_DETAIL_GET_BUSINESS_DETAIL,
        MagicMock(side_effect=Exception()),
    )
    def test_get_user_project_detail__get_business_detail_raise(self):
        response = self.client.get(path=self.url().format(
            project_id=TEST_PROJECT_ID))

        data = json.loads(response.content)

        self.assertFalse(data["result"])
        self.assertTrue("message" in data)
        self.assertEqual(data["code"], err_code.UNKNOWN_ERROR.code)

    @patch(
        PROJECT_GET,
        MagicMock(return_value=MockProject(
            project_id=TEST_PROJECT_ID_2,
            name=TEST_PROJECT_NAME,
            bk_biz_id=TEST_BIZ_CC_ID,
            from_cmdb=True,
        )),
    )
    @patch(
        APIGW_GET_USER_PROJECT_DETAIL_GET_BUSINESS_DETAIL,
        MagicMock(return_value=FancyDict(
            bk_biz_id=TEST_BIZ_CC_ID,
            bk_biz_name=TEST_BIZ_NAME,
            bk_biz_developer=TEST_BIZ_DEVELOPERS,
            bk_biz_maintainer=TEST_BIZ_MAINTAINER,
            bk_biz_tester=TEST_BIZ_TESTER,
            bk_biz_productor=TEST_BIZ_PRODUCTOR,
        )),
    )
    def test_get_user_project_detail__success(self):
        response = self.client.get(path=self.url().format(
            project_id=TEST_PROJECT_ID_2))

        data = json.loads(response.content)

        self.assertTrue(data["result"])
        self.assertEqual(data["code"], err_code.SUCCESS.code)
        self.assertEqual(
            data["data"],
            {
                "project_id": TEST_PROJECT_ID_2,
                "project_name": TEST_PROJECT_NAME,
                "from_cmdb": True,
                "bk_biz_id": TEST_BIZ_CC_ID,
                "bk_biz_name": TEST_BIZ_NAME,
                "bk_biz_developer": TEST_BIZ_DEVELOPERS,
                "bk_biz_maintainer": TEST_BIZ_MAINTAINER,
                "bk_biz_tester": TEST_BIZ_TESTER,
                "bk_biz_productor": TEST_BIZ_PRODUCTOR,
            },
        )
Exemple #18
0
 def __init__(self):
     self.inputs = FancyDict({})
     self.outputs = FancyDict({})
Exemple #19
0
 def __init__(self, params=None):
     self.params = FancyDict(params or {})
Exemple #20
0
 def reset_outputs(self, outputs):
     if not isinstance(outputs, dict):
         raise exceptions.DataTypeErrorException('outputs is not dict')
     self.outputs = FancyDict(outputs)
     return True