blob: 9e0fee0c7999e0dcbf2e81d7c9051531832b3eb5 [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
Fei Long Wang02abbf32014-06-12 11:50:35 +120016from tempest.common import http
Matthew Treinish6c072292014-01-29 19:15:52 +000017from tempest import config
Mauro S. M. Rodriguese86ed042013-12-12 18:56:00 +000018from tempest.openstack.common import log as logging
19from tempest.scenario import manager
Masayuki Igawa4ded9f02014-02-17 15:05:59 +090020from tempest import test
Mauro S. M. Rodriguese86ed042013-12-12 18:56:00 +000021
Matthew Treinish6c072292014-01-29 19:15:52 +000022CONF = config.CONF
23
Mauro S. M. Rodriguese86ed042013-12-12 18:56:00 +000024LOG = logging.getLogger(__name__)
25
26
Chris Dent0d494112014-08-26 13:48:30 +010027class TestSwiftBasicOps(manager.SwiftScenarioTest):
Mauro S. M. Rodriguese86ed042013-12-12 18:56:00 +000028 """
Chris Dent0d494112014-08-26 13:48:30 +010029 Test swift basic ops.
Mauro S. M. Rodriguese86ed042013-12-12 18:56:00 +000030 * get swift stat.
31 * create container.
32 * upload a file to the created container.
33 * list container's objects and assure that the uploaded file is present.
Fei Long Wang02abbf32014-06-12 11:50:35 +120034 * download the object and check the content
Mauro S. M. Rodriguese86ed042013-12-12 18:56:00 +000035 * delete object from container.
36 * list container's objects and assure that the deleted file is gone.
37 * delete a container.
38 * list containers and assure that the deleted container is gone.
Fei Long Wang02abbf32014-06-12 11:50:35 +120039 * change ACL of the container and make sure it works successfully
Mauro S. M. Rodriguese86ed042013-12-12 18:56:00 +000040 """
41
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)
47 self.list_and_check_container_objects(container_name, [obj_name])
48 self.download_and_verify(container_name, obj_name, obj_data)
49 self.delete_object(container_name, obj_name)
50 self.delete_container(container_name)
Fei Long Wang02abbf32014-06-12 11:50:35 +120051
52 @test.services('object_storage')
53 def test_swift_acl_anonymous_download(self):
54 """This test will cover below steps:
55 1. Create container
56 2. Upload object to the new container
57 3. Change the ACL of the container
58 4. Check if the object can be download by anonymous user
59 5. Delete the object and container
60 """
Chris Dentde456a12014-09-10 12:41:15 +010061 container_name = self.create_container()
62 obj_name, _ = self.upload_object_to_container(container_name)
Fei Long Wang02abbf32014-06-12 11:50:35 +120063 obj_url = '%s/%s/%s' % (self.object_client.base_url,
64 container_name, obj_name)
65 http_client = http.ClosingHttp()
66 resp, _ = http_client.request(obj_url, 'GET')
67 self.assertEqual(resp.status, 401)
Chris Dentde456a12014-09-10 12:41:15 +010068 self.change_container_acl(container_name, '.r:*')
Fei Long Wang02abbf32014-06-12 11:50:35 +120069 resp, _ = http_client.request(obj_url, 'GET')
70 self.assertEqual(resp.status, 200)
Chris Dentde456a12014-09-10 12:41:15 +010071 self.delete_object(container_name, obj_name)
72 self.delete_container(container_name)