Merge "Add delete image tag test"
This commit is contained in:
@@ -0,0 +1,183 @@
|
|||||||
|
"""
|
||||||
|
Copyright 2015 Rackspace
|
||||||
|
|
||||||
|
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.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from cloudcafe.common.tools.datagen import rand_name
|
||||||
|
|
||||||
|
from cloudroast.glance.fixtures import ImagesFixture
|
||||||
|
|
||||||
|
|
||||||
|
class DeleteImageTag(ImagesFixture):
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def setUpClass(cls):
|
||||||
|
super(DeleteImageTag, cls).setUpClass()
|
||||||
|
|
||||||
|
cls.tag = rand_name('tag')
|
||||||
|
|
||||||
|
number_of_tags = 3
|
||||||
|
cls.tags_to_add = []
|
||||||
|
[cls.tags_to_add.append(rand_name('tag'))
|
||||||
|
for x in range(number_of_tags)]
|
||||||
|
|
||||||
|
created_images = cls.images.behaviors.create_images_via_task(count=4)
|
||||||
|
|
||||||
|
cls.created_image = created_images.pop()
|
||||||
|
|
||||||
|
cls.single_tag_image = created_images.pop()
|
||||||
|
cls.images.client.add_image_tag(cls.single_tag_image.id_, cls.tag)
|
||||||
|
|
||||||
|
cls.multiple_tags_image = created_images.pop()
|
||||||
|
for tag in cls.tags_to_add:
|
||||||
|
cls.images.client.add_image_tag(cls.multiple_tags_image.id_, tag)
|
||||||
|
|
||||||
|
cls.alt_single_tag_image = created_images.pop()
|
||||||
|
cls.images.client.add_image_tag(cls.alt_single_tag_image.id_, cls.tag)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def tearDownClass(cls):
|
||||||
|
cls.images.behaviors.resources.release()
|
||||||
|
super(DeleteImageTag, cls).tearDownClass()
|
||||||
|
|
||||||
|
def test_delete_single_image_tag(self):
|
||||||
|
"""
|
||||||
|
@summary: Delete single image tag
|
||||||
|
|
||||||
|
1) Delete a single image tag
|
||||||
|
2) Verify that the response code is 204
|
||||||
|
3) Get image details
|
||||||
|
4) Verify that the response is ok
|
||||||
|
5) Verify that the deleted image tag is not in the list of image tags
|
||||||
|
"""
|
||||||
|
|
||||||
|
resp = self.images.client.delete_image_tag(
|
||||||
|
self.single_tag_image.id_, self.tag)
|
||||||
|
self.assertEqual(resp.status_code, 204,
|
||||||
|
self.status_code_msg.format(204, resp.status_code))
|
||||||
|
|
||||||
|
resp = self.images.client.get_image_details(self.single_tag_image.id_)
|
||||||
|
self.assertTrue(resp.ok, self.ok_resp_msg.format(resp.status_code))
|
||||||
|
get_image = resp.entity
|
||||||
|
|
||||||
|
self.assertNotIn(
|
||||||
|
self.tag, get_image.tags,
|
||||||
|
msg=('Unexpected tag for image {0} received. '
|
||||||
|
'Expected: {1} in tags Received: {2} '
|
||||||
|
'not in tags').format(self.single_tag_image.id_, self.tag,
|
||||||
|
get_image.tags))
|
||||||
|
|
||||||
|
def test_delete_multiple_image_tags(self):
|
||||||
|
"""
|
||||||
|
@summary: Delete multiple image tags
|
||||||
|
|
||||||
|
1) Delete multiple image tags
|
||||||
|
2) Verify that the response code is 204
|
||||||
|
3) Get image details
|
||||||
|
4) Verify that the response is ok
|
||||||
|
5) Verify that the deleted image tag is not in the list of image tags
|
||||||
|
"""
|
||||||
|
|
||||||
|
for tag in self.tags_to_add:
|
||||||
|
resp = self.images.client.delete_image_tag(
|
||||||
|
self.multiple_tags_image.id_, tag)
|
||||||
|
self.assertEqual(resp.status_code, 204,
|
||||||
|
self.status_code_msg.format(204,
|
||||||
|
resp.status_code))
|
||||||
|
|
||||||
|
resp = self.images.client.get_image_details(self.single_tag_image.id_)
|
||||||
|
self.assertTrue(resp.ok, self.ok_resp_msg.format(resp.status_code))
|
||||||
|
get_image = resp.entity
|
||||||
|
|
||||||
|
for tag in self.tags_to_add:
|
||||||
|
self.assertNotIn(
|
||||||
|
tag, get_image.tags,
|
||||||
|
msg=('Unexpected tag for image {0} received. '
|
||||||
|
'Expected: {1} in tags Received: {2} '
|
||||||
|
'not in tags').format(self.single_tag_image.id_, self.tag,
|
||||||
|
get_image.tags))
|
||||||
|
|
||||||
|
def test_delete_image_tag_that_is_already_deleted(self):
|
||||||
|
"""
|
||||||
|
@summary: Delete image tag that is already deleted
|
||||||
|
|
||||||
|
1) Delete image tag
|
||||||
|
2) Verify that the response code is 204
|
||||||
|
3) Delete image tag again
|
||||||
|
4) Verify that the response code is 404
|
||||||
|
"""
|
||||||
|
|
||||||
|
resp = self.images.client.delete_image_tag(
|
||||||
|
self.alt_single_tag_image.id_, self.tag)
|
||||||
|
self.assertEqual(resp.status_code, 204,
|
||||||
|
self.status_code_msg.format(204, resp.status_code))
|
||||||
|
|
||||||
|
resp = self.images.client.delete_image_tag(
|
||||||
|
self.alt_single_tag_image.id_, self.tag)
|
||||||
|
self.assertEqual(resp.status_code, 404,
|
||||||
|
self.status_code_msg.format(404, resp.status_code))
|
||||||
|
|
||||||
|
def test_delete_image_tag_using_blank_image_id(self):
|
||||||
|
"""
|
||||||
|
@summary: Delete image tag using blank image id
|
||||||
|
|
||||||
|
1) Delete image tag using blank image id
|
||||||
|
2) Verify that the response code is 404
|
||||||
|
"""
|
||||||
|
|
||||||
|
tag = rand_name('tag')
|
||||||
|
|
||||||
|
resp = self.images.client.delete_image_tag(image_id='', tag=tag)
|
||||||
|
self.assertEqual(resp.status_code, 404,
|
||||||
|
self.status_code_msg.format(404, resp.status_code))
|
||||||
|
|
||||||
|
def test_delete_image_tag_using_invalid_image_id(self):
|
||||||
|
"""
|
||||||
|
@summary: Delete image tag using invalid image id
|
||||||
|
|
||||||
|
1) Delete image tag using invalid image id
|
||||||
|
2) Verify that the response code is 404
|
||||||
|
"""
|
||||||
|
|
||||||
|
tag = rand_name('tag')
|
||||||
|
|
||||||
|
resp = self.images.client.delete_image_tag(image_id='invalid', tag=tag)
|
||||||
|
self.assertEqual(resp.status_code, 404,
|
||||||
|
self.status_code_msg.format(404, resp.status_code))
|
||||||
|
|
||||||
|
def test_delete_image_tag_using_blank_image_tag(self):
|
||||||
|
"""
|
||||||
|
@summary: Delete image tag using blank image tag
|
||||||
|
|
||||||
|
1) Delete image tag using blank image tag
|
||||||
|
2) Verify that the response code is 404
|
||||||
|
"""
|
||||||
|
|
||||||
|
resp = self.images.client.delete_image_tag(
|
||||||
|
image_id=self.created_image.id_, tag='')
|
||||||
|
self.assertEqual(resp.status_code, 404,
|
||||||
|
self.status_code_msg.format(404, resp.status_code))
|
||||||
|
|
||||||
|
def test_delete_image_tag_using_image_tag_that_does_not_exist(self):
|
||||||
|
"""
|
||||||
|
@summary: Delete image tag using image tag that does not exist
|
||||||
|
|
||||||
|
1) Delete image tag using image tag that does not exist
|
||||||
|
2) Verify that the response code is 404
|
||||||
|
"""
|
||||||
|
|
||||||
|
resp = self.images.client.delete_image_tag(
|
||||||
|
image_id=self.created_image.id_, tag='does_not_exist')
|
||||||
|
self.assertEqual(resp.status_code, 404,
|
||||||
|
self.status_code_msg.format(404, resp.status_code))
|
||||||
Reference in New Issue
Block a user