aboutsummaryrefslogtreecommitdiffstats
path: root/keystone-moon/keystone/tests/functional
diff options
context:
space:
mode:
authorDUVAL Thomas <thomas.duval@orange.com>2016-06-09 09:11:50 +0200
committerDUVAL Thomas <thomas.duval@orange.com>2016-06-09 09:11:50 +0200
commit2e7b4f2027a1147ca28301e4f88adf8274b39a1f (patch)
tree8b8d94001ebe6cc34106cf813b538911a8d66d9a /keystone-moon/keystone/tests/functional
parenta33bdcb627102a01244630a54cb4b5066b385a6a (diff)
Update Keystone core to Mitaka.
Change-Id: Ia10d6add16f4a9d25d1f42d420661c46332e69db
Diffstat (limited to 'keystone-moon/keystone/tests/functional')
-rw-r--r--keystone-moon/keystone/tests/functional/core.py85
-rw-r--r--keystone-moon/keystone/tests/functional/shared/test_running.py22
2 files changed, 100 insertions, 7 deletions
diff --git a/keystone-moon/keystone/tests/functional/core.py b/keystone-moon/keystone/tests/functional/core.py
new file mode 100644
index 00000000..2759412b
--- /dev/null
+++ b/keystone-moon/keystone/tests/functional/core.py
@@ -0,0 +1,85 @@
+# 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 os
+
+import requests
+import testtools
+
+from keystone.tests.common import auth as common_auth
+
+
+class BaseTestCase(testtools.TestCase, common_auth.AuthTestMixin):
+
+ request_headers = {'content-type': 'application/json'}
+
+ def setUp(self):
+ self.ADMIN_URL = os.environ.get('KSTEST_ADMIN_URL',
+ 'http://localhost:35357')
+ self.PUBLIC_URL = os.environ.get('KSTEST_PUBLIC_URL',
+ 'http://localhost:5000')
+ self.admin = {
+ 'name': os.environ.get('KSTEST_ADMIN_USERNAME', 'admin'),
+ 'password': os.environ.get('KSTEST_ADMIN_PASSWORD', ''),
+ 'domain_id': os.environ.get('KSTEST_ADMIN_DOMAIN_ID', 'default')
+ }
+
+ self.user = {
+ 'name': os.environ.get('KSTEST_USER_USERNAME', 'demo'),
+ 'password': os.environ.get('KSTEST_USER_PASSWORD', ''),
+ 'domain_id': os.environ.get('KSTEST_USER_DOMAIN_ID', 'default')
+ }
+
+ self.project_id = os.environ.get('KSTEST_PROJECT_ID')
+
+ super(BaseTestCase, self).setUp()
+
+ def _http_headers(self, token=None):
+ headers = {'content-type': 'application/json'}
+ if token:
+ headers['X-Auth-Token'] = token
+ return headers
+
+ def get_scoped_token_response(self, user):
+ """Convenience method so that we can test authenticated requests
+
+ :param user: A dictionary with user information like 'username',
+ 'password', 'domain_id'
+ :returns: urllib3.Response object
+
+ """
+ body = self.build_authentication_request(
+ username=user['name'], user_domain_name=user['domain_id'],
+ password=user['password'], project_id=self.project_id)
+ return requests.post(self.PUBLIC_URL + '/v3/auth/tokens',
+ headers=self.request_headers,
+ json=body)
+
+ def get_scoped_token(self, user):
+ """Convenience method for getting scoped token
+
+ This method doesn't do any token validaton.
+
+ :param user: A dictionary with user information like 'username',
+ 'password', 'domain_id'
+ :returns: An OpenStack token for further use
+ :rtype: str
+
+ """
+ r = self.get_scoped_token_response(user)
+ return r.headers.get('X-Subject-Token')
+
+ def get_scoped_admin_token(self):
+ return self.get_scoped_token(self.admin)
+
+ def get_scoped_user_token(self):
+ return self.get_scoped_token(self.user)
diff --git a/keystone-moon/keystone/tests/functional/shared/test_running.py b/keystone-moon/keystone/tests/functional/shared/test_running.py
index aed48ac2..1b46b32d 100644
--- a/keystone-moon/keystone/tests/functional/shared/test_running.py
+++ b/keystone-moon/keystone/tests/functional/shared/test_running.py
@@ -13,38 +13,46 @@
import requests
import testtools.matchers
+from keystone.tests.functional import core as functests
+
is_multiple_choices = testtools.matchers.Equals(
requests.status_codes.codes.multiple_choices)
is_ok = testtools.matchers.Equals(requests.status_codes.codes.ok)
-admin_url = 'http://localhost:35357'
-public_url = 'http://localhost:5000'
versions = ('v2.0', 'v3')
-class TestServerRunning(testtools.TestCase):
+class TestServerRunning(functests.BaseTestCase):
def test_admin_responds_with_multiple_choices(self):
- resp = requests.get(admin_url)
+ resp = requests.get(self.ADMIN_URL)
self.assertThat(resp.status_code, is_multiple_choices)
def test_admin_versions(self):
for version in versions:
- resp = requests.get(admin_url + '/' + version)
+ resp = requests.get(self.ADMIN_URL + '/' + version)
self.assertThat(
resp.status_code,
testtools.matchers.Annotate(
'failed for version %s' % version, is_ok))
def test_public_responds_with_multiple_choices(self):
- resp = requests.get(public_url)
+ resp = requests.get(self.PUBLIC_URL)
self.assertThat(resp.status_code, is_multiple_choices)
def test_public_versions(self):
for version in versions:
- resp = requests.get(public_url + '/' + version)
+ resp = requests.get(self.PUBLIC_URL + '/' + version)
self.assertThat(
resp.status_code,
testtools.matchers.Annotate(
'failed for version %s' % version, is_ok))
+
+ def test_get_user_token(self):
+ token = self.get_scoped_user_token()
+ self.assertIsNotNone(token)
+
+ def test_get_admin_token(self):
+ token = self.get_scoped_admin_token()
+ self.assertIsNotNone(token)