def test_translate_urls(self): href_rel = self.getUniqueString() href = self.getUniqueString() href_template_rel = self.getUniqueString() href_template = self.getUniqueString() href_vars = {self.getUniqueString(): self.getUniqueString()} original_json_home = { 'resources': { href_rel: { 'href': href }, href_template_rel: { 'href-template': href_template, 'href-vars': href_vars } } } new_json_home = copy.deepcopy(original_json_home) new_prefix = self.getUniqueString() json_home.translate_urls(new_json_home, new_prefix) exp_json_home = { 'resources': { href_rel: { 'href': new_prefix + href }, href_template_rel: { 'href-template': new_prefix + href_template, 'href-vars': href_vars } } } self.assertThat(new_json_home, matchers.Equals(exp_json_home))
def get_versions(): if v3_mime_type_best_match() == MimeTypes.JSON_HOME: # RENDER JSON-Home form, we have a clever client who will # understand the JSON-Home document. v3_json_home = json_home.JsonHomeResources.resources() json_home.translate_urls(v3_json_home, '/v3') return flask.Response(response=jsonutils.dumps(v3_json_home), mimetype=MimeTypes.JSON_HOME) else: identity_url = '%s/' % ks_flask.base_url() versions = _get_versions_list(identity_url) # Set the preferred version to the latest "stable" version. # TODO(morgan): If we ever have more API versions find the latest # stable version instead of just using the "base_url", for now we # simply have a single version so use it as the preferred location. preferred_location = identity_url response = flask.Response( response=jsonutils.dumps( {'versions': { 'values': list(versions.values())}}), mimetype=MimeTypes.JSON, status=http.client.MULTIPLE_CHOICES) response.headers['Location'] = preferred_location return response
def test_translate_urls(self): href_rel = self.getUniqueString() href = self.getUniqueString() href_template_rel = self.getUniqueString() href_template = self.getUniqueString() href_vars = {self.getUniqueString(): self.getUniqueString()} original_json_home = { 'resources': { href_rel: {'href': href}, href_template_rel: { 'href-template': href_template, 'href-vars': href_vars} } } new_json_home = copy.deepcopy(original_json_home) new_prefix = self.getUniqueString() json_home.translate_urls(new_json_home, new_prefix) exp_json_home = { 'resources': { href_rel: {'href': new_prefix + href}, href_template_rel: { 'href-template': new_prefix + href_template, 'href-vars': href_vars} } } self.assertThat(new_json_home, matchers.Equals(exp_json_home))
def request_v3_json_home(new_prefix): if 'v3' not in _VERSIONS: # No V3 support, so return an empty JSON Home document. return {'resources': {}} v3_json_home = json_home.JsonHomeResources.resources() json_home.translate_urls(v3_json_home, new_prefix) return v3_json_home
def test_json_home_root(self): # If the request is / and the Accept header is application/json-home # then the server responds with a JSON Home document. exp_json_home_data = copy.deepcopy({"resources": V3_JSON_HOME_RESOURCES_INHERIT_DISABLED}) json_home.translate_urls(exp_json_home_data, "/v3") self._test_json_home("/", exp_json_home_data)
def test_json_home_root(self): # If the request is / and the Accept header is application/json-home # then the server responds with a JSON Home document. exp_json_home_data = copy.deepcopy({ 'resources': V3_JSON_HOME_RESOURCES}) json_home.translate_urls(exp_json_home_data, '/v3') self._test_json_home('/', exp_json_home_data)
def test_json_home_root(self): # If the request is / and the Accept header is application/json-home # then the server responds with a JSON Home document. exp_json_home_data = copy.deepcopy( {'resources': V3_JSON_HOME_RESOURCES}) json_home.translate_urls(exp_json_home_data, '/v3') self._test_json_home('/', exp_json_home_data)
def request_v3_json_home(new_prefix): if "v3" not in _VERSIONS: # No V3 support, so return an empty JSON Home document. return {"resources": {}} req = webob.Request.blank("/v3", headers={"Accept": "application/json-home"}) v3_json_home_str = req.get_response(latest_app).body v3_json_home = jsonutils.loads(v3_json_home_str) json_home.translate_urls(v3_json_home, new_prefix) return v3_json_home
def request_v3_json_home(new_prefix): if 'v3' not in _VERSIONS: # No V3 support, so return an empty JSON Home document. return {'resources': {}} req = webob.Request.blank('/v3', headers={'Accept': 'application/json-home'}) v3_json_home_str = req.get_response(latest_app).body v3_json_home = jsonutils.loads(v3_json_home_str) json_home.translate_urls(v3_json_home, new_prefix) return v3_json_home
def get_versions(): if v3_mime_type_best_match() == MimeTypes.JSON_HOME: # RENDER JSON-Home form, we have a clever client who will # understand the JSON-Home document. v3_json_home = _v3_json_home_content() json_home.translate_urls(v3_json_home, '/v3') return flask.Response(response=jsonutils.dumps(v3_json_home), mimetype=MimeTypes.JSON_HOME) else: identity_url = '%s/' % ks_flask.base_url() versions = _get_versions_list(identity_url) return flask.Response(response=jsonutils.dumps( {'versions': { 'values': list(versions.values()) }}), mimetype=MimeTypes.JSON, status=http_client.MULTIPLE_CHOICES)
def get_versions(): if v3_mime_type_best_match() == MimeTypes.JSON_HOME: # RENDER JSON-Home form, we have a clever client who will # understand the JSON-Home document. v3_json_home = _v3_json_home_content() json_home.translate_urls(v3_json_home, '/v3') return flask.Response(response=jsonutils.dumps(v3_json_home), mimetype=MimeTypes.JSON_HOME) else: # NOTE(morgan): wsgi.Application.base_url will eventually need to # be moved to a better "common" location. For now, we'll just lean # on it for the sake of leaning on common code where possible. identity_url = '%s/v3/' % wsgi.Application.base_url( context={'environment': request.environ}) versions = _get_versions_list(identity_url) return flask.Response(response=jsonutils.dumps( {'versions': { 'values': list(versions.values()) }}), mimetype=MimeTypes.JSON, status=http_client.MULTIPLE_CHOICES)
def test_no_json_home_document_returned_when_v3_disabled(self): json_home_document = discovery._v3_json_home_content() json_home.translate_urls(json_home_document, '/v3') expected_document = {'resources': {}} self.assertEqual(expected_document, json_home_document)