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')
Esempio n. 3
0
    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()
        assert params['WarehouseUrl'] == 'w-url'
Esempio n. 4
0
    def test_service_action_params_invalid(self):
        request_model = Request(
            {
                'operation': 'GetFrobs',
                'params': [{'target': 'Param1', 'source': 'invalid'}],
            }
        )

        with pytest.raises(NotImplementedError):
            create_request_parameters(None, request_model)
Esempio n. 5
0
    def test_service_action_params_input(self):
        request_model = Request(
            {
                'operation': 'GetFrobs',
                'params': [{'target': 'Param1', 'source': 'input'}],
            }
        )

        params = create_request_parameters(None, request_model)
        assert params == {}

        params['param1'] = 'myinput'
        params = create_request_parameters(None, request_model, params=params)
        assert params == {'param1': 'myinput'}
    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')
Esempio n. 7
0
    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)

        assert isinstance(params['WarehouseUrls'], list)
        assert len(params['WarehouseUrls']) == 1
        assert 'w-url' in params['WarehouseUrls']
Esempio n. 8
0
    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)

        assert params['WarehouseUrl'] == 'w-url'
Esempio n. 9
0
    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)

        assert params['WarehouseUrl'] == 'w-url'
Esempio n. 10
0
    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)

        assert params['Param1'] == 'param1'
        assert params['Param2'] == 123
        assert params['Param3'] is True