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')
def test_create_protocol(self, mock_plugin_verify, mock_list_secrets, mock_get_plugin, *args): secret_id = utils.generate_id('secret') plugin_id = utils.generate_id('plugin') plugin_version = '1.0' mock_plugin_verify.return_value = { 'metadata': { 'supported_schema': ['slack_webhook', 'spaceone_user'], 'data_type': 'PLAIN_TEXT' } } mock_list_secrets.return_value = { 'results': [{ 'secret_id': secret_id, 'schema': 'aws_access_key' }], 'total_count': 1 } mock_get_plugin.return_value = { 'name': 'notification-slack-protocol', 'service_type': 'notification.Protocol', 'image': 'pyengine/notification-slack-protocol', 'capability': { 'supported_schema': ['slack_webhook', 'spaceone_user'], 'data_type': 'PLAIN_TEXT' }, 'tags': { 'description': 'Notification Slack Protocol', 'spaceone:plugin_name': 'notification-slack-protocol' } } params = { 'name': 'Slack Notification', 'plugin_info': { 'plugin_id': plugin_id, 'version': plugin_version, 'options': {}, }, 'tags': { utils.random_string(): utils.random_string() }, 'domain_id': self.domain_id } self.transaction.method = 'create' protocol_svc = ProtocolService(transaction=self.transaction) protocol_vo = protocol_svc.create(params.copy()) print_data(protocol_vo.to_dict(), 'test_create_protocol') ProtocolInfo(protocol_vo) self.assertIsInstance(protocol_vo, Protocol) self.assertEqual(params['name'], protocol_vo.name) self.assertEqual(params['tags'], protocol_vo.tags) self.assertEqual(params['domain_id'], protocol_vo.domain_id)
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)
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_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_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_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': { '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)