diff --git a/keystoneclient/tests/v2_0/test_certificates.py b/keystoneclient/tests/v2_0/test_certificates.py new file mode 100644 index 000000000..8fe6a4ed6 --- /dev/null +++ b/keystoneclient/tests/v2_0/test_certificates.py @@ -0,0 +1,40 @@ +# Copyright 2014 IBM Corp. +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import testresources + +from keystoneclient.tests import client_fixtures +from keystoneclient.tests.v2_0 import utils + + +class CertificateTests(utils.TestCase, testresources.ResourcedTestCase): + + resources = [('examples', client_fixtures.EXAMPLES_RESOURCE)] + + def test_get_ca_certificate(self): + self.stub_url('GET', ['certificates', 'ca'], + headers={'Content-Type': 'text/html; charset=UTF-8'}, + text=self.examples.SIGNING_CA) + res = self.client.certificates.get_ca_certificate() + self.assertEqual(self.examples.SIGNING_CA, res) + + def test_get_signing_certificate(self): + self.stub_url('GET', ['certificates', 'signing'], + headers={'Content-Type': 'text/html; charset=UTF-8'}, + text=self.examples.SIGNING_CERT) + res = self.client.certificates.get_signing_certificate() + self.assertEqual(self.examples.SIGNING_CERT, res) + + +def load_tests(loader, tests, pattern): + return testresources.OptimisingTestSuite(tests) \ No newline at end of file diff --git a/keystoneclient/v2_0/certificates.py b/keystoneclient/v2_0/certificates.py new file mode 100644 index 000000000..929e9734d --- /dev/null +++ b/keystoneclient/v2_0/certificates.py @@ -0,0 +1,42 @@ +# Copyright 2014 IBM Corp. +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +class CertificatesManager(object): + """Manager for certificates.""" + + def __init__(self, client): + self._client = client + + def get_ca_certificate(self): + """Get CA certificate. + + :returns: PEM-formatted string. + :rtype: str + + """ + + resp, body = self._client.get('/certificates/ca', authenticated=False) + return resp.text + + def get_signing_certificate(self): + """Get signing certificate. + + :returns: PEM-formatted string. + :rtype: str + + """ + + resp, body = self._client.get('/certificates/signing', + authenticated=False) + return resp.text \ No newline at end of file diff --git a/keystoneclient/v2_0/client.py b/keystoneclient/v2_0/client.py index f7bf153e0..bba556e83 100644 --- a/keystoneclient/v2_0/client.py +++ b/keystoneclient/v2_0/client.py @@ -19,6 +19,7 @@ from keystoneclient.auth.identity import v2 as v2_auth from keystoneclient import exceptions from keystoneclient import httpclient from keystoneclient.i18n import _ +from keystoneclient.v2_0 import certificates from keystoneclient.v2_0 import ec2 from keystoneclient.v2_0 import endpoints from keystoneclient.v2_0 import extensions @@ -131,6 +132,7 @@ class Client(httpclient.HTTPClient): """Initialize a new client for the Keystone v2.0 API.""" super(Client, self).__init__(**kwargs) + self.certificates = certificates.CertificatesManager(self._adapter) self.endpoints = endpoints.EndpointManager(self._adapter) self.extensions = extensions.ExtensionManager(self._adapter) self.roles = roles.RoleManager(self._adapter)