def test_get_protocol(self, *args):
        protocol_vo = ProtocolFactory(domain_id=self.domain_id)
        params = {
            'protocol_id': protocol_vo.protocol_id,
            'domain_id': self.domain_id
        }

        self.transaction.method = 'get'
        protocol_svc = ProtocolService(transaction=self.transaction)
        protocol_vo = protocol_svc.get(params)

        print_data(protocol_vo.to_dict(), 'test_get_protocol')
        ProtocolInfo(protocol_vo)

        self.assertIsInstance(protocol_vo, Protocol)
    def test_update_project_channel_secret(self, *args):
        protocol_vo = ProtocolFactory(domain_id=self.domain_id)
        project_channel_vo = ProjectChannelFactory(
            protocol_id=protocol_vo.protocol_id,
            domain_id=self.domain_id,
            secret_id='secret-xyz')
        name = 'Update Project Channel'
        data = {'phone_number': '0109994444'}

        params = {
            'name': name,
            'project_channel_id': project_channel_vo.project_channel_id,
            'data': data,
            'tags': {
                utils.random_string(): utils.random_string()
            },
            'domain_id': self.domain_id
        }

        self.transaction.method = 'update'
        prj_ch_svc = ProjectChannelService(transaction=self.transaction)
        update_project_ch_vo = prj_ch_svc.update(params.copy())

        print_data(update_project_ch_vo.to_dict(),
                   'test_update_project_channel')
        ProjectChannelInfo(update_project_ch_vo)

        self.assertIsInstance(update_project_ch_vo, ProjectChannel)
        self.assertEqual(name, update_project_ch_vo.name)
        self.assertEqual('secret-xyz', update_project_ch_vo.secret_id)
        self.assertEqual({}, update_project_ch_vo.data)
        self.assertEqual(params['tags'], update_project_ch_vo.tags)
        self.assertEqual(params['domain_id'], update_project_ch_vo.domain_id)
    def test_create_user_channel_no_schedule(self, *args):
        protocol_vo = ProtocolFactory(domain_id=self.domain_id)
        protocol_id = protocol_vo.protocol_id

        params = {
            'name': 'Test User Channel',
            'protocol_id': protocol_id,
            'user_id': 'bluese05',
            'data': {
                'token': 'xxxxxx',
                'channel': 'bob'
            },
            'is_scheduled': False,
            'schedule': None,
            'tags': {
                utils.random_string(): utils.random_string()
            },
            'domain_id': self.domain_id
        }

        self.transaction.method = 'create'
        user_ch_svc = UserChannelService(transaction=self.transaction)
        user_ch_vo = user_ch_svc.create(params.copy())

        print_data(user_ch_vo.to_dict(), 'test_create_project_channel')
        UserChannelInfo(user_ch_vo)

        self.assertIsInstance(user_ch_vo, UserChannel)
        self.assertEqual(params['name'], user_ch_vo.name)
        self.assertEqual(False, user_ch_vo.is_scheduled)
        self.assertEqual(None, user_ch_vo.schedule)
        self.assertEqual(False, user_ch_vo.is_subscribe)
        self.assertEqual(None, user_ch_vo.secret_id)
        self.assertEqual(params['tags'], user_ch_vo.tags)
        self.assertEqual(params['domain_id'], user_ch_vo.domain_id)
    def test_stat_protocol(self, *args):
        protocol_vos = ProtocolFactory.build_batch(10, domain_id=self.domain_id)
        list(map(lambda vo: vo.save(), protocol_vos))

        params = {
            'domain_id': self.domain_id,
            'query': {
                'aggregate': [{
                    'group': {
                        'keys': [{
                            'key': 'protocol_id',
                            'name': 'Id'
                        }],
                        'fields': [{
                            'operator': 'count',
                            'name': 'Count'
                        }]
                    }
                }, {
                    'sort': {
                        'key': 'Count',
                        'desc': True
                    }
                }]
            }
        }

        self.transaction.method = 'stat'
        protocol_svc = ProtocolService(transaction=self.transaction)
        values = protocol_svc.stat(params)
        StatisticsInfo(values)

        print_data(values, 'test_stat_protocol')
示例#5
0
    def test_list_protocols_by_protocol_type(self, *args):
        internal_protocol_vos = ProtocolFactory.build_batch(
            5, protocol_type='INTERNAL', domain_id=self.domain_id)
        external_protocol_vos = ProtocolFactory.build_batch(
            10, protocol_type='EXTERNAL', domain_id=self.domain_id)
        list(map(lambda vo: vo.save(), external_protocol_vos))

        params = {'protocol_type': 'EXTERNAL', 'domain_id': self.domain_id}

        self.transaction.method = 'list'
        protocol_svc = ProtocolService(transaction=self.transaction)
        protocol_vos, total_count = protocol_svc.list(params)
        ProtocolsInfo(protocol_vos, total_count)

        self.assertEqual(len(protocol_vos), 10)
        self.assertIsInstance(protocol_vos[0], Protocol)
        self.assertEqual(total_count, 10)
    def test_update_protocol_plugin(self, mock_plugin_init, mock_list_secrets, *args):
        plugin_version = '1.2'
        update_options = {
            'test': 'xxxxx'
        }

        mock_plugin_init.return_value = {
            'metadata': {
                'data_type': 'PLAIN_TEXT',
                'data': {
                    'schema': {
                        'properties': {
                            'phone_number': {
                                'minLength': 10,
                                'title': 'Phone Number',
                                'type': 'string',
                                'pattern': '^01(?:0|1|[6-9])[.-]?(\\d{3}|\\d{4}[.-]?(\\d{4})$'
                            }
                        },
                        'required': [
                            'phone_number'
                        ],
                        'type': 'object'
                    }
                }
            }
        }

        mock_list_secrets.return_value = {
            'results': [{
                'secret_id': utils.generate_id('secret')
            }],
            'total_count': 1
        }

        protocol_vo = ProtocolFactory(domain_id=self.domain_id)
        params = {
            'protocol_id': protocol_vo.protocol_id,
            'version': plugin_version,
            'options': update_options,
            'domain_id': self.domain_id
        }

        self.transaction.method = 'update_plugin'
        protocol_svc = ProtocolService(transaction=self.transaction)
        new_protocol_vo = protocol_svc.update_plugin(params.copy())

        print_data(new_protocol_vo.to_dict(), 'test_update_protocol_plugin')
        ProtocolInfo(new_protocol_vo)

        self.assertIsInstance(new_protocol_vo, Protocol)
        self.assertEqual(new_protocol_vo.protocol_id, protocol_vo.protocol_id)
        self.assertEqual(params['version'], new_protocol_vo.plugin_info.version)
        self.assertEqual(params['options'], new_protocol_vo.plugin_info.options)
    def test_delete_protocol(self, *args):
        protocol_vo = ProtocolFactory(domain_id=self.domain_id)
        params = {
            'protocol_id': protocol_vo.protocol_id,
            'domain_id': self.domain_id
        }

        self.transaction.method = 'delete'
        protocol_svc = ProtocolService(transaction=self.transaction)
        result = protocol_svc.delete(params)

        self.assertIsNone(result)
示例#8
0
    def test_list_protocols_by_name(self, *args):
        protocol_vos = ProtocolFactory.build_batch(10,
                                                   domain_id=self.domain_id)
        list(map(lambda vo: vo.save(), protocol_vos))

        params = {'name': protocol_vos[0].name, 'domain_id': self.domain_id}

        self.transaction.method = 'list'
        protocol_svc = ProtocolService(transaction=self.transaction)
        protocol_vos, total_count = protocol_svc.list(params)
        ProtocolsInfo(protocol_vos, total_count)

        self.assertEqual(len(protocol_vos), 1)
        self.assertIsInstance(protocol_vos[0], Protocol)
        self.assertEqual(total_count, 1)
    def test_create_project_channel_secret(self, *args):
        protocol_capability = {
            'data_type': 'SECRET',
            'supported_schema': ['slack_webhook']
        }

        protocol_vo = ProtocolFactory(domain_id=self.domain_id, capability=protocol_capability)
        protocol_id = protocol_vo.protocol_id

        params = {
            'name': 'Test Project Channel',
            'protocol_id': protocol_id,
            'schema': 'slack_webhook',
            'project_id': 'project-xyz',
            'data': {
                'token': 'xxxxxx',
                'channel': 'bob'
            },
            'is_scheduled': True,
            'schedule': {
                'day_of_week': ['MON'],
                'start_hour': 1,
                'end_hour': 10
            },
            'tags': {
                utils.random_string(): utils.random_string()
            },
            'domain_id': self.domain_id
        }

        self.transaction.method = 'create'
        prj_ch_svc = ProjectChannelService(transaction=self.transaction)
        project_ch_vo = prj_ch_svc.create(params.copy())

        print_data(project_ch_vo.to_dict(), 'test_create_project_channel')
        ProjectChannelInfo(project_ch_vo)

        self.assertIsInstance(project_ch_vo, ProjectChannel)
        self.assertEqual(params['name'], project_ch_vo.name)
        self.assertEqual(True, project_ch_vo.is_scheduled)
        self.assertEqual(False, project_ch_vo.is_subscribe)
        self.assertEqual('secret-xyz', project_ch_vo.secret_id)
        self.assertEqual({}, project_ch_vo.data)
        self.assertEqual(params['schedule']['day_of_week'], project_ch_vo.schedule.day_of_week)
        self.assertEqual(params['schedule']['start_hour'], project_ch_vo.schedule.start_hour)
        self.assertEqual(params['tags'], project_ch_vo.tags)
        self.assertEqual(params['domain_id'], project_ch_vo.domain_id)
    def test_disable_protocol(self, *args):
        protocol_vo = ProtocolFactory(domain_id=self.domain_id, state='ENABLED')
        params = {
            'protocol_id': protocol_vo.protocol_id,
            'domain_id': self.domain_id
        }

        self.transaction.method = 'disable'
        protocol_svc = ProtocolService(transaction=self.transaction)
        updated_protocol_vo = protocol_svc.disable(params.copy())

        print_data(updated_protocol_vo.to_dict(), 'test_disable_protocol')
        ProtocolInfo(updated_protocol_vo)

        self.assertIsInstance(updated_protocol_vo, Protocol)
        self.assertEqual(updated_protocol_vo.protocol_id, protocol_vo.protocol_id)
        self.assertEqual('DISABLED', updated_protocol_vo.state)
    def test_create_user_channel_secret(self, *args):
        protocol_vo = ProtocolFactory(domain_id=self.domain_id)
        protocol_id = protocol_vo.protocol_id

        params = {
            'name': 'Test User Channel',
            'protocol_id': protocol_id,
            'user_id': 'bluese05',
            'data': {
                'phone_number': '0107772222'
            },
            'is_scheduled': True,
            'schedule': {
                'day_of_week': ['MON'],
                'start_hour': 1,
                'end_hour': 10
            },
            'tags': {
                utils.random_string(): utils.random_string()
            },
            'domain_id': self.domain_id
        }

        self.transaction.method = 'create'
        user_ch_svc = UserChannelService(transaction=self.transaction)
        user_ch_vo = user_ch_svc.create(params.copy())

        print_data(user_ch_vo.to_dict(), 'test_create_project_channel')
        UserChannelInfo(user_ch_vo)

        self.assertIsInstance(user_ch_vo, UserChannel)
        self.assertEqual(params['name'], user_ch_vo.name)
        self.assertEqual(True, user_ch_vo.is_scheduled)
        self.assertEqual(False, user_ch_vo.is_subscribe)
        self.assertEqual(None, user_ch_vo.secret_id)
        self.assertEqual({'phone_number': '0107772222'}, user_ch_vo.data)
        self.assertEqual(params['schedule']['day_of_week'],
                         user_ch_vo.schedule.day_of_week)
        self.assertEqual(params['schedule']['start_hour'],
                         user_ch_vo.schedule.start_hour)
        self.assertEqual(params['tags'], user_ch_vo.tags)
        self.assertEqual(params['domain_id'], user_ch_vo.domain_id)
    def test_create_notification_with_project_channel(self, *args):
        protocol_vo = ProtocolFactory(domain_id=self.domain_id)
        project_channel_vo = ProjectChannelFactory(
            domain_id=self.domain_id, protocol_id=protocol_vo.protocol_id)

        params = {
            'resource_type': 'identity.Project',
            'resource_id': project_channel_vo.project_id,
            'topic': 'topic-a',
            'message': {
                'message': 'TEST..'
            },
            'notification_type': 'ERROR',
            'notification_level': 'LV1',
            'domain_id': self.domain_id,
        }

        self.transaction.method = 'create'
        notification_svc = NotificationService(transaction=self.transaction)
        notification_svc.create(params.copy())
示例#13
0
    def test_update_protocol_plugin(self, mock_plugin_init, mock_list_secrets,
                                    *args):
        plugin_version = '1.2'
        update_options = {'test': 'xxxxx'}

        mock_plugin_init.return_value = {
            'metadata': {
                'supported_resource_type': ['inventory.Server'],
                'supported_stat': ['AVERAGE', 'MAX', 'MIN'],
                'required_keys': ['reference.resource_id']
            }
        }

        mock_list_secrets.return_value = {
            'results': [{
                'secret_id': utils.generate_id('secret')
            }],
            'total_count': 1
        }

        protocol_vo = ProtocolFactory(domain_id=self.domain_id)
        params = {
            'protocol_id': protocol_vo.protocol_id,
            'version': plugin_version,
            'options': update_options,
            'domain_id': self.domain_id
        }

        self.transaction.method = 'update_plugin'
        protocol_svc = ProtocolService(transaction=self.transaction)
        new_protocol_vo = protocol_svc.update_plugin(params.copy())

        print_data(new_protocol_vo.to_dict(), 'test_update_protocol_plugin')
        ProtocolInfo(new_protocol_vo)

        self.assertIsInstance(new_protocol_vo, Protocol)
        self.assertEqual(new_protocol_vo.protocol_id, protocol_vo.protocol_id)
        self.assertEqual(params['version'],
                         new_protocol_vo.plugin_info.version)
        self.assertEqual(params['options'],
                         new_protocol_vo.plugin_info.options)
    def test_stat_protocol_distinct(self, *args):
        protocol_vos = ProtocolFactory.build_batch(10, domain_id=self.domain_id)
        list(map(lambda vo: vo.save(), protocol_vos))

        params = {
            'domain_id': self.domain_id,
            'query': {
                'distinct': 'protocol_id',
                'page': {
                    'start': 2,
                    'limit': 3
                }
            }
        }

        self.transaction.method = 'stat'
        protocol_svc = ProtocolService(transaction=self.transaction)
        values = protocol_svc.stat(params)
        StatisticsInfo(values)

        print_data(values, 'test_stat_protocol_distinct')
    def test_update_protocol(self, *args):
        protocol_vo = ProtocolFactory(domain_id=self.domain_id)
        params = {
            'protocol_id': protocol_vo.protocol_id,
            'name': 'Update New Protocol',
            'tags': {
                'update_key': 'update_value'
            },
            'domain_id': self.domain_id
        }

        self.transaction.method = 'update'
        protocol_svc = ProtocolService(transaction=self.transaction)
        update_protocol_vo = protocol_svc.update(params.copy())

        print_data(update_protocol_vo.to_dict(), 'test_update_protocol')
        ProtocolInfo(update_protocol_vo)

        self.assertIsInstance(update_protocol_vo, Protocol)
        self.assertEqual(update_protocol_vo.protocol_id, protocol_vo.protocol_id)
        self.assertEqual(params['name'], update_protocol_vo.name)
        self.assertEqual(params['tags'], update_protocol_vo.tags)