Пример #1
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
Пример #2
0
    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)

        assert params == {
            'Delete': {
                'Objects': [{
                    'Key': 'item1'
                }, {
                    'Key': 'item2'
                }]
            }
        }
Пример #3
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)

        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')
Пример #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)
Пример #5
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']
Пример #6
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'}
Пример #7
0
    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 pytest.raises(ResourceLoadException):
            create_request_parameters(parent, request_model)
Пример #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'
Пример #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'
Пример #10
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)

        self.assertEqual(params['WarehouseUrl'], 'w-url',
                         'Parameter not set from resource property')
Пример #11
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)

        self.assertEqual(params['WarehouseUrl'], 'w-url',
                         'Parameter not set from resource identifier')
Пример #12
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)

        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')
Пример #13
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'