示例#1
0
    def test_get_expected_parameters(self):
        base = BaseMethod('create_queue')
        self.assertEqual(base.get_expected_parameters(self.conn),
                         [{
                             'type': 'string',
                             'required': True,
                             'api_name': 'QueueName',
                             'var_name': 'queue_name'
                         }, {
                             'type': 'map',
                             'required': False,
                             'api_name': 'Attributes',
                             'var_name': 'attributes'
                         }])

        # We should get different parameters for a different operation.
        base = BaseMethod('delete_queue')
        self.assertEqual(base.get_expected_parameters(self.conn), [
            {
                'type': 'string',
                'required': True,
                'api_name': 'QueueName',
                'var_name': 'queue_name'
            },
        ])
示例#2
0
    def test_incorrect_setup(self):
        bare = BaseMethod()

        with self.assertRaises(NoNameProvidedError):
            bare.check_name()

        with self.assertRaises(NoResourceAttachedError):
            bare.check_resource_class()
示例#3
0
    def setUp(self):
        super(BaseMethodTestCase, self).setUp()
        self.fake_resource = FakeResource()
        self.create_method = BaseMethod('create_queue')
        self.create_method.resource = self.fake_resource

        self.session = Session(FakeSession(TestCoreService()))
        self.sf = ServiceFactory(session=self.session)
        self.conn_class = self.sf.construct_for('test')
        self.conn = self.conn_class()
示例#4
0
    def test_update_docstring(self):
        # Setup to fake a method we can actually test.
        def create_thing(self, *args, **kwargs):
            return True

        fake_resource = FakeResource()
        fake_resource._connection = self.conn
        create_method = BaseMethod('create_queue')
        create_method.name = 'create_thing'
        setattr(FakeResource, 'create_thing', create_thing)
        self.addCleanup(self.remove_added_method, 'create_thing')

        # Shouldn't have a docstring.
        self.assertEqual(fake_resource.create_thing.__doc__, None)

        create_method.update_docstring(fake_resource)

        # Shouldn't have a docstring.
        self.assertEqual(fake_resource.create_thing.__doc__,
                         ' <p>Creates a queue.</p>\n ')
示例#5
0
    def test_call(self):
        base = BaseMethod('create_queue')
        base.name = 'create_method'
        base.resource = self.fake_resource
        mpo = mock.patch.object

        # Just the passed args.
        ret = {'QueueUrl': '/test-queue'}

        with mpo(self.conn, 'create_queue', return_value=ret) as mock_conn:
            results = base.call(self.conn, queue_name='test-queue')
            self.assertEqual(getattr(self.fake_resource, 'name', None), None)
            self.assertEqual(getattr(self.fake_resource, 'url', None),
                             '/test-queue')
            self.assertEqual(results, {
                'QueueUrl': '/test-queue',
            })

        mock_conn.assert_called_once_with(queue_name='test-queue')

        # With the kwargs to be partially applied.
        base = BaseMethod('create_queue', limit=2, queue_name='unseen')
        base.name = 'create_method'
        base.resource = self.fake_resource
        ret = {'QueueUrl': '/test-queue', 'CreateCount': 1}

        with mpo(self.conn, 'create_queue', return_value=ret) as mock_conn:
            results = base.call(self.conn, queue_name='test-queue')
            self.assertEqual(getattr(self.fake_resource, 'name', None), None)
            self.assertEqual(getattr(self.fake_resource, 'url', None),
                             '/test-queue')
            self.assertEqual(results, {
                'CreateCount': 1,
                'QueueUrl': '/test-queue',
            })

        mock_conn.assert_called_once_with(limit=2, queue_name='test-queue')

        # With bound params.
        base = BaseMethod('create_queue', limit=2)
        base.name = 'create_method'
        base.resource = self.fake_resource
        self.fake_resource.name = 'whatever'
        ret = {
            'QueueUrl': '/whatever-queue',
            # This should update the instance's ``name``.
            'QueueName': 'Whatever',
        }

        with mpo(self.conn, 'create_queue', return_value=ret) as mock_conn:
            results = base.call(self.conn)
            self.assertEqual(getattr(self.fake_resource, 'name', None),
                             'Whatever')
            self.assertEqual(getattr(self.fake_resource, 'url', None),
                             '/whatever-queue')
            self.assertEqual(results, {
                'QueueName': 'Whatever',
                'QueueUrl': '/whatever-queue',
            })

        mock_conn.assert_called_once_with(limit=2, queue_name='whatever')
示例#6
0
    def test_setup_on_resource(self):
        bare = BaseMethod()

        with self.assertRaises(NotImplementedError):
            bare.setup_on_resource(FakeResource)