Image members bones
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
|
||||
import unittest
|
||||
|
||||
from tests.v1 import utils
|
||||
|
||||
import glanceclient.v1.images
|
||||
import glanceclient.v1.image_members
|
||||
|
||||
|
||||
class ImageMemberManagerTest(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.api = utils.FakeAPI()
|
||||
self.mgr = glanceclient.v1.image_members.ImageMemberManager(self.api)
|
||||
self.image = glanceclient.v1.images.Image(self.api, {'id': '1'}, True)
|
||||
|
||||
def test_list(self):
|
||||
members = self.mgr.list(self.image)
|
||||
expect = [('GET', '/v1/images/1/members', {}, None)]
|
||||
self.assertEqual(self.api.calls, expect)
|
||||
self.assertEqual(len(members), 1)
|
||||
self.assertEqual(members[0].member_id, '1')
|
||||
self.assertEqual(members[0].can_share, False)
|
||||
|
||||
def test_delete(self):
|
||||
self.mgr.delete(self.image, '1')
|
||||
expect = [('DELETE', '/v1/images/1/members/1', {}, None)]
|
||||
self.assertEqual(self.api.calls, expect)
|
||||
|
||||
def test_create(self):
|
||||
self.mgr.create(self.image, '1', can_share=True)
|
||||
expect_body = {'member': {'can_share': True}}
|
||||
expect = [('PUT', '/v1/images/1/members/1', {}, expect_body)]
|
||||
self.assertEqual(self.api.calls, expect)
|
||||
|
||||
def test_replace(self):
|
||||
body = [
|
||||
{'member_id': '2', 'can_share': False},
|
||||
{'member_id': '3'},
|
||||
]
|
||||
self.mgr.replace(self.image, body)
|
||||
expect = [('PUT', '/v1/images/1/members', {}, {'memberships': body})]
|
||||
self.assertEqual(self.api.calls, expect)
|
||||
|
||||
def test_replace_objects(self):
|
||||
body = [
|
||||
glanceclient.v1.image_members.ImageMember(
|
||||
self.mgr, {'member_id': '2', 'can_share': False}),
|
||||
glanceclient.v1.image_members.ImageMember(
|
||||
self.mgr, {'member_id': '3', 'can_share': True}),
|
||||
]
|
||||
self.mgr.replace(self.image, body)
|
||||
expect_body = {
|
||||
'memberships': [
|
||||
{'member_id': '2', 'can_share': False},
|
||||
{'member_id': '3', 'can_share': True},
|
||||
],
|
||||
}
|
||||
expect = [('PUT', '/v1/images/1/members', {}, expect_body)]
|
||||
self.assertEqual(self.api.calls, expect)
|
||||
@@ -57,3 +57,27 @@ class ImageManagerTest(unittest.TestCase):
|
||||
self.assertEqual(self.api.calls, expect)
|
||||
self.assertEqual(image.id, '1')
|
||||
self.assertEqual(image.name, 'image-2')
|
||||
|
||||
|
||||
class ImageTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.api = utils.FakeAPI()
|
||||
self.mgr = glanceclient.v1.images.ImageManager(self.api)
|
||||
|
||||
def test_delete(self):
|
||||
image = self.mgr.get('1')
|
||||
image.delete()
|
||||
expect = [
|
||||
('HEAD', '/v1/images/1', {}, None),
|
||||
('DELETE', '/v1/images/1', {}, None),
|
||||
]
|
||||
self.assertEqual(self.api.calls, expect)
|
||||
|
||||
def test_update(self):
|
||||
image = self.mgr.get('1')
|
||||
image.update(name='image-5')
|
||||
expect = [
|
||||
('HEAD', '/v1/images/1', {}, None),
|
||||
('PUT', '/v1/images/1', {'x-image-meta-name': 'image-5'}, None),
|
||||
]
|
||||
self.assertEqual(self.api.calls, expect)
|
||||
|
||||
+29
-2
@@ -1,4 +1,17 @@
|
||||
|
||||
# Copyright 2012 OpenStack LLC.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# 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.
|
||||
|
||||
fixtures = {
|
||||
'/v1/images': {
|
||||
@@ -39,9 +52,23 @@ fixtures = {
|
||||
},
|
||||
None),
|
||||
'DELETE': ({}, None),
|
||||
}
|
||||
},
|
||||
'/v1/images/1/members': {
|
||||
'GET': (
|
||||
{},
|
||||
{'members': [
|
||||
{'member_id': '1', 'can_share': False},
|
||||
]},
|
||||
),
|
||||
'PUT': ({}, None),
|
||||
},
|
||||
'/v1/images/1/members/1': {
|
||||
'PUT': ({}, None),
|
||||
'DELETE': ({}, None),
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
class FakeAPI(object):
|
||||
|
||||
def __init__(self):
|
||||
|
||||
Reference in New Issue
Block a user