def test_filter_correct_params(self, request_mock): params = {'id': 'fake_id'} helper = pagination.PaginationHelper(params) query_mock = mock.MagicMock() helper.apply(query_mock, models.LoadBalancer) self.assertEqual(params, helper.filters)
def test_fields_not_passed(self, request_mock): params = {'fields': 'id'} helper = pagination.PaginationHelper(params) query_mock = mock.MagicMock() helper.apply(query_mock, models.LoadBalancer) self.assertEqual({}, helper.filters)
def test_sort_key_dir(self): sort_keys = "key1,key2,key3" sort_dirs = "asc,desc" ref_sort_keys = [('key1', 'asc'), ('key2', 'desc'), ('key3', 'asc')] params = {'sort_key': sort_keys, 'sort_dir': sort_dirs} helper = pagination.PaginationHelper(params) self.assertEqual(ref_sort_keys, helper.sort_keys)
def test_make_links_with_configured_url(self, request_mock): request_mock.path = "/lbaas/v2.0/pools/1/members" request_mock.path_url = "http://localhost" + request_mock.path api_base_uri = "https://127.0.0.1" conf = self.useFixture(oslo_fixture.Config(cfg.CONF)) conf.config(group='api_settings', api_base_uri=api_base_uri) member1 = models.Member() member1.id = uuidutils.generate_uuid() model_list = [member1] params = {'limit': 1, 'marker': member1.id} helper = pagination.PaginationHelper(params) links = helper._make_links(model_list) self.assertEqual(links[0].rel, "previous") self.assertEqual( links[1].href, "{base_uri}{path}?limit={limit}&marker={marker}".format( base_uri=api_base_uri, path=request_mock.path, limit=params['limit'], marker=member1.id)) self.assertEqual(links[1].rel, "next") self.assertEqual( links[1].href, "{base_uri}{path}?limit={limit}&marker={marker}".format( base_uri=api_base_uri, path=request_mock.path, limit=params['limit'], marker=member1.id))
def before(self, state): if state.request.method != 'GET': return state.request.context[ constants.PAGINATION_HELPER] = pagination.PaginationHelper( state.request.params.mixed())
def test_limit(self, request_mock): limit = 100 params = {'limit': limit} helper = pagination.PaginationHelper(params) query_mock = mock.MagicMock() helper.apply(query_mock, models.LoadBalancer) query_mock.order_by().order_by().limit.assert_called_with(limit)
def test_filter_mismatched_params(self, request_mock): params = {'id': 'fake_id', 'fields': 'id'} filters = {'id': 'fake_id'} helper = pagination.PaginationHelper(params) query_mock = mock.MagicMock() helper.apply(query_mock, models.LoadBalancer) self.assertEqual(filters, helper.filters)
def test_no_params(self, request_mock): params = {} helper = pagination.PaginationHelper(params) query_mock = mock.MagicMock() helper.apply(query_mock, models.LoadBalancer) self.assertEqual(DEFAULT_SORTS, helper.sort_keys) self.assertIsNone(helper.marker) self.assertEqual(1000, helper.limit) query_mock.order_by().order_by().limit.assert_called_with(1000)
def test_duplicate_argument(self, request_mock): params = {'loadbalacer_id': 'id1', 'load_balacer_id': 'id2'} query_mock = mock.MagicMock() helper = pagination.PaginationHelper(params) self.assertRaises( exceptions.InvalidFilterArgument, pagination.PaginationHelper.apply, helper, query_mock, models.Amphora, )
def test_make_links_next(self, request_mock): request_mock.path = "/lbaas/v2.0/pools/1/members" request_mock.path_url = "http://localhost" + request_mock.path member1 = models.Member() member1.id = uuidutils.generate_uuid() model_list = [member1] params = {'limit': 1} helper = pagination.PaginationHelper(params) links = helper._make_links(model_list) self.assertEqual(links[0].rel, "next") self.assertEqual( links[0].href, "{path_url}?limit={limit}&marker={marker}".format( path_url=request_mock.path_url, limit=params['limit'], marker=member1.id))
def test_filter_mismatched_params(self, request_mock): params = { 'id': 'fake_id', 'fields': 'field', 'limit': '10', 'sort': None, } filters = {'id': 'fake_id'} helper = pagination.PaginationHelper(params) query_mock = mock.MagicMock() helper.apply(query_mock, models.LoadBalancer) self.assertEqual(filters, helper.filters) helper.apply(query_mock, models.LoadBalancer, enforce_valid_params=True) self.assertEqual(filters, helper.filters)
def test_filter_with_invalid_params(self, request_mock): params = {'id': 'fake_id', 'no_such_param': 'id'} filters = {'id': 'fake_id'} helper = pagination.PaginationHelper(params) query_mock = mock.MagicMock() helper.apply( query_mock, models.LoadBalancer, # silently ignore invalid parameter enforce_valid_params=False) self.assertEqual(filters, helper.filters) self.assertRaises( exceptions.InvalidFilterArgument, pagination.PaginationHelper.apply, helper, query_mock, models.Amphora, )
def test_marker(self): marker = 'random_uuid' params = {'marker': marker} helper = pagination.PaginationHelper(params) self.assertEqual(marker, helper.marker)
def test_sort_none(self): sort_params = None params = {'sort': sort_params} act_params = pagination.PaginationHelper(params).sort_keys self.assertEqual([], act_params)
def test_sort_empty(self): sort_params = "" params = {'sort': sort_params} act_params = pagination.PaginationHelper(params).sort_keys self.assertEqual([], act_params)