Use Token fixtures from keystoneclient
Keystoneclient provides a way of generating correctly formed tokens. We should test using those rather than things we copy and paste ourselves. Change-Id: I163940c3cd92060f68e9b1149865feeef0480e6e
This commit is contained in:
parent
25d3d66cc1
commit
e871bd2f7e
|
@ -12,6 +12,7 @@
|
|||
|
||||
import fixtures
|
||||
from keystoneclient.auth.identity import v2
|
||||
from keystoneclient import fixture
|
||||
from keystoneclient import session
|
||||
|
||||
from novaclient.v1_1 import client as v1_1client
|
||||
|
@ -31,58 +32,14 @@ class V1(fixtures.Fixture):
|
|||
self.client = None
|
||||
self.requests = requests
|
||||
|
||||
self.token = {
|
||||
'access': {
|
||||
"token": {
|
||||
"id": "ab48a9efdfedb23ty3494",
|
||||
"expires": "2010-11-01T03:32:15-05:00",
|
||||
"tenant": {
|
||||
"id": "345",
|
||||
"name": "My Project"
|
||||
}
|
||||
},
|
||||
"user": {
|
||||
"id": "123",
|
||||
"name": "jqsmith",
|
||||
"roles": [
|
||||
{
|
||||
"id": "234",
|
||||
"name": "compute:admin",
|
||||
},
|
||||
{
|
||||
"id": "235",
|
||||
"name": "object-store:admin",
|
||||
"tenantId": "1",
|
||||
}
|
||||
],
|
||||
"roles_links": [],
|
||||
},
|
||||
"serviceCatalog": [
|
||||
{
|
||||
"name": "Cloud Servers",
|
||||
"type": "compute",
|
||||
"endpoints": [
|
||||
{
|
||||
"publicURL": self.compute_url,
|
||||
"internalURL": "https://compute1.host/v1/1",
|
||||
},
|
||||
],
|
||||
"endpoints_links": [],
|
||||
},
|
||||
{
|
||||
"name": "Cloud Servers",
|
||||
"type": "computev3",
|
||||
"endpoints": [
|
||||
{
|
||||
"publicURL": self.compute_url,
|
||||
"internalURL": "https://compute1.host/v1/1",
|
||||
},
|
||||
],
|
||||
"endpoints_links": [],
|
||||
},
|
||||
],
|
||||
}
|
||||
}
|
||||
self.token = fixture.V2Token()
|
||||
self.token.set_scope()
|
||||
|
||||
s = self.token.add_service('compute')
|
||||
s.add_endpoint(self.compute_url)
|
||||
|
||||
s = self.token.add_service('computev3')
|
||||
s.add_endpoint(self.compute_url)
|
||||
|
||||
def setUp(self):
|
||||
super(V1, self).setUp()
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
|
||||
import argparse
|
||||
|
||||
from keystoneclient import fixture
|
||||
import mock
|
||||
import pkg_resources
|
||||
import requests
|
||||
|
@ -33,30 +34,10 @@ from novaclient.v1_1 import client
|
|||
def mock_http_request(resp=None):
|
||||
"""Mock an HTTP Request."""
|
||||
if not resp:
|
||||
resp = {
|
||||
"access": {
|
||||
"token": {
|
||||
"expires": "12345",
|
||||
"id": "FAKE_ID",
|
||||
"tenant": {
|
||||
"id": "FAKE_TENANT_ID",
|
||||
}
|
||||
},
|
||||
"serviceCatalog": [
|
||||
{
|
||||
"type": "compute",
|
||||
"endpoints": [
|
||||
{
|
||||
"region": "RegionOne",
|
||||
"adminURL": "http://localhost:8774/v1.1",
|
||||
"internalURL": "http://localhost:8774/v1.1",
|
||||
"publicURL": "http://localhost:8774/v1.1/",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
}
|
||||
resp = fixture.V2Token()
|
||||
resp.set_scope()
|
||||
s = resp.add_service('compute')
|
||||
s.add_endpoint("http://localhost:8774/v1.1", region='RegionOne')
|
||||
|
||||
auth_response = utils.TestResponse({
|
||||
"status_code": 200,
|
||||
|
|
|
@ -11,116 +11,32 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from keystoneclient import fixture
|
||||
|
||||
from novaclient import exceptions
|
||||
from novaclient import service_catalog
|
||||
from novaclient.tests import utils
|
||||
|
||||
|
||||
# Taken directly from keystone/content/common/samples/auth.json
|
||||
# Do not edit this structure. Instead, grab the latest from there.
|
||||
SERVICE_CATALOG = fixture.V2Token()
|
||||
SERVICE_CATALOG.set_scope()
|
||||
|
||||
SERVICE_CATALOG = {
|
||||
"access": {
|
||||
"token": {
|
||||
"id": "ab48a9efdfedb23ty3494",
|
||||
"expires": "2010-11-01T03:32:15-05:00",
|
||||
"tenant": {
|
||||
"id": "345",
|
||||
"name": "My Project"
|
||||
}
|
||||
},
|
||||
"user": {
|
||||
"id": "123",
|
||||
"name": "jqsmith",
|
||||
"roles": [
|
||||
{
|
||||
"id": "234",
|
||||
"name": "compute:admin",
|
||||
},
|
||||
{
|
||||
"id": "235",
|
||||
"name": "object-store:admin",
|
||||
"tenantId": "1",
|
||||
}
|
||||
],
|
||||
"roles_links": [],
|
||||
},
|
||||
"serviceCatalog": [
|
||||
{
|
||||
"name": "Cloud Servers",
|
||||
"type": "compute",
|
||||
"endpoints": [
|
||||
{
|
||||
# Tenant 1, no region, v1.0
|
||||
"tenantId": "1",
|
||||
"publicURL": "https://compute1.host/v1/1",
|
||||
"internalURL": "https://compute1.host/v1/1",
|
||||
"versionId": "1.0",
|
||||
"versionInfo": "https://compute1.host/v1.0/",
|
||||
"versionList": "https://compute1.host/"
|
||||
},
|
||||
{
|
||||
# Tenant 2, with region, v1.1
|
||||
"tenantId": "2",
|
||||
"publicURL": "https://compute1.host/v1.1/2",
|
||||
"internalURL": "https://compute1.host/v1.1/2",
|
||||
"region": "North",
|
||||
"versionId": "1.1",
|
||||
"versionInfo": "https://compute1.host/v1.1/",
|
||||
"versionList": "https://compute1.host/"
|
||||
},
|
||||
{
|
||||
# Tenant 1, with region, v2.0
|
||||
"tenantId": "1",
|
||||
"publicURL": "https://compute1.host/v2/1",
|
||||
"internalURL": "https://compute1.host/v2/1",
|
||||
"region": "North",
|
||||
"versionId": "2",
|
||||
"versionInfo": "https://compute1.host/v2/",
|
||||
"versionList": "https://compute1.host/"
|
||||
},
|
||||
],
|
||||
"endpoints_links": [],
|
||||
},
|
||||
{
|
||||
"name": "Nova Volumes",
|
||||
"type": "volume",
|
||||
"endpoints": [
|
||||
{
|
||||
"tenantId": "1",
|
||||
"publicURL": "https://volume1.host/v1/1",
|
||||
"internalURL": "https://volume1.host/v1/1",
|
||||
"region": "South",
|
||||
"versionId": "1.0",
|
||||
"versionInfo": "uri",
|
||||
"versionList": "uri"
|
||||
},
|
||||
{
|
||||
"tenantId": "2",
|
||||
"publicURL": "https://volume1.host/v1.1/2",
|
||||
"internalURL": "https://volume1.host/v1.1/2",
|
||||
"region": "South",
|
||||
"versionId": "1.1",
|
||||
"versionInfo": "https://volume1.host/v1.1/",
|
||||
"versionList": "https://volume1.host/"
|
||||
},
|
||||
],
|
||||
"endpoints_links": [
|
||||
{
|
||||
"rel": "next",
|
||||
"href": "https://identity1.host/v2.0/endpoints"
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
"serviceCatalog_links": [
|
||||
{
|
||||
"rel": "next",
|
||||
"href": "https://identity.host/v2.0/endpoints?session=2hfh8Ar",
|
||||
},
|
||||
],
|
||||
},
|
||||
}
|
||||
_s = SERVICE_CATALOG.add_service('compute')
|
||||
_e = _s.add_endpoint("https://compute1.host/v1/1")
|
||||
_e["tenantId"] = "1"
|
||||
_e["versionId"] = "1.0"
|
||||
_e = _s.add_endpoint("https://compute1.host/v1.1/2", region="North")
|
||||
_e["tenantId"] = "2"
|
||||
_e["versionId"] = "1.1"
|
||||
_e = _s.add_endpoint("https://compute1.host/v2/1", region="North")
|
||||
_e["tenantId"] = "1"
|
||||
_e["versionId"] = "2"
|
||||
|
||||
_s = SERVICE_CATALOG.add_service('volume')
|
||||
_e = _s.add_endpoint("https://volume1.host/v1/1", region="South")
|
||||
_e["tenantId"] = "1"
|
||||
_e = _s.add_endpoint("https://volume1.host/v1.1/2", region="South")
|
||||
_e["tenantId"] = "2"
|
||||
|
||||
|
||||
class ServiceCatalogTest(utils.TestCase):
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
import copy
|
||||
import json
|
||||
|
||||
from keystoneclient import fixture
|
||||
import mock
|
||||
import requests
|
||||
|
||||
|
@ -23,33 +24,21 @@ from novaclient.v1_1 import client
|
|||
|
||||
|
||||
class AuthenticateAgainstKeystoneTests(utils.TestCase):
|
||||
|
||||
def get_token(self, **kwargs):
|
||||
resp = fixture.V2Token(**kwargs)
|
||||
resp.set_scope()
|
||||
|
||||
s = resp.add_service('compute')
|
||||
s.add_endpoint('http://localhost:8774/v1.1', region='RegionOne')
|
||||
|
||||
return resp
|
||||
|
||||
def test_authenticate_success(self):
|
||||
cs = client.Client("username", "password", "project_id",
|
||||
utils.AUTH_URL_V2, service_type='compute')
|
||||
resp = {
|
||||
"access": {
|
||||
"token": {
|
||||
"expires": "12345",
|
||||
"id": "FAKE_ID",
|
||||
"tenant": {
|
||||
"id": "FAKE_TENANT_ID",
|
||||
}
|
||||
},
|
||||
"serviceCatalog": [
|
||||
{
|
||||
"type": "compute",
|
||||
"endpoints": [
|
||||
{
|
||||
"region": "RegionOne",
|
||||
"adminURL": "http://localhost:8774/v1.1",
|
||||
"internalURL": "http://localhost:8774/v1.1",
|
||||
"publicURL": "http://localhost:8774/v1.1/",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
}
|
||||
resp = self.get_token()
|
||||
|
||||
auth_response = utils.TestResponse({
|
||||
"status_code": 200,
|
||||
"text": json.dumps(resp),
|
||||
|
@ -112,30 +101,7 @@ class AuthenticateAgainstKeystoneTests(utils.TestCase):
|
|||
def test_v1_auth_redirect(self):
|
||||
cs = client.Client("username", "password", "project_id",
|
||||
utils.AUTH_URL_V1, service_type='compute')
|
||||
dict_correct_response = {
|
||||
"access": {
|
||||
"token": {
|
||||
"expires": "12345",
|
||||
"id": "FAKE_ID",
|
||||
"tenant": {
|
||||
"id": "FAKE_TENANT_ID",
|
||||
}
|
||||
},
|
||||
"serviceCatalog": [
|
||||
{
|
||||
"type": "compute",
|
||||
"endpoints": [
|
||||
{
|
||||
"adminURL": "http://localhost:8774/v1.1",
|
||||
"region": "RegionOne",
|
||||
"internalURL": "http://localhost:8774/v1.1",
|
||||
"publicURL": "http://localhost:8774/v1.1/",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
}
|
||||
dict_correct_response = self.get_token()
|
||||
correct_response = json.dumps(dict_correct_response)
|
||||
dict_responses = [
|
||||
{"headers": {'location': 'http://127.0.0.1:5001'},
|
||||
|
@ -200,30 +166,7 @@ class AuthenticateAgainstKeystoneTests(utils.TestCase):
|
|||
def test_v2_auth_redirect(self):
|
||||
cs = client.Client("username", "password", "project_id",
|
||||
utils.AUTH_URL_V2, service_type='compute')
|
||||
dict_correct_response = {
|
||||
"access": {
|
||||
"token": {
|
||||
"expires": "12345",
|
||||
"id": "FAKE_ID",
|
||||
"tenant": {
|
||||
"id": "FAKE_TENANT_ID",
|
||||
}
|
||||
},
|
||||
"serviceCatalog": [
|
||||
{
|
||||
"type": "compute",
|
||||
"endpoints": [
|
||||
{
|
||||
"adminURL": "http://localhost:8774/v1.1",
|
||||
"region": "RegionOne",
|
||||
"internalURL": "http://localhost:8774/v1.1",
|
||||
"publicURL": "http://localhost:8774/v1.1/",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
}
|
||||
dict_correct_response = self.get_token()
|
||||
correct_response = json.dumps(dict_correct_response)
|
||||
dict_responses = [
|
||||
{"headers": {'location': 'http://127.0.0.1:5001'},
|
||||
|
@ -288,42 +231,12 @@ class AuthenticateAgainstKeystoneTests(utils.TestCase):
|
|||
def test_ambiguous_endpoints(self):
|
||||
cs = client.Client("username", "password", "project_id",
|
||||
utils.AUTH_URL_V2, service_type='compute')
|
||||
resp = {
|
||||
"access": {
|
||||
"token": {
|
||||
"expires": "12345",
|
||||
"id": "FAKE_ID",
|
||||
"tenant": {
|
||||
"id": "FAKE_TENANT_ID",
|
||||
}
|
||||
},
|
||||
"serviceCatalog": [
|
||||
{
|
||||
"adminURL": "http://localhost:8774/v1.1",
|
||||
"type": "compute",
|
||||
"name": "Compute CLoud",
|
||||
"endpoints": [
|
||||
{
|
||||
"region": "RegionOne",
|
||||
"internalURL": "http://localhost:8774/v1.1",
|
||||
"publicURL": "http://localhost:8774/v1.1/",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
"adminURL": "http://localhost:8774/v1.1",
|
||||
"type": "compute",
|
||||
"name": "Hyper-compute Cloud",
|
||||
"endpoints": [
|
||||
{
|
||||
"internalURL": "http://localhost:8774/v1.1",
|
||||
"publicURL": "http://localhost:8774/v1.1/",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
}
|
||||
resp = self.get_token()
|
||||
|
||||
# duplicate existing service
|
||||
s = resp.add_service('compute')
|
||||
s.add_endpoint('http://localhost:8774/v1.1', region='RegionOne')
|
||||
|
||||
auth_response = utils.TestResponse({
|
||||
"status_code": 200,
|
||||
"text": json.dumps(resp),
|
||||
|
@ -342,30 +255,7 @@ class AuthenticateAgainstKeystoneTests(utils.TestCase):
|
|||
cs = client.Client("username", None, "project_id",
|
||||
utils.AUTH_URL_V2, service_type='compute')
|
||||
cs.client.auth_token = "FAKE_ID"
|
||||
resp = {
|
||||
"access": {
|
||||
"token": {
|
||||
"expires": "12345",
|
||||
"id": "FAKE_ID",
|
||||
"tenant": {
|
||||
"id": "FAKE_TENANT_ID",
|
||||
}
|
||||
},
|
||||
"serviceCatalog": [
|
||||
{
|
||||
"type": "compute",
|
||||
"endpoints": [
|
||||
{
|
||||
"region": "RegionOne",
|
||||
"adminURL": "http://localhost:8774/v1.1",
|
||||
"internalURL": "http://localhost:8774/v1.1",
|
||||
"publicURL": "http://localhost:8774/v1.1/",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
}
|
||||
resp = self.get_token(token_id="FAKE_ID")
|
||||
auth_response = utils.TestResponse({
|
||||
"status_code": 200,
|
||||
"text": json.dumps(resp),
|
||||
|
|
Loading…
Reference in New Issue