Exemple #1
0
    def test_receiver_create_webhook_succeed(self, mock_create, mock_find):
        fake_cluster = mock.Mock()
        fake_cluster.user = self.ctx.user
        mock_find.return_value = fake_cluster

        fake_receiver = mock.Mock(id='FAKE_RECIEVER')
        fake_receiver.to_dict.return_value = {
            'id': 'FAKE_RECEIVER',
            'foo': 'bar'
        }
        mock_create.return_value = fake_receiver
        req = orro.ReceiverCreateRequestBody(name='r1',
                                             type=consts.RECEIVER_WEBHOOK,
                                             cluster_id='C1',
                                             action=consts.CLUSTER_RESIZE)

        result = self.eng.receiver_create(self.ctx, req.obj_to_primitive())

        self.assertIsInstance(result, dict)
        self.assertEqual('FAKE_RECEIVER', result['id'])
        mock_find.assert_called_once_with(self.ctx, 'C1')
        mock_create.assert_called_once_with(self.ctx,
                                            'webhook',
                                            fake_cluster,
                                            consts.CLUSTER_RESIZE,
                                            name='r1',
                                            user=self.ctx.user,
                                            project=self.ctx.project,
                                            domain=self.ctx.domain,
                                            params={})

        # test params passed
        mock_create.reset_mock()
        req = orro.ReceiverCreateRequestBody(name='r1',
                                             type=consts.RECEIVER_WEBHOOK,
                                             cluster_id='C1',
                                             action=consts.CLUSTER_RESIZE,
                                             params={'FOO': 'BAR'})

        self.eng.receiver_create(self.ctx, req.obj_to_primitive())
        mock_create.assert_called_once_with(self.ctx,
                                            'webhook',
                                            fake_cluster,
                                            consts.CLUSTER_RESIZE,
                                            name='r1',
                                            user=self.ctx.user,
                                            project=self.ctx.project,
                                            domain=self.ctx.domain,
                                            params={'FOO': 'BAR'})
Exemple #2
0
    def test_receiver_create_webhook_action_not_specified(self, mock_find):
        fake_cluster = mock.Mock()
        fake_cluster.user = self.ctx.user_id
        mock_find.return_value = fake_cluster
        req1 = orro.ReceiverCreateRequestBody(name='r1', type='webhook',
                                              cluster_id='C1')
        req2 = orro.ReceiverCreateRequestBody(name='r1', type='webhook',
                                              cluster_id='C1', action=None)

        for req in [req1, req2]:
            ex = self.assertRaises(rpc.ExpectedException,
                                   self.eng.receiver_create,
                                   self.ctx, req.obj_to_primitive())
            self.assertEqual(exc.BadRequest, ex.exc_info[0])
            self.assertEqual("Action name is required for creating webhook "
                             "receiver.", six.text_type(ex.exc_info[1]))
Exemple #3
0
 def test_receiver_create_request(self):
     body = receivers.ReceiverCreateRequestBody(**self.body)
     request = {'receiver': body}
     sot = receivers.ReceiverCreateRequest(**request)
     self.assertIsInstance(sot.receiver,
                           receivers.ReceiverCreateRequestBody)
     self.assertEqual('test-receiver', sot.receiver.name)
     self.assertEqual('message', sot.receiver.type)
Exemple #4
0
    def test_receiver_create_request_body(self):
        sot = receivers.ReceiverCreateRequestBody(**self.body)
        self.assertEqual('test-receiver', sot.name)
        self.assertEqual('message', sot.type)

        sot.obj_set_defaults()

        self.assertEqual({}, sot.actor)
        self.assertEqual({}, sot.params)
        self.assertFalse(sot.obj_attr_is_set('action'))
        self.assertFalse(sot.obj_attr_is_set('cluster_id'))
Exemple #5
0
    def test_receiver_create_webhook_cluster_not_specified(self, mock_find):
        fake_cluster = mock.Mock()
        fake_cluster.user = self.ctx.user_id
        mock_find.return_value = fake_cluster
        req1 = orro.ReceiverCreateRequestBody(name='r1',
                                              type='webhook',
                                              action='CLUSTER_RESIZE')
        req2 = orro.ReceiverCreateRequestBody(name='r1',
                                              type='webhook',
                                              cluster_id=None,
                                              action='CLUSTER_RESIZE')

        for req in [req1, req2]:
            ex = self.assertRaises(rpc.ExpectedException,
                                   self.svc.receiver_create, self.ctx,
                                   req.obj_to_primitive())
            self.assertEqual(exc.BadRequest, ex.exc_info[0])
            self.assertEqual(
                "Cluster identity is required for creating "
                "webhook receiver.", str(ex.exc_info[1]))
Exemple #6
0
    def test_receiver_create_name_duplicated(self, mock_get):
        cfg.CONF.set_override('name_unique', True, enforce_type=True)
        # Return an existing instance
        mock_get.return_value = mock.Mock()

        req = orro.ReceiverCreateRequestBody(name='r1', type='message')
        ex = self.assertRaises(rpc.ExpectedException, self.eng.receiver_create,
                               self.ctx, req.obj_to_primitive())
        self.assertEqual(exc.BadRequest, ex.exc_info[0])
        self.assertEqual(
            "The request is malformed: A receiver named 'r1' "
            "already exists.", six.text_type(ex.exc_info[1]))
Exemple #7
0
    def test_receiver_create_webhook_cluster_not_found(self, mock_find):
        mock_find.side_effect = exc.ResourceNotFound(type='cluster', id='C1')
        req = orro.ReceiverCreateRequestBody(
            name='r1', type=consts.RECEIVER_WEBHOOK, cluster_id='C1',
            action=consts.CLUSTER_RESIZE)

        ex = self.assertRaises(rpc.ExpectedException,
                               self.eng.receiver_create,
                               self.ctx, req.obj_to_primitive())

        self.assertEqual(exc.BadRequest, ex.exc_info[0])
        self.assertEqual("The referenced cluster 'C1' could not be found.",
                         six.text_type(ex.exc_info[1]))
Exemple #8
0
    def test_receiver_create_name_duplicated(self, mock_get):
        cfg.CONF.set_override('name_unique', True)
        # Return an existing instance
        mock_get.return_value = mock.Mock()
        req = orro.ReceiverCreateRequestBody(name='r1',
                                             type=consts.RECEIVER_MESSAGE)

        ex = self.assertRaises(rpc.ExpectedException, self.svc.receiver_create,
                               self.ctx, req.obj_to_primitive())

        self.assertEqual(exc.BadRequest, ex.exc_info[0])
        self.assertEqual("A receiver named 'r1' already exists.",
                         str(ex.exc_info[1]))
Exemple #9
0
 def test_receiver_create_request_body_full(self):
     body = copy.deepcopy(self.body)
     body['type'] = 'webhook'
     body['cluster_id'] = 'cluster-01'
     body['action'] = consts.CLUSTER_SCALE_OUT
     body['actor'] = {'user': '******', 'password': '******'}
     body['params'] = {'count': '1'}
     sot = receivers.ReceiverCreateRequestBody(**body)
     self.assertEqual('test-receiver', sot.name)
     self.assertEqual('webhook', sot.type)
     self.assertEqual('cluster-01', sot.cluster_id)
     self.assertEqual(consts.CLUSTER_SCALE_OUT, sot.action)
     self.assertEqual({'user': '******', 'password': '******'}, sot.actor)
     self.assertEqual({'count': '1'}, sot.params)
Exemple #10
0
    def test_receiver_create_webhook_invalid_action(self, mock_find):
        fake_cluster = mock.Mock()
        fake_cluster.user = '******'
        mock_find.return_value = fake_cluster
        req = orro.ReceiverCreateRequestBody(
            name='r1', type=consts.RECEIVER_WEBHOOK, cluster_id='C1',
            action=consts.CLUSTER_CREATE)

        ex = self.assertRaises(rpc.ExpectedException,
                               self.eng.receiver_create,
                               self.ctx, req.obj_to_primitive())

        self.assertEqual(exc.BadRequest, ex.exc_info[0])
        self.assertEqual("Action name cannot be any of ['CLUSTER_CREATE'].",
                         six.text_type(ex.exc_info[1]))
Exemple #11
0
    def test_receiver_create_message_succeed(self, mock_create):
        fake_receiver = mock.Mock(id='FAKE_RECEIVER')
        fake_receiver.to_dict.return_value = {
            'id': 'FAKE_RECEIVER',
            'foo': 'bar'
        }
        mock_create.return_value = fake_receiver

        req = orro.ReceiverCreateRequestBody(name='r1', type='message')
        result = self.eng.receiver_create(self.ctx, req.obj_to_primitive())

        self.assertIsInstance(result, dict)
        self.assertEqual('FAKE_RECEIVER', result['id'])
        mock_create.assert_called_once_with(
            self.ctx, 'message', None, None, name='r1', user=self.ctx.user_id,
            project=self.ctx.project_id, domain=self.ctx.domain_id, params={})
Exemple #12
0
    def test_receiver_create_webhook_forbidden(self, mock_create, mock_find):
        fake_cluster = mock.Mock()
        fake_cluster.user = '******'
        mock_find.return_value = fake_cluster
        req = orro.ReceiverCreateRequestBody(
            name='r1', type=consts.RECEIVER_WEBHOOK, cluster_id='C1',
            action=consts.CLUSTER_RESIZE)

        ex = self.assertRaises(rpc.ExpectedException,
                               self.eng.receiver_create,
                               self.ctx, req.obj_to_primitive())
        self.assertEqual(exc.Forbidden, ex.exc_info[0])

        fake_receiver = mock.Mock(id='FAKE_RECEIVER')
        fake_receiver.to_dict.return_value = {
            'id': 'FAKE_RECEIVER',
            'foo': 'bar'
        }
        mock_create.return_value = fake_receiver

        # an admin can do this
        self.ctx.is_admin = True
        result = self.eng.receiver_create(self.ctx, req.obj_to_primitive())
        self.assertIsInstance(result, dict)