Skip to content

Commit

Permalink
Merge "Fixing functional tests that require keystone"
Browse files Browse the repository at this point in the history
  • Loading branch information
Jenkins authored and openstack-gerrit committed Oct 19, 2011
2 parents d3a31b3 + a9d4cdd commit e764565
Show file tree
Hide file tree
Showing 5 changed files with 115 additions and 58 deletions.
4 changes: 2 additions & 2 deletions glance/registry/api/v1/members.py
Expand Up @@ -205,14 +205,14 @@ def update(self, req, image_id, id, body=None):
try:
session = db_api.get_session()
membership = db_api.image_member_find(req.context,
image_id, member,
image_id, id,
session=session)
if can_share is not None:
values = dict(can_share=can_share)
db_api.image_member_update(req.context, membership, values,
session=session)
except exception.NotFound:
values = dict(image_id=image['id'], member=member,
values = dict(image_id=image['id'], member=id,
can_share=bool(can_share))
db_api.image_member_create(req.context, values, session=session)

Expand Down
27 changes: 27 additions & 0 deletions glance/tests/functional/data/keystone_data.py
Expand Up @@ -46,6 +46,33 @@
'2015-02-05T00:00'),
('token', 'add', '999888777666', 'admin', 'openstack',
'2015-02-05T00:00'),
#Services
#2 Service Name:swift Type:object-store
('service', 'add', 'swift',
'object-store', 'Swift-compatible service'),
('service', 'add', 'object_store',
'object-store', 'Swift-compatible service'),
#3 Service Name:cdn Type:object-store
('service', 'add', 'cdn',
'object-store', 'Swift-compatible service'),
#4 Service Name:nova Type:compute
('service', 'add', 'nova',
'compute', 'OpenStack Compute Service'),
('service', 'add', 'compute',
'compute', 'OpenStack Compute Service'),
('service', 'add', 'compute_v1',
'compute', 'OpenStack Compute Service'),
#5 Service Name:nova_compat Type:Compute
('service', 'add', 'nova_compat',
'compute', 'OpenStack Compute Service'),
#6 Service Name:glance Type:image
('service', 'add', 'glance',
'image', 'OpenStack Image Service'),
('service', 'add', 'image',
'image', 'OpenStack Image Service'),
#7 Service Name:keystone Type:identity
('service', 'add', 'identity',
'identity', 'OpenStack Identity Service'),
# Keeping for compatibility for a while till dashboard catches up
('endpointTemplates', 'add', 'RegionOne', 'swift',
'http://swift.publicinternets.com/v1/AUTH_%tenant_id%',
Expand Down
3 changes: 3 additions & 0 deletions glance/tests/functional/keystone_utils.py
Expand Up @@ -28,9 +28,12 @@


pattieblack_token = '887665443383'
pattieblack_id = '2'
froggy_token = '383344566788'
froggy_id = '3'
admin_token = '999888777666'
bacon_token = '111111111111'
bacon_id = '4'
prosciutto_token = '222222222222'


Expand Down
49 changes: 30 additions & 19 deletions glance/tests/functional/test_private_images.py
Expand Up @@ -58,7 +58,7 @@ def test_private_images_notadmin(self):
self.assertEqual(data['image']['size'], FIVE_KB)
self.assertEqual(data['image']['name'], "Image1")
self.assertEqual(data['image']['is_public'], False)
self.assertEqual(data['image']['owner'], 'pattieblack')
self.assertEqual(data['image']['owner'], keystone_utils.pattieblack_id)

# Next, make sure froggy can't list the image
headers = {'X-Auth-Token': keystone_utils.froggy_token}
Expand Down Expand Up @@ -135,11 +135,11 @@ def test_private_images_notadmin(self):
self.assertEqual(response.status, 200)
data = json.loads(content)
self.assertEqual(len(data['images']), 1)
self.assertEqual(data['images'][0]['id'], 1)
self.assertEqual(data['images'][0]['size'], FIVE_KB)
self.assertEqual(data['images'][0]['name'], "Image1")
self.assertEqual(data['images'][0]['is_public'], False)
self.assertEqual(data['images'][0]['owner'], 'pattieblack')
self.assertEqual(data['images'][0]['owner'],
keystone_utils.pattieblack_id)

# Pattieblack should be able to get the image metadata
headers = {'X-Auth-Token': keystone_utils.pattieblack_token}
Expand All @@ -149,7 +149,8 @@ def test_private_images_notadmin(self):
self.assertEqual(response.status, 200)
self.assertEqual(response['x-image-meta-name'], "Image1")
self.assertEqual(response['x-image-meta-is_public'], "False")
self.assertEqual(response['x-image-meta-owner'], "pattieblack")
self.assertEqual(response['x-image-meta-owner'],
keystone_utils.pattieblack_id)

# And of course the image itself
headers = {'X-Auth-Token': keystone_utils.pattieblack_token}
Expand All @@ -160,7 +161,8 @@ def test_private_images_notadmin(self):
self.assertEqual(content, "*" * FIVE_KB)
self.assertEqual(response['x-image-meta-name'], "Image1")
self.assertEqual(response['x-image-meta-is_public'], "False")
self.assertEqual(response['x-image-meta-owner'], "pattieblack")
self.assertEqual(response['x-image-meta-owner'],
keystone_utils.pattieblack_id)

# Pattieblack should be able to manipulate is_public
headers = {'X-Auth-Token': keystone_utils.pattieblack_token,
Expand All @@ -172,7 +174,7 @@ def test_private_images_notadmin(self):
data = json.loads(content)
self.assertEqual(data['image']['name'], "Image1")
self.assertEqual(data['image']['is_public'], True)
self.assertEqual(data['image']['owner'], 'pattieblack')
self.assertEqual(data['image']['owner'], keystone_utils.pattieblack_id)

# Pattieblack can't give the image away, however
headers = {'X-Auth-Token': keystone_utils.pattieblack_token,
Expand All @@ -184,7 +186,7 @@ def test_private_images_notadmin(self):
data = json.loads(content)
self.assertEqual(data['image']['name'], "Image1")
self.assertEqual(data['image']['is_public'], True)
self.assertEqual(data['image']['owner'], 'pattieblack')
self.assertEqual(data['image']['owner'], keystone_utils.pattieblack_id)

# Now that the image is public, froggy can see it
headers = {'X-Auth-Token': keystone_utils.froggy_token}
Expand All @@ -210,7 +212,8 @@ def test_private_images_notadmin(self):
self.assertEqual(data['images'][0]['size'], FIVE_KB)
self.assertEqual(data['images'][0]['name'], "Image1")
self.assertEqual(data['images'][0]['is_public'], True)
self.assertEqual(data['images'][0]['owner'], 'pattieblack')
self.assertEqual(data['images'][0]['owner'],
keystone_utils.pattieblack_id)

# Froggy can get the image metadata now...
headers = {'X-Auth-Token': keystone_utils.froggy_token}
Expand All @@ -220,7 +223,8 @@ def test_private_images_notadmin(self):
self.assertEqual(response.status, 200)
self.assertEqual(response['x-image-meta-name'], "Image1")
self.assertEqual(response['x-image-meta-is_public'], "True")
self.assertEqual(response['x-image-meta-owner'], "pattieblack")
self.assertEqual(response['x-image-meta-owner'],
keystone_utils.pattieblack_id)

# And of course the image itself
headers = {'X-Auth-Token': keystone_utils.froggy_token}
Expand All @@ -231,7 +235,8 @@ def test_private_images_notadmin(self):
self.assertEqual(content, "*" * FIVE_KB)
self.assertEqual(response['x-image-meta-name'], "Image1")
self.assertEqual(response['x-image-meta-is_public'], "True")
self.assertEqual(response['x-image-meta-owner'], "pattieblack")
self.assertEqual(response['x-image-meta-owner'],
keystone_utils.pattieblack_id)

# Froggy still can't change is-public
headers = {'X-Auth-Token': keystone_utils.froggy_token,
Expand Down Expand Up @@ -289,7 +294,7 @@ def test_private_images_admin(self):
self.assertEqual(data['image']['size'], FIVE_KB)
self.assertEqual(data['image']['name'], "Image1")
self.assertEqual(data['image']['is_public'], False)
self.assertEqual(data['image']['owner'], 'pattieblack')
self.assertEqual(data['image']['owner'], keystone_utils.pattieblack_id)

# Make sure admin does not see image by default
headers = {'X-Auth-Token': keystone_utils.admin_token}
Expand Down Expand Up @@ -334,7 +339,8 @@ def test_private_images_admin(self):
self.assertEqual(data['images'][0]['size'], FIVE_KB)
self.assertEqual(data['images'][0]['name'], "Image1")
self.assertEqual(data['images'][0]['is_public'], False)
self.assertEqual(data['images'][0]['owner'], 'pattieblack')
self.assertEqual(data['images'][0]['owner'],
keystone_utils.pattieblack_id)

# Admin should be able to get the image metadata
headers = {'X-Auth-Token': keystone_utils.admin_token}
Expand All @@ -344,7 +350,8 @@ def test_private_images_admin(self):
self.assertEqual(response.status, 200)
self.assertEqual(response['x-image-meta-name'], "Image1")
self.assertEqual(response['x-image-meta-is_public'], "False")
self.assertEqual(response['x-image-meta-owner'], "pattieblack")
self.assertEqual(response['x-image-meta-owner'],
keystone_utils.pattieblack_id)

# And of course the image itself
headers = {'X-Auth-Token': keystone_utils.admin_token}
Expand All @@ -355,7 +362,8 @@ def test_private_images_admin(self):
self.assertEqual(content, "*" * FIVE_KB)
self.assertEqual(response['x-image-meta-name'], "Image1")
self.assertEqual(response['x-image-meta-is_public'], "False")
self.assertEqual(response['x-image-meta-owner'], "pattieblack")
self.assertEqual(response['x-image-meta-owner'],
keystone_utils.pattieblack_id)

# Admin should be able to manipulate is_public
headers = {'X-Auth-Token': keystone_utils.admin_token,
Expand All @@ -367,7 +375,8 @@ def test_private_images_admin(self):
data = json.loads(content)
self.assertEqual(data['image']['name'], "Image1")
self.assertEqual(data['image']['is_public'], True)
self.assertEqual(data['image']['owner'], 'pattieblack')
self.assertEqual(data['image']['owner'],
keystone_utils.pattieblack_id)

# Admin should also be able to change the ownership of the
# image
Expand Down Expand Up @@ -466,7 +475,7 @@ def test_private_images_admin(self):

# Or give themselves ownership
headers = {'X-Auth-Token': keystone_utils.pattieblack_token,
'X-Image-Meta-Owner': 'pattieblack'}
'X-Image-Meta-Owner': keystone_utils.pattieblack_id}
path = "http://%s:%d/v1/images/1" % ("0.0.0.0", self.api_port)
http = httplib2.Http()
response, content = http.request(path, 'PUT', headers=headers)
Expand Down Expand Up @@ -515,7 +524,7 @@ def test_private_images_anon(self):
self.assertEqual(data['image']['size'], FIVE_KB)
self.assertEqual(data['image']['name'], "Image1")
self.assertEqual(data['image']['is_public'], False)
self.assertEqual(data['image']['owner'], 'pattieblack')
self.assertEqual(data['image']['owner'], keystone_utils.pattieblack_id)

# Make sure anonymous user can't list the image
path = "http://%s:%d/v1/images" % ("0.0.0.0", self.api_port)
Expand Down Expand Up @@ -715,7 +724,8 @@ def test_glance_cli(self):
self.assertEqual(response.status, 200)
self.assertEqual(response['x-image-meta-name'], "MyImage")
self.assertEqual(response['x-image-meta-is_public'], "False")
self.assertEqual(response['x-image-meta-owner'], "pattieblack")
self.assertEqual(response['x-image-meta-owner'],
keystone_utils.pattieblack_id)

# Test that we can update is_public through the CLI
cmd = ("bin/glance --port=%d --auth_token=%s update 1 is_public=True" %
Expand All @@ -733,7 +743,8 @@ def test_glance_cli(self):
self.assertEqual(response.status, 200)
self.assertEqual(response['x-image-meta-name'], "MyImage")
self.assertEqual(response['x-image-meta-is_public'], "True")
self.assertEqual(response['x-image-meta-owner'], "pattieblack")
self.assertEqual(response['x-image-meta-owner'],
keystone_utils.pattieblack_id)

# Test that admin can change the owner
cmd = ("bin/glance --port=%d --auth_token=%s update 1 owner=froggy" %
Expand Down

0 comments on commit e764565

Please sign in to comment.