Merge "Add more tests for bucket name validation"

This commit is contained in:
Jenkins 2015-07-10 06:32:52 +00:00 committed by Gerrit Code Review
commit daf6ec8e29
2 changed files with 53 additions and 0 deletions

View File

@ -14,6 +14,7 @@
# limitations under the License.
import unittest
import mock
from swift3 import utils
@ -33,5 +34,54 @@ class TestSwift3Utils(unittest.TestCase):
for s1, s2 in strs:
self.assertEquals(s1, utils.snake_to_camel(s2))
def test_validate_bucket_name(self):
# good cases
self.assertTrue(utils.validate_bucket_name('bucket'))
self.assertTrue(utils.validate_bucket_name('bucket1'))
self.assertTrue(utils.validate_bucket_name('bucket-1'))
self.assertTrue(utils.validate_bucket_name('b.u.c.k.e.t'))
self.assertTrue(utils.validate_bucket_name('a' * 63))
# bad cases
self.assertFalse(utils.validate_bucket_name('a'))
self.assertFalse(utils.validate_bucket_name('aa'))
self.assertFalse(utils.validate_bucket_name('a+a'))
self.assertFalse(utils.validate_bucket_name('a_a'))
self.assertFalse(utils.validate_bucket_name('Bucket'))
self.assertFalse(utils.validate_bucket_name('BUCKET'))
self.assertFalse(utils.validate_bucket_name('bucket-'))
self.assertFalse(utils.validate_bucket_name('bucket.'))
self.assertFalse(utils.validate_bucket_name('bucket_'))
self.assertFalse(utils.validate_bucket_name('bucket.-bucket'))
self.assertFalse(utils.validate_bucket_name('bucket-.bucket'))
self.assertFalse(utils.validate_bucket_name('bucket..bucket'))
self.assertFalse(utils.validate_bucket_name('a' * 64))
def test_validate_bucket_name_with_dns_compliant_bucket_names_false(self):
with mock.patch('swift3.utils.CONF.dns_compliant_bucket_names', False):
# good cases
self.assertTrue(utils.validate_bucket_name('bucket'))
self.assertTrue(utils.validate_bucket_name('bucket1'))
self.assertTrue(utils.validate_bucket_name('bucket-1'))
self.assertTrue(utils.validate_bucket_name('b.u.c.k.e.t'))
self.assertTrue(utils.validate_bucket_name('a' * 63))
self.assertTrue(utils.validate_bucket_name('a' * 255))
self.assertTrue(utils.validate_bucket_name('a_a'))
self.assertTrue(utils.validate_bucket_name('Bucket'))
self.assertTrue(utils.validate_bucket_name('BUCKET'))
self.assertTrue(utils.validate_bucket_name('bucket-'))
self.assertTrue(utils.validate_bucket_name('bucket_'))
self.assertTrue(utils.validate_bucket_name('bucket.-bucket'))
self.assertTrue(utils.validate_bucket_name('bucket-.bucket'))
self.assertTrue(utils.validate_bucket_name('bucket..bucket'))
# bad cases
self.assertFalse(utils.validate_bucket_name('a'))
self.assertFalse(utils.validate_bucket_name('aa'))
self.assertFalse(utils.validate_bucket_name('a+a'))
# ending with dot seems invalid in US standard, too
self.assertFalse(utils.validate_bucket_name('bucket.'))
self.assertFalse(utils.validate_bucket_name('a' * 256))
if __name__ == '__main__':
unittest.main()

View File

@ -122,6 +122,9 @@ def validate_bucket_name(name):
# Bucket names cannot contain two adjacent periods
# Bucket names must end with a letter or a number
return False
elif name.endswith('.'):
# Bucket names must not end with dot
return False
elif re.match("^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.)"
"{3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$",
name):