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' }, ])
def test_incorrect_setup(self): bare = BaseMethod() with self.assertRaises(NoNameProvidedError): bare.check_name() with self.assertRaises(NoResourceAttachedError): bare.check_resource_class()
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()
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 ')
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')
def test_setup_on_resource(self): bare = BaseMethod() with self.assertRaises(NotImplementedError): bare.setup_on_resource(FakeResource)