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))
Beispiel #5
0
    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)
Beispiel #7
0
    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)