def test_service_action_params_reuse(self): request_model = Request({ 'operation': 'GetFrobs', 'params': [{ 'target': 'Delete.Objects[].Key', 'source': 'data', 'path': 'Key' }] }) item1 = mock.Mock() item1.meta = ResourceMeta('test', data={'Key': 'item1'}) item2 = mock.Mock() item2.meta = ResourceMeta('test', data={'Key': 'item2'}) # Here we create params and then re-use it to build up a more # complex structure over multiple calls. params = create_request_parameters(item1, request_model) create_request_parameters(item2, request_model, params=params) self.assertEqual( params, {'Delete': { 'Objects': [{ 'Key': 'item1' }, { 'Key': 'item2' }] }})
def test_service_action_params_constants(self): request_model = Request({ 'operation': 'GetFrobs', 'params': [{ 'target': 'Param1', 'source': 'string', 'value': 'param1' }, { 'target': 'Param2', 'source': 'integer', 'value': 123 }, { 'target': 'Param3', 'source': 'boolean', 'value': True }] }) params = create_request_parameters(None, request_model) self.assertEqual(params['Param1'], 'param1', 'Parameter not set from string constant') self.assertEqual(params['Param2'], 123, 'Parameter not set from integer constant') self.assertEqual(params['Param3'], True, 'Parameter not set from boolean constant')
def test_service_action_params_invalid(self): request_model = Request({ 'operation': 'GetFrobs', 'params': [{ 'target': 'Param1', 'source': 'invalid' }] }) with self.assertRaises(NotImplementedError): create_request_parameters(None, request_model)
def test_service_action_params_input(self): request_model = Request({ 'operation': 'GetFrobs', 'params': [{ 'target': 'Param1', 'source': 'input' }] }) params = create_request_parameters(None, request_model) self.assertEqual(params, {}) params['param1'] = 'myinput' params = create_request_parameters(None, request_model, params=params) self.assertEqual(params, {'param1': 'myinput'})
def test_service_action_params_data_member_missing_no_load(self): request_model = Request({ 'operation': 'GetFrobs', 'params': [{ 'target': 'WarehouseUrl', 'source': 'data', 'path': 'SomeMember' }] }) # This mock has no ``load`` method. parent = mock.Mock(spec=ServiceResource) parent.meta = ResourceMeta('test', data=None) with self.assertRaises(ResourceLoadException): params = create_request_parameters(parent, request_model)
def test_service_action_params_data_member(self): request_model = Request({ 'operation': 'GetFrobs', 'params': [{ 'target': 'WarehouseUrl', 'source': 'data', 'path': 'SomeMember' }] }) parent = mock.Mock() parent.meta = ResourceMeta('test', data={'SomeMember': 'w-url'}) params = create_request_parameters(parent, request_model) self.assertEqual(params['WarehouseUrl'], 'w-url', 'Parameter not set from resource property')
def test_service_action_params_identifier(self): request_model = Request({ 'operation': 'GetFrobs', 'params': [{ 'target': 'WarehouseUrl', 'source': 'identifier', 'name': 'Url' }] }) parent = mock.Mock() parent.url = 'w-url' params = create_request_parameters(parent, request_model) self.assertEqual(params['WarehouseUrl'], 'w-url', 'Parameter not set from resource identifier')
def test_service_action_params_list(self): request_model = Request({ 'operation': 'GetFrobs', 'params': [{ 'target': 'WarehouseUrls[0]', 'source': 'string', 'value': 'w-url' }] }) params = create_request_parameters(None, request_model) self.assertIsInstance(params['WarehouseUrls'], list, 'Parameter did not create a list') self.assertEqual(len(params['WarehouseUrls']), 1, 'Parameter list should only have a single item') self.assertIn('w-url', params['WarehouseUrls'], 'Parameter not in expected list')
def test_service_action_params_data_member_missing(self): request_model = Request({ 'operation': 'GetFrobs', 'params': [{ 'target': 'WarehouseUrl', 'source': 'data', 'path': 'SomeMember' }] }) parent = mock.Mock() def load_data(): parent.meta.data = {'SomeMember': 'w-url'} parent.load.side_effect = load_data parent.meta = ResourceMeta('test') params = create_request_parameters(parent, request_model) parent.load.assert_called_with() self.assertEqual(params['WarehouseUrl'], 'w-url', 'Parameter not set from resource property')