def _validate_next_link(self, href_link_mock, item_count, osapi_max_limit, limit, should_link_exist): req = mock.MagicMock() href_link_mock.return_value = [{"rel": "next", "href": "fake_link"}] self.flags(osapi_max_limit=osapi_max_limit) if limit is None: params = mock.PropertyMock(return_value=dict()) limited_list_size = min(item_count, osapi_max_limit) else: params = mock.PropertyMock(return_value=dict(limit=limit)) limited_list_size = min(item_count, osapi_max_limit, limit) limited_list = [{"uuid": str(i)} for i in range(limited_list_size)] type(req).params = params builder = common.ViewBuilder() results = builder._get_collection_links(req, limited_list, mock.sentinel.coll_key, item_count, "uuid") if should_link_exist: href_link_mock.assert_called_once_with(limited_list, "uuid", req, mock.sentinel.coll_key) self.assertThat(results, matchers.HasLength(1)) else: self.assertFalse(href_link_mock.called) self.assertThat(results, matchers.HasLength(0))
def test_update_link_prefix(self): vb = common.ViewBuilder() result = vb._update_link_prefix("http://192.168.0.243:24/", "http://127.0.0.1/volume") self.assertEqual("http://127.0.0.1/volume", result) result = vb._update_link_prefix("http://foo.x.com/v1", "http://new.prefix.com") self.assertEqual("http://new.prefix.com/v1", result) result = vb._update_link_prefix( "http://foo.x.com/v1", "http://new.prefix.com:20455/new_extra_prefix") self.assertEqual("http://new.prefix.com:20455/new_extra_prefix/v1", result)
def _validate_next_link(self, item_count, osapi_max_limit, limit, should_link_exist): req = webob.Request.blank('/?limit=%s' % limit if limit else '/') link_return = [{"rel": "next", "href": "fake_link"}] self.flags(osapi_max_limit=osapi_max_limit) if limit is None: limited_list_size = min(item_count, osapi_max_limit) else: limited_list_size = min(item_count, osapi_max_limit, limit) limited_list = [{"uuid": str(i)} for i in range(limited_list_size)] builder = common.ViewBuilder() def get_pagination_params(params, max_limit=CONF.osapi_max_limit, original_call=common.get_pagination_params): return original_call(params, max_limit) def _get_limit_param(params, max_limit=CONF.osapi_max_limit, original_call=common._get_limit_param): return original_call(params, max_limit) with mock.patch.object(common, 'get_pagination_params', get_pagination_params), \ mock.patch.object(common, '_get_limit_param', _get_limit_param), \ mock.patch.object(common.ViewBuilder, '_generate_next_link', return_value=link_return) as href_link_mock: results = builder._get_collection_links(req, limited_list, mock.sentinel.coll_key, item_count, "uuid") if should_link_exist: href_link_mock.assert_called_once_with(limited_list, "uuid", req, mock.sentinel.coll_key) self.assertThat(results, matchers.HasLength(1)) else: self.assertFalse(href_link_mock.called) self.assertThat(results, matchers.HasLength(0))
def test_update_link_prefix(self, update_args, expected): vb = common.ViewBuilder() result = vb._update_link_prefix(*update_args) self.assertEqual(expected, result)
def test_project_id_in_url(self, project_id, url, expected): req = fakes.HTTPRequest.blank(url) req.environ['cinder.context'].project_id = project_id actual = common.ViewBuilder()._get_project_id_in_url(req) self.assertEqual(expected, actual)