blob: 312fbc67bd5a7f5198bc8d36389a876e34e3b2e5 [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)
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
55 @test.services('object_storage')
56 def test_swift_acl_anonymous_download(self):
57 """This test will cover below steps:
58 1. Create container
59 2. Upload object to the new container
60 3. Change the ACL of the container
61 4. Check if the object can be download by anonymous user
62 5. Delete the object and container
63 """
Chris Dentde456a12014-09-10 12:41:15 +010064 container_name = self.create_container()
65 obj_name, _ = self.upload_object_to_container(container_name)
Fei Long Wang02abbf32014-06-12 11:50:35 +120066 obj_url = '%s/%s/%s' % (self.object_client.base_url,
67 container_name, obj_name)
Rob Crittendena7db6692014-11-23 18:44:38 -050068 dscv = CONF.identity.disable_ssl_certificate_validation
69 ca_certs = CONF.identity.ca_certificates_file
70 http_client = http.ClosingHttp(
71 disable_ssl_certificate_validation=dscv, ca_certs=ca_certs)
Fei Long Wang02abbf32014-06-12 11:50:35 +120072 resp, _ = http_client.request(obj_url, 'GET')
73 self.assertEqual(resp.status, 401)
Chris Dentde456a12014-09-10 12:41:15 +010074 self.change_container_acl(container_name, '.r:*')
Fei Long Wang02abbf32014-06-12 11:50:35 +120075 resp, _ = http_client.request(obj_url, 'GET')
76 self.assertEqual(resp.status, 200)