diff options
| author | Luis Pabon <lpabon@redhat.com> | 2013-11-26 20:21:10 -0500 | 
|---|---|---|
| committer | Luis Pabon <lpabon@redhat.com> | 2013-12-05 04:50:38 -0800 | 
| commit | b36fe03702e76294d530d405ca61f45a7a382057 (patch) | |
| tree | 4ccbd1199ef5ca6a81c8adf73c7b7f944f7ef2bd /test/unit/common | |
| parent | 0458016906c1cc0ce3e7b17e704d9da8a85aaec1 (diff) | |
Return BadRequest on X-Delete-At/After headers
Gluster-swift does not support X-Delete-After or X-Delete-At
headers.  The code needs to inform the caller with a 400-BadRequest
if they use these headers.
Change-Id: Ic9d3a1646c0d26bb0204245efce4501f7479fee6
Signed-off-by: Luis Pabon <lpabon@redhat.com>
Reviewed-on: http://review.gluster.org/6364
Reviewed-by: Chetan Risbud <crisbud@redhat.com>
Diffstat (limited to 'test/unit/common')
| -rw-r--r-- | test/unit/common/test_constraints.py | 59 | 
1 files changed, 56 insertions, 3 deletions
diff --git a/test/unit/common/test_constraints.py b/test/unit/common/test_constraints.py index 7139094..180721c 100644 --- a/test/unit/common/test_constraints.py +++ b/test/unit/common/test_constraints.py @@ -16,7 +16,7 @@  import unittest  import swift.common.constraints  from nose import SkipTest -from mock import patch +from mock import Mock, patch  from gluster.swift.common import constraints as cnt @@ -75,12 +75,65 @@ class TestConstraints(unittest.TestCase):          self.assertTrue(cnt.validate_obj_name_component('..'))          self.assertTrue(cnt.validate_obj_name_component('')) +    def test_validate_headers(self): +        req = Mock() +        req.headers = [] +        self.assertEqual(cnt.validate_headers(req), '') +        req.headers = ['x-some-header'] +        self.assertEqual(cnt.validate_headers(req), '') +        req.headers = ['x-delete-at', 'x-some-header'] +        self.assertNotEqual(cnt.validate_headers(req), '') +        req.headers = ['x-delete-after', 'x-some-header'] +        self.assertNotEqual(cnt.validate_headers(req), '') +        req.headers = ['x-delete-at', 'x-delete-after', 'x-some-header'] +        self.assertNotEqual(cnt.validate_headers(req), '') + +    def test_validate_headers_ignoring_config_set(self): +        with patch('gluster.swift.common.constraints.' +                   'Glusterfs._ignore_unsupported_headers', True): +            req = Mock() +            req.headers = [] +            self.assertEqual(cnt.validate_headers(req), '') +            req.headers = ['x-some-header'] +            self.assertEqual(cnt.validate_headers(req), '') +            req.headers = ['x-delete-at', 'x-some-header'] +            self.assertEqual(cnt.validate_headers(req), '') +            req.headers = ['x-delete-after', 'x-some-header'] +            self.assertEqual(cnt.validate_headers(req), '') +            req.headers = ['x-delete-at', 'x-delete-after', 'x-some-header'] +            self.assertEqual(cnt.validate_headers(req), '') + +    def test_gluster_check_metadata(self): +        mock_check_metadata = Mock() +        with patch('gluster.swift.common.constraints.__check_metadata', +                   mock_check_metadata): +            req = Mock() +            req.headers = [] +            cnt.gluster_check_metadata(req, 'object') +            self.assertTrue(1, mock_check_metadata.call_count) +            cnt.gluster_check_metadata(req, 'object', POST=False) +            self.assertTrue(1, mock_check_metadata.call_count) +            req.headers = ['x-some-header'] +            self.assertEqual(cnt.gluster_check_metadata(req, 'object', POST=False), None) +            req.headers = ['x-delete-at', 'x-some-header'] +            self.assertNotEqual(cnt.gluster_check_metadata(req, 'object', POST=False), None) +            req.headers = ['x-delete-after', 'x-some-header'] +            self.assertNotEqual(cnt.gluster_check_metadata(req, 'object', POST=False), None) +            req.headers = ['x-delete-at', 'x-delete-after', 'x-some-header'] +            self.assertNotEqual(cnt.gluster_check_metadata(req, 'object', POST=False), None) +      def test_gluster_check_object_creation(self):          with patch('gluster.swift.common.constraints.__check_object_creation',                     mock_check_object_creation): -            self.assertFalse(cnt.gluster_check_object_creation(None, 'dir/z')) +            req = Mock() +            req.headers = [] +            self.assertFalse(cnt.gluster_check_object_creation(req, 'dir/z'))      def test_gluster_check_object_creation_err(self):          with patch('gluster.swift.common.constraints.__check_object_creation',                     mock_check_object_creation): -            self.assertTrue(cnt.gluster_check_object_creation(None, 'dir/.')) +            req = Mock() +            req.headers = [] +            self.assertTrue(cnt.gluster_check_object_creation(req, 'dir/.')) +            req.headers = ['x-delete-at'] +            self.assertTrue(cnt.gluster_check_object_creation(req, 'dir/z'))  | 
