예제 #1
0
    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))
예제 #2
0
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
예제 #3
0
    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))
예제 #4
0
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
예제 #5
0
    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)
예제 #6
0
    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)
예제 #7
0
    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)
예제 #8
0
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
예제 #9
0
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
예제 #10
0
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)
예제 #11
0
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)
예제 #12
0
 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)