blob: b622c4ae32bba7446a17cb84dc14cf0ae83127dd [file] [log] [blame]
Mauro S. M. Rodriguese86ed042013-12-12 18:56:00 +00001# Copyright 2013 IBM Corp.
2# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15
Matthew Treinish6c072292014-01-29 19:15:52 +000016from tempest import config
Mauro S. M. Rodriguese86ed042013-12-12 18:56:00 +000017from tempest.openstack.common import log as logging
18from tempest.scenario import manager
Masayuki Igawa4ded9f02014-02-17 15:05:59 +090019from tempest import test
Mauro S. M. Rodriguese86ed042013-12-12 18:56:00 +000020
Matthew Treinish6c072292014-01-29 19:15:52 +000021CONF = config.CONF
22
Mauro S. M. Rodriguese86ed042013-12-12 18:56:00 +000023LOG = logging.getLogger(__name__)
24
25
Chris Dent0d494112014-08-26 13:48:30 +010026class TestSwiftBasicOps(manager.SwiftScenarioTest):
Mauro S. M. Rodriguese86ed042013-12-12 18:56:00 +000027 """
Chris Dent0d494112014-08-26 13:48:30 +010028 Test swift basic ops.
Mauro S. M. Rodriguese86ed042013-12-12 18:56:00 +000029 * get swift stat.
30 * create container.
31 * upload a file to the created container.
32 * list container's objects and assure that the uploaded file is present.
Fei Long Wang02abbf32014-06-12 11:50:35 +120033 * download the object and check the content
Mauro S. M. Rodriguese86ed042013-12-12 18:56:00 +000034 * delete object from container.
35 * list container's objects and assure that the deleted file is gone.
36 * delete a container.
37 * list containers and assure that the deleted container is gone.
Fei Long Wang02abbf32014-06-12 11:50:35 +120038 * change ACL of the container and make sure it works successfully
Mauro S. M. Rodriguese86ed042013-12-12 18:56:00 +000039 """
40
Chris Hoge7579c1a2015-02-26 14:12:15 -080041 @test.idempotent_id('b920faf1-7b8a-4657-b9fe-9c4512bfb381')
Masayuki Igawa4ded9f02014-02-17 15:05:59 +090042 @test.services('object_storage')
Mauro S. M. Rodriguese86ed042013-12-12 18:56:00 +000043 def test_swift_basic_ops(self):
Chris Dentde456a12014-09-10 12:41:15 +010044 self.get_swift_stat()
45 container_name = self.create_container()
46 obj_name, obj_data = self.upload_object_to_container(container_name)
Chris Dent1d4313a2014-10-28 12:16:48 +000047 self.list_and_check_container_objects(container_name,
48 present_obj=[obj_name])
Chris Dentde456a12014-09-10 12:41:15 +010049 self.download_and_verify(container_name, obj_name, obj_data)
50 self.delete_object(container_name, obj_name)
Chris Dent1d4313a2014-10-28 12:16:48 +000051 self.list_and_check_container_objects(container_name,
52 not_present_obj=[obj_name])
Chris Dentde456a12014-09-10 12:41:15 +010053 self.delete_container(container_name)
Fei Long Wang02abbf32014-06-12 11:50:35 +120054
Chris Hoge7579c1a2015-02-26 14:12:15 -080055 @test.idempotent_id('916c7111-cb1f-44b2-816d-8f760e4ea910')
Fei Long Wang02abbf32014-06-12 11:50:35 +120056 @test.services('object_storage')
57 def test_swift_acl_anonymous_download(self):
58 """This test will cover below steps:
59 1. Create container
60 2. Upload object to the new container
61 3. Change the ACL of the container
62 4. Check if the object can be download by anonymous user
63 5. Delete the object and container
64 """
Chris Dentde456a12014-09-10 12:41:15 +010065 container_name = self.create_container()
66 obj_name, _ = self.upload_object_to_container(container_name)
Fei Long Wang02abbf32014-06-12 11:50:35 +120067 obj_url = '%s/%s/%s' % (self.object_client.base_url,
68 container_name, obj_name)
Ken'ichi Ohmichif82cfb52015-01-14 06:00:21 +000069 resp, _ = self.object_client.raw_request(obj_url, 'GET')
Fei Long Wang02abbf32014-06-12 11:50:35 +120070 self.assertEqual(resp.status, 401)
Ken'ichi Ohmichif82cfb52015-01-14 06:00:21 +000071
Chris Dentde456a12014-09-10 12:41:15 +010072 self.change_container_acl(container_name, '.r:*')
Ken'ichi Ohmichif82cfb52015-01-14 06:00:21 +000073 resp, _ = self.object_client.raw_request(obj_url, 'GET')
Fei Long Wang02abbf32014-06-12 11:50:35 +120074 self.assertEqual(resp.status, 200)