Example #1
0
    def test_get_objects_by_filter_with_multiple_filters(
            self, send_request_mock, fetch_system_info_mock, connection_mock):
        objects = [{
            'name': 'obj1',
            'type': 1,
            'foo': {
                'bar': 'buzz'
            }
        }, {
            'name': 'obj2',
            'type': 1,
            'foo': {
                'bar': 'buz'
            }
        }, {
            'name': 'obj3',
            'type': 2,
            'foo': {
                'bar': 'buzz'
            }
        }]

        fetch_system_info_mock.return_value = {
            'databaseInfo': {
                'buildVersion': '6.3.0'
            }
        }

        connection_mock.get_operation_spec.return_value = {
            'method': HTTPMethod.GET,
            'url': '/object/'
        }
        resource = BaseConfigurationResource(connection_mock, False)

        send_request_mock.side_effect = [{'items': objects}, {'items': []}]
        # resource.get_objects_by_filter returns generator so to be able compare generated list with expected list
        # we need evaluate it.
        assert objects == list(resource.get_objects_by_filter('test', {}))
        send_request_mock.assert_has_calls(
            [mock.call('/object/', 'get', {}, {}, {
                'limit': 10,
                'offset': 0
            })])

        send_request_mock.reset_mock()
        send_request_mock.side_effect = [{'items': objects}, {'items': []}]
        # resource.get_objects_by_filter returns generator so to be able compare generated list with expected list
        # we need evaluate it.
        assert [objects[0]] == list(
            resource.get_objects_by_filter(
                'test', {ParamName.FILTERS: {
                    'name': 'obj1'
                }}))
        send_request_mock.assert_has_calls([
            mock.call('/object/', 'get', {}, {}, {
                QueryParams.FILTER: 'name:obj1',
                'limit': 10,
                'offset': 0
            })
        ])

        send_request_mock.reset_mock()
        send_request_mock.side_effect = [{'items': objects}, {'items': []}]
        # resource.get_objects_by_filter returns generator so to be able compare generated list with expected list
        # we need evaluate it.
        assert [objects[1]] == list(
            resource.get_objects_by_filter(
                'test', {
                    ParamName.FILTERS: {
                        'name': 'obj2',
                        'type': 1,
                        'foo': {
                            'bar': 'buz'
                        }
                    }
                }))

        send_request_mock.assert_has_calls([
            mock.call('/object/', 'get', {}, {}, {
                QueryParams.FILTER: 'name:obj2',
                'limit': 10,
                'offset': 0
            })
        ])
Example #2
0
    def test_get_objects_by_filter_with_multiple_responses(
            self, send_request_mock, fetch_system_info_mock, connection_mock):
        send_request_mock.side_effect = [{
            'items': [{
                'name': 'obj1',
                'type': 'foo'
            }, {
                'name': 'obj2',
                'type': 'bar'
            }]
        }, {
            'items': [{
                'name': 'obj3',
                'type': 'foo'
            }]
        }, {
            'items': []
        }]
        fetch_system_info_mock.return_value = {
            'databaseInfo': {
                'buildVersion': '6.3.0'
            }
        }
        connection_mock.get_operation_spec.return_value = {
            'method': HTTPMethod.GET,
            'url': '/object/'
        }
        resource = BaseConfigurationResource(connection_mock, False)
        assert [{
            'name': 'obj1',
            'type': 'foo'
        }] == list(
            resource.get_objects_by_filter(
                'test', {ParamName.FILTERS: {
                    'type': 'foo'
                }}))
        send_request_mock.assert_has_calls(
            [mock.call('/object/', 'get', {}, {}, {
                'limit': 10,
                'offset': 0
            })])

        send_request_mock.reset_mock()
        send_request_mock.side_effect = [{
            'items': [{
                'name': 'obj1',
                'type': 'foo'
            }, {
                'name': 'obj2',
                'type': 'bar'
            }]
        }, {
            'items': [{
                'name': 'obj3',
                'type': 'foo'
            }]
        }, {
            'items': []
        }]
        resp = list(
            resource.get_objects_by_filter(
                'test', {
                    ParamName.FILTERS: {
                        'type': 'foo'
                    },
                    ParamName.QUERY_PARAMS: {
                        'limit': 2
                    }
                }))
        assert [{
            'name': 'obj1',
            'type': 'foo'
        }, {
            'name': 'obj3',
            'type': 'foo'
        }] == resp
        send_request_mock.assert_has_calls([
            mock.call('/object/', 'get', {}, {}, {
                'limit': 2,
                'offset': 0
            }),
            mock.call('/object/', 'get', {}, {}, {
                'limit': 2,
                'offset': 2
            })
        ])