コード例 #1
0
ファイル: test_swift3.py プロジェクト: jness/python-swift
    def test_object_PUT_headers(self):
        class FakeApp(object):
            def __call__(self, env, start_response):
                self.req = Request(env)
                start_response('200 OK')
                start_response([])

        app = FakeApp()
        local_app = swift3.filter_factory({})(app)
        req = Request.blank('/bucket/object',
                            environ={'REQUEST_METHOD': 'PUT'},
                            headers={
                                'Authorization': 'AWS test:tester:hmac',
                                'X-Amz-Storage-Class': 'REDUCED_REDUNDANCY',
                                'X-Amz-Meta-Something': 'oh hai',
                                'X-Amz-Copy-Source': '/some/source',
                                'Content-MD5': 'ffoHqOWd280dyE1MT4KuoQ=='
                            })
        req.date = datetime.now()
        req.content_type = 'text/plain'
        resp = local_app(req.environ, lambda *args: None)
        self.assertEquals(app.req.headers['ETag'],
                          '7dfa07a8e59ddbcd1dc84d4c4f82aea1')
        self.assertEquals(app.req.headers['X-Object-Meta-Something'], 'oh hai')
        self.assertEquals(app.req.headers['X-Copy-From'], '/some/source')
コード例 #2
0
ファイル: test_swift3.py プロジェクト: jness/python-swift
    def test_bucket_GET_is_truncated(self):
        local_app = swift3.filter_factory({})(FakeAppBucket())
        bucket_name = 'junk'

        req = Request.blank('/%s' % bucket_name,
                            environ={
                                'REQUEST_METHOD': 'GET',
                                'QUERY_STRING': 'max-keys=3'
                            },
                            headers={'Authorization': 'AWS test:tester:hmac'})
        resp = local_app(req.environ, local_app.app.do_start_response)
        dom = xml.dom.minidom.parseString("".join(resp))
        self.assertEquals(
            dom.getElementsByTagName('IsTruncated')[0].childNodes[0].nodeValue,
            'false')

        req = Request.blank('/%s' % bucket_name,
                            environ={
                                'REQUEST_METHOD': 'GET',
                                'QUERY_STRING': 'max-keys=2'
                            },
                            headers={'Authorization': 'AWS test:tester:hmac'})
        resp = local_app(req.environ, local_app.app.do_start_response)
        dom = xml.dom.minidom.parseString("".join(resp))
        self.assertEquals(
            dom.getElementsByTagName('IsTruncated')[0].childNodes[0].nodeValue,
            'true')
コード例 #3
0
ファイル: test_swift3.py プロジェクト: jness/python-swift
 def test_object_acl_GET(self):
     local_app = swift3.filter_factory({})(FakeAppObject())
     req = Request.blank('/bucket/object?acl',
                         environ={'REQUEST_METHOD': 'GET'},
                         headers={'Authorization': 'AWS test:tester:hmac'})
     resp = local_app(req.environ, local_app.app.do_start_response)
     self._check_acl('test:tester', resp)
コード例 #4
0
 def test_object_acl_GET(self):
     local_app = swift3.filter_factory({})(FakeAppObject())
     req = Request.blank('/bucket/object?acl',
                         environ={'REQUEST_METHOD': 'GET'},
                         headers={'Authorization': 'AWS test:tester:hmac'})
     resp = local_app(req.environ, local_app.app.do_start_response)
     self._check_acl('test:tester', resp)
コード例 #5
0
ファイル: test_swift3.py プロジェクト: zuiwufenghua/zft
    def test_bucket_GET_max_keys(self):
        class FakeApp(object):
            def __call__(self, env, start_response):
                self.query_string = env['QUERY_STRING']
                start_response('200 OK', [])
                return '[]'
        fake_app = FakeApp()
        local_app = swift3.filter_factory({})(fake_app)
        bucket_name = 'junk'

        req = Request.blank('/%s' % bucket_name,
                environ={'REQUEST_METHOD': 'GET',
                         'QUERY_STRING': 'max-keys=5'},
                headers={'Authorization': 'AWS test:tester:hmac'})
        resp = local_app(req.environ, lambda *args: None)
        dom = xml.dom.minidom.parseString("".join(resp))
        self.assertEquals(dom.getElementsByTagName('MaxKeys')[0].
                childNodes[0].nodeValue, '5')
        args = dict(cgi.parse_qsl(fake_app.query_string))
        self.assert_(args['limit'] == '6')

        req = Request.blank('/%s' % bucket_name,
                environ={'REQUEST_METHOD': 'GET',
                         'QUERY_STRING': 'max-keys=5000'},
                headers={'Authorization': 'AWS test:tester:hmac'})
        resp = local_app(req.environ, lambda *args: None)
        dom = xml.dom.minidom.parseString("".join(resp))
        self.assertEquals(dom.getElementsByTagName('MaxKeys')[0].
                childNodes[0].nodeValue, '1000')
        args = dict(cgi.parse_qsl(fake_app.query_string))
        self.assertEquals(args['limit'], '1001')
コード例 #6
0
    def test_bucket_GET_max_keys(self):
        class FakeApp(object):
            def __call__(self, env, start_response):
                self.query_string = env["QUERY_STRING"]
                start_response("200 OK", [])
                return "[]"

        fake_app = FakeApp()
        local_app = swift3.filter_factory({})(fake_app)
        bucket_name = "junk"

        req = Request.blank(
            "/%s" % bucket_name,
            environ={"REQUEST_METHOD": "GET", "QUERY_STRING": "max-keys=5"},
            headers={"Authorization": "AWS test:tester:hmac"},
        )
        resp = local_app(req.environ, lambda *args: None)
        dom = xml.dom.minidom.parseString("".join(resp))
        self.assertEquals(dom.getElementsByTagName("MaxKeys")[0].childNodes[0].nodeValue, "5")
        args = dict(cgi.parse_qsl(fake_app.query_string))
        self.assert_(args["limit"] == "6")

        req = Request.blank(
            "/%s" % bucket_name,
            environ={"REQUEST_METHOD": "GET", "QUERY_STRING": "max-keys=5000"},
            headers={"Authorization": "AWS test:tester:hmac"},
        )
        resp = local_app(req.environ, lambda *args: None)
        dom = xml.dom.minidom.parseString("".join(resp))
        self.assertEquals(dom.getElementsByTagName("MaxKeys")[0].childNodes[0].nodeValue, "1000")
        args = dict(cgi.parse_qsl(fake_app.query_string))
        self.assertEquals(args["limit"], "1001")
コード例 #7
0
    def test_bucket_GET(self):
        local_app = swift3.filter_factory({})(FakeAppBucket())
        bucket_name = 'junk'
        req = Request.blank('/%s' % bucket_name,
                            environ={'REQUEST_METHOD': 'GET'},
                            headers={'Authorization': 'AWS test:tester:hmac'})
        resp = local_app(req.environ, local_app.app.do_start_response)
        self.assertEquals(local_app.app.response_args[0].split()[0], '200')

        dom = xml.dom.minidom.parseString("".join(resp))
        self.assertEquals(dom.firstChild.nodeName, 'ListBucketResult')
        name = dom.getElementsByTagName('Name')[0].childNodes[0].nodeValue
        self.assertEquals(name, bucket_name)

        objects = [n for n in dom.getElementsByTagName('Contents')]
        listing = [n for n in objects[0].childNodes if n.nodeName != '#text']

        names = []
        for o in objects:
            if o.childNodes[0].nodeName == 'Key':
                names.append(o.childNodes[0].childNodes[0].nodeValue)
            if o.childNodes[1].nodeName == 'LastModified':
                self.assertTrue(
                    o.childNodes[1].childNodes[0].nodeValue.endswith('Z'))

        self.assertEquals(len(names), len(FakeAppBucket().objects))
        for i in FakeAppBucket().objects:
            self.assertTrue(i[0] in names)
コード例 #8
0
 def test_object_acl_GET(self):
     local_app = swift3.filter_factory({})(FakeAppObject())
     req = Request.blank(
         "/bucket/object?acl", environ={"REQUEST_METHOD": "GET"}, headers={"Authorization": "AWS test:tester:hmac"}
     )
     resp = local_app(req.environ, local_app.app.do_start_response)
     self._check_acl("test:tester", resp)
コード例 #9
0
    def test_bucket_GET(self):
        local_app = swift3.filter_factory({})(FakeAppBucket())
        bucket_name = "junk"
        req = Request.blank(
            "/%s" % bucket_name, environ={"REQUEST_METHOD": "GET"}, headers={"Authorization": "AWS test:tester:hmac"}
        )
        resp = local_app(req.environ, local_app.app.do_start_response)
        self.assertEquals(local_app.app.response_args[0].split()[0], "200")

        dom = xml.dom.minidom.parseString("".join(resp))
        self.assertEquals(dom.firstChild.nodeName, "ListBucketResult")
        name = dom.getElementsByTagName("Name")[0].childNodes[0].nodeValue
        self.assertEquals(name, bucket_name)

        objects = [n for n in dom.getElementsByTagName("Contents")]
        listing = [n for n in objects[0].childNodes if n.nodeName != "#text"]

        names = []
        for o in objects:
            if o.childNodes[0].nodeName == "Key":
                names.append(o.childNodes[0].childNodes[0].nodeValue)
            if o.childNodes[1].nodeName == "LastModified":
                self.assertTrue(o.childNodes[1].childNodes[0].nodeValue.endswith("Z"))

        self.assertEquals(len(names), len(FakeAppBucket().objects))
        for i in FakeAppBucket().objects:
            self.assertTrue(i[0] in names)
コード例 #10
0
ファイル: test_swift3.py プロジェクト: zuiwufenghua/zft
 def test_object_DELETE(self):
     local_app = swift3.filter_factory({})(FakeAppObject(204))
     req = Request.blank('/bucket/object',
                         environ={'REQUEST_METHOD': 'DELETE'},
                         headers={'Authorization': 'AWS test:tester:hmac'})
     resp = local_app(req.environ, local_app.app.do_start_response)
     self.assertEquals(local_app.app.response_args[0].split()[0], '204')
コード例 #11
0
 def _test_method_error(self, cl, method, path, status):
     local_app = swift3.filter_factory({})(cl(status))
     req = Request.blank(path, environ={"REQUEST_METHOD": method}, headers={"Authorization": "AWS test:tester:hmac"})
     resp = local_app(req.environ, start_response)
     dom = xml.dom.minidom.parseString("".join(resp))
     self.assertEquals(dom.firstChild.nodeName, "Error")
     return dom.getElementsByTagName("Code")[0].childNodes[0].nodeValue
コード例 #12
0
    def test_bucket_GET_max_keys(self):
        class FakeApp(object):
            def __call__(self, env, start_response):
                self.query_string = env['QUERY_STRING']
                start_response('200 OK', [])
                return '[]'
        fake_app = FakeApp()
        local_app = swift3.filter_factory({})(fake_app)
        bucket_name = 'junk'

        req = Request.blank('/%s' % bucket_name,
                environ={'REQUEST_METHOD': 'GET',
                         'QUERY_STRING': 'max-keys=5'},
                headers={'Authorization': 'AWS test:tester:hmac'})
        resp = local_app(req.environ, lambda *args: None)
        dom = xml.dom.minidom.parseString("".join(resp))
        self.assertEquals(dom.getElementsByTagName('MaxKeys')[0].
                childNodes[0].nodeValue, '5')
        args = dict(cgi.parse_qsl(fake_app.query_string))
        self.assert_(args['limit'] == '6')

        req = Request.blank('/%s' % bucket_name,
                environ={'REQUEST_METHOD': 'GET',
                         'QUERY_STRING': 'max-keys=5000'},
                headers={'Authorization': 'AWS test:tester:hmac'})
        resp = local_app(req.environ, lambda *args: None)
        dom = xml.dom.minidom.parseString("".join(resp))
        self.assertEquals(dom.getElementsByTagName('MaxKeys')[0].
                childNodes[0].nodeValue, '1000')
        args = dict(cgi.parse_qsl(fake_app.query_string))
        self.assertEquals(args['limit'], '1001')
コード例 #13
0
 def test_object_DELETE(self):
     local_app = swift3.filter_factory({})(FakeAppObject(204))
     req = Request.blank('/bucket/object',
                         environ={'REQUEST_METHOD': 'DELETE'},
                         headers={'Authorization': 'AWS test:tester:hmac'})
     resp = local_app(req.environ, local_app.app.do_start_response)
     self.assertEquals(local_app.app.response_args[0].split()[0], '204')
コード例 #14
0
    def test_object_PUT_headers(self):
        class FakeApp(object):
            def __call__(self, env, start_response):
                self.req = Request(env)
                start_response("200 OK")
                start_response([])

        app = FakeApp()
        local_app = swift3.filter_factory({})(app)
        req = Request.blank(
            "/bucket/object",
            environ={"REQUEST_METHOD": "PUT"},
            headers={
                "Authorization": "AWS test:tester:hmac",
                "X-Amz-Storage-Class": "REDUCED_REDUNDANCY",
                "X-Amz-Meta-Something": "oh hai",
                "X-Amz-Copy-Source": "/some/source",
                "Content-MD5": "ffoHqOWd280dyE1MT4KuoQ==",
            },
        )
        req.date = datetime.now()
        req.content_type = "text/plain"
        resp = local_app(req.environ, lambda *args: None)
        self.assertEquals(app.req.headers["ETag"], "7dfa07a8e59ddbcd1dc84d4c4f82aea1")
        self.assertEquals(app.req.headers["X-Object-Meta-Something"], "oh hai")
        self.assertEquals(app.req.headers["X-Copy-From"], "/some/source")
コード例 #15
0
ファイル: test_swift3.py プロジェクト: zuiwufenghua/zft
 def test_bucket_GET_passthroughs(self):
     class FakeApp(object):
         def __call__(self, env, start_response):
             self.query_string = env['QUERY_STRING']
             start_response('200 OK', [])
             return '[]'
     fake_app = FakeApp()
     local_app = swift3.filter_factory({})(fake_app)
     bucket_name = 'junk'
     req = Request.blank('/%s' % bucket_name,
             environ={'REQUEST_METHOD': 'GET', 'QUERY_STRING':
                      'delimiter=a&marker=b&prefix=c'},
             headers={'Authorization': 'AWS test:tester:hmac'})
     resp = local_app(req.environ, lambda *args: None)
     dom = xml.dom.minidom.parseString("".join(resp))
     self.assertEquals(dom.getElementsByTagName('Prefix')[0].
             childNodes[0].nodeValue, 'c')
     self.assertEquals(dom.getElementsByTagName('Marker')[0].
             childNodes[0].nodeValue, 'b')
     self.assertEquals(dom.getElementsByTagName('Delimiter')[0].
             childNodes[0].nodeValue, 'a')
     args = dict(cgi.parse_qsl(fake_app.query_string))
     self.assertEquals(args['delimiter'], 'a')
     self.assertEquals(args['marker'], 'b')
     self.assertEquals(args['prefix'], 'c')
コード例 #16
0
ファイル: test_swift3.py プロジェクト: zuiwufenghua/zft
    def test_bucket_GET(self):
        local_app = swift3.filter_factory({})(FakeAppBucket())
        bucket_name = 'junk'
        req = Request.blank('/%s' % bucket_name,
                            environ={'REQUEST_METHOD': 'GET'},
                            headers={'Authorization': 'AWS test:tester:hmac'})
        resp = local_app(req.environ, local_app.app.do_start_response)
        self.assertEquals(local_app.app.response_args[0].split()[0], '200')

        dom = xml.dom.minidom.parseString("".join(resp))
        self.assertEquals(dom.firstChild.nodeName, 'ListBucketResult')
        name = dom.getElementsByTagName('Name')[0].childNodes[0].nodeValue
        self.assertEquals(name, bucket_name)

        objects = [n for n in dom.getElementsByTagName('Contents')]
        listing = [n for n in objects[0].childNodes if n.nodeName != '#text']

        names = []
        for o in objects:
            if o.childNodes[0].nodeName == 'Key':
                names.append(o.childNodes[0].childNodes[0].nodeValue)

        self.assertEquals(len(names), len(FakeAppBucket().objects))
        for i in FakeAppBucket().objects:
            self.assertTrue(i[0] in names)
コード例 #17
0
 def test_bucket_GET_passthroughs(self):
     class FakeApp(object):
         def __call__(self, env, start_response):
             self.query_string = env['QUERY_STRING']
             start_response('200 OK', [])
             return '[]'
     fake_app = FakeApp()
     local_app = swift3.filter_factory({})(fake_app)
     bucket_name = 'junk'
     req = Request.blank('/%s' % bucket_name,
             environ={'REQUEST_METHOD': 'GET', 'QUERY_STRING':
                      'delimiter=a&marker=b&prefix=c'},
             headers={'Authorization': 'AWS test:tester:hmac'})
     resp = local_app(req.environ, lambda *args: None)
     dom = xml.dom.minidom.parseString("".join(resp))
     self.assertEquals(dom.getElementsByTagName('Prefix')[0].
             childNodes[0].nodeValue, 'c')
     self.assertEquals(dom.getElementsByTagName('Marker')[0].
             childNodes[0].nodeValue, 'b')
     self.assertEquals(dom.getElementsByTagName('Delimiter')[0].
             childNodes[0].nodeValue, 'a')
     args = dict(cgi.parse_qsl(fake_app.query_string))
     self.assertEquals(args['delimiter'], 'a')
     self.assertEquals(args['marker'], 'b')
     self.assertEquals(args['prefix'], 'c')
コード例 #18
0
 def test_object_DELETE(self):
     local_app = swift3.filter_factory({})(FakeAppObject(204))
     req = Request.blank(
         "/bucket/object", environ={"REQUEST_METHOD": "DELETE"}, headers={"Authorization": "AWS test:tester:hmac"}
     )
     resp = local_app(req.environ, local_app.app.do_start_response)
     self.assertEquals(local_app.app.response_args[0].split()[0], "204")
コード例 #19
0
ファイル: test_swift3.py プロジェクト: zuiwufenghua/zft
 def _test_method_error(self, cl, method, path, status):
     local_app = swift3.filter_factory({})(cl(status))
     req = Request.blank(path,
                         environ={'REQUEST_METHOD': method},
                         headers={'Authorization': 'AWS test:tester:hmac'})
     resp = local_app(req.environ, start_response)
     dom = xml.dom.minidom.parseString("".join(resp))
     self.assertEquals(dom.firstChild.nodeName, 'Error')
     return dom.getElementsByTagName('Code')[0].childNodes[0].nodeValue
コード例 #20
0
 def test_bucket_acl_GET(self):
     local_app = swift3.filter_factory({})(FakeAppBucket())
     bucket_name = "junk"
     req = Request.blank(
         "/%s?acl" % bucket_name,
         environ={"REQUEST_METHOD": "GET"},
         headers={"Authorization": "AWS test:tester:hmac"},
     )
     resp = local_app(req.environ, local_app.app.do_start_response)
     self._check_acl("test:tester", resp)
コード例 #21
0
ファイル: test_swift3.py プロジェクト: Cygnet/swift
    def test_object_GET_Range(self):
        local_app = swift3.filter_factory({})(FakeAppObject())
        req = Request.blank('/bucket/object',
                            environ={'REQUEST_METHOD': 'GET'},
                            headers={'Authorization': 'AWS test:tester:hmac',
                                     'Range': 'bytes=0-3'})
        resp = local_app(req.environ, local_app.app.do_start_response)
        self.assertEquals(local_app.app.response_args[0].split()[0], '206')

        headers = dict(local_app.app.response_args[1])
        self.assertTrue('Content-Range' in  headers)
        self.assertTrue(headers['Content-Range'].startswith('bytes 0-3'))
コード例 #22
0
ファイル: test_swift3.py プロジェクト: double-z/swift
    def test_object_GET_Range(self):
        local_app = swift3.filter_factory({})(FakeAppObject())
        req = Request.blank(
            "/bucket/object",
            environ={"REQUEST_METHOD": "GET"},
            headers={"Authorization": "AWS test:tester:hmac", "Range": "bytes=0-3"},
        )
        resp = local_app(req.environ, local_app.app.do_start_response)
        self.assertEquals(local_app.app.response_args[0].split()[0], "206")

        headers = dict(local_app.app.response_args[1])
        self.assertTrue("Content-Range" in headers)
        self.assertTrue(headers["Content-Range"].startswith("bytes 0-3"))
コード例 #23
0
ファイル: test_swift3.py プロジェクト: zuiwufenghua/zft
    def test_object_PUT(self):
        local_app = swift3.filter_factory({})(FakeAppObject(201))
        req = Request.blank('/bucket/object',
                            environ={'REQUEST_METHOD': 'PUT'},
                            headers={'Authorization': 'AWS test:tester:hmac',
                                     'x-amz-storage-class': 'REDUCED_REDUNDANCY',
                                     'Content-MD5': 'Gyz1NfJ3Mcl0NDZFo5hTKA=='})
        req.date = datetime.now()
        req.content_type = 'text/plain'
        resp = local_app(req.environ, local_app.app.do_start_response)
        self.assertEquals(local_app.app.response_args[0].split()[0], '200')

        headers = dict(local_app.app.response_args[1])
        self.assertEquals(headers['ETag'],
                          "\"%s\"" % local_app.app.response_headers['etag'])
コード例 #24
0
 def test_signed_urls(self):
     class FakeApp(object):
         def __call__(self, env, start_response):
             self.req = Request(env)
             start_response('200 OK')
             start_response([])
     app = FakeApp()
     local_app = swift3.filter_factory({})(app)
     req = Request.blank('/bucket/object?Signature=X&Expires=Y&'
             'AWSAccessKeyId=Z', environ={'REQUEST_METHOD': 'GET'})
     req.date = datetime.now()
     req.content_type = 'text/plain'
     resp = local_app(req.environ, lambda *args: None)
     self.assertEquals(app.req.headers['Authorization'], 'AWS Z:X')
     self.assertEquals(app.req.headers['Date'], 'Y')
コード例 #25
0
    def test_object_PUT(self):
        local_app = swift3.filter_factory({})(FakeAppObject(201))
        req = Request.blank('/bucket/object',
                            environ={'REQUEST_METHOD': 'PUT'},
                            headers={'Authorization': 'AWS test:tester:hmac',
                                     'x-amz-storage-class': 'REDUCED_REDUNDANCY',
                                     'Content-MD5': 'Gyz1NfJ3Mcl0NDZFo5hTKA=='})
        req.date = datetime.now()
        req.content_type = 'text/plain'
        resp = local_app(req.environ, local_app.app.do_start_response)
        self.assertEquals(local_app.app.response_args[0].split()[0], '200')

        headers = dict(local_app.app.response_args[1])
        self.assertEquals(headers['ETag'],
                          "\"%s\"" % local_app.app.response_headers['etag'])
コード例 #26
0
    def test_signed_urls(self):
        class FakeApp(object):
            def __call__(self, env, start_response):
                self.req = Request(env)
                start_response("200 OK")
                start_response([])

        app = FakeApp()
        local_app = swift3.filter_factory({})(app)
        req = Request.blank(
            "/bucket/object?Signature=X&Expires=Y&" "AWSAccessKeyId=Z", environ={"REQUEST_METHOD": "GET"}
        )
        req.date = datetime.now()
        req.content_type = "text/plain"
        resp = local_app(req.environ, lambda *args: None)
        self.assertEquals(app.req.headers["Authorization"], "AWS Z:X")
        self.assertEquals(app.req.headers["Date"], "Y")
コード例 #27
0
    def test_signed_urls(self):
        class FakeApp(object):
            def __call__(self, env, start_response):
                self.req = Request(env)
                start_response('200 OK')
                start_response([])

        app = FakeApp()
        local_app = swift3.filter_factory({})(app)
        req = Request.blank(
            '/bucket/object?Signature=X&Expires=Y&'
            'AWSAccessKeyId=Z',
            environ={'REQUEST_METHOD': 'GET'})
        req.date = datetime.now()
        req.content_type = 'text/plain'
        resp = local_app(req.environ, lambda *args: None)
        self.assertEquals(app.req.headers['Authorization'], 'AWS Z:X')
        self.assertEquals(app.req.headers['Date'], 'Y')
コード例 #28
0
    def test_object_PUT(self):
        local_app = swift3.filter_factory({})(FakeAppObject(201))
        req = Request.blank(
            "/bucket/object",
            environ={"REQUEST_METHOD": "PUT"},
            headers={
                "Authorization": "AWS test:tester:hmac",
                "x-amz-storage-class": "REDUCED_REDUNDANCY",
                "Content-MD5": "Gyz1NfJ3Mcl0NDZFo5hTKA==",
            },
        )
        req.date = datetime.now()
        req.content_type = "text/plain"
        resp = local_app(req.environ, local_app.app.do_start_response)
        self.assertEquals(local_app.app.response_args[0].split()[0], "200")

        headers = dict(local_app.app.response_args[1])
        self.assertEquals(headers["ETag"], '"%s"' % local_app.app.response_headers["etag"])
コード例 #29
0
    def _test_object_GETorHEAD(self, method):
        local_app = swift3.filter_factory({})(FakeAppObject())
        req = Request.blank(
            "/bucket/object", environ={"REQUEST_METHOD": method}, headers={"Authorization": "AWS test:tester:hmac"}
        )
        resp = local_app(req.environ, local_app.app.do_start_response)
        self.assertEquals(local_app.app.response_args[0].split()[0], "200")

        headers = dict(local_app.app.response_args[1])
        for key, val in local_app.app.response_headers.iteritems():
            if key in ("Content-Length", "Content-Type", "Content-Encoding", "etag", "last-modified"):
                self.assertTrue(key in headers)
                self.assertEquals(headers[key], val)

            elif key.startswith("x-object-meta-"):
                self.assertTrue("x-amz-meta-" + key[14:] in headers)
                self.assertEquals(headers["x-amz-meta-" + key[14:]], val)

        if method == "GET":
            self.assertEquals(resp, local_app.app.object_body)
コード例 #30
0
    def test_bucket_GET_is_truncated(self):
        local_app = swift3.filter_factory({})(FakeAppBucket())
        bucket_name = "junk"

        req = Request.blank(
            "/%s" % bucket_name,
            environ={"REQUEST_METHOD": "GET", "QUERY_STRING": "max-keys=3"},
            headers={"Authorization": "AWS test:tester:hmac"},
        )
        resp = local_app(req.environ, local_app.app.do_start_response)
        dom = xml.dom.minidom.parseString("".join(resp))
        self.assertEquals(dom.getElementsByTagName("IsTruncated")[0].childNodes[0].nodeValue, "false")

        req = Request.blank(
            "/%s" % bucket_name,
            environ={"REQUEST_METHOD": "GET", "QUERY_STRING": "max-keys=2"},
            headers={"Authorization": "AWS test:tester:hmac"},
        )
        resp = local_app(req.environ, local_app.app.do_start_response)
        dom = xml.dom.minidom.parseString("".join(resp))
        self.assertEquals(dom.getElementsByTagName("IsTruncated")[0].childNodes[0].nodeValue, "true")
コード例 #31
0
    def test_service_GET(self):
        local_app = swift3.filter_factory({})(FakeAppService())
        req = Request.blank("/", environ={"REQUEST_METHOD": "GET"}, headers={"Authorization": "AWS test:tester:hmac"})
        resp = local_app(req.environ, local_app.app.do_start_response)
        self.assertEquals(local_app.app.response_args[0].split()[0], "200")

        dom = xml.dom.minidom.parseString("".join(resp))
        self.assertEquals(dom.firstChild.nodeName, "ListAllMyBucketsResult")

        buckets = [n for n in dom.getElementsByTagName("Bucket")]
        listing = [n for n in buckets[0].childNodes if n.nodeName != "#text"]
        self.assertEquals(len(listing), 2)

        names = []
        for b in buckets:
            if b.childNodes[0].nodeName == "Name":
                names.append(b.childNodes[0].childNodes[0].nodeValue)

        self.assertEquals(len(names), len(FakeAppService().buckets))
        for i in FakeAppService().buckets:
            self.assertTrue(i[0] in names)
コード例 #32
0
    def test_bucket_GET_is_truncated(self):
        local_app = swift3.filter_factory({})(FakeAppBucket())
        bucket_name = 'junk'

        req = Request.blank('/%s' % bucket_name,
                environ={'REQUEST_METHOD': 'GET',
                         'QUERY_STRING': 'max-keys=3'},
                headers={'Authorization': 'AWS test:tester:hmac'})
        resp = local_app(req.environ, local_app.app.do_start_response)
        dom = xml.dom.minidom.parseString("".join(resp))
        self.assertEquals(dom.getElementsByTagName('IsTruncated')[0].
                childNodes[0].nodeValue, 'false')

        req = Request.blank('/%s' % bucket_name,
                environ={'REQUEST_METHOD': 'GET',
                         'QUERY_STRING': 'max-keys=2'},
                headers={'Authorization': 'AWS test:tester:hmac'})
        resp = local_app(req.environ, local_app.app.do_start_response)
        dom = xml.dom.minidom.parseString("".join(resp))
        self.assertEquals(dom.getElementsByTagName('IsTruncated')[0].
                childNodes[0].nodeValue, 'true')
コード例 #33
0
    def _test_object_GETorHEAD(self, method):
        local_app = swift3.filter_factory({})(FakeAppObject())
        req = Request.blank('/bucket/object',
                            environ={'REQUEST_METHOD': method},
                            headers={'Authorization': 'AWS test:tester:hmac'})
        resp = local_app(req.environ, local_app.app.do_start_response)
        self.assertEquals(local_app.app.response_args[0].split()[0], '200')

        headers = dict(local_app.app.response_args[1])
        for key, val in local_app.app.response_headers.iteritems():
            if key in ('Content-Length', 'Content-Type', 'Content-Encoding',
                       'etag', 'last-modified'):
                self.assertTrue(key in headers)
                self.assertEquals(headers[key], val)

            elif key.startswith('x-object-meta-'):
                self.assertTrue('x-amz-meta-' + key[14:] in headers)
                self.assertEquals(headers['x-amz-meta-' + key[14:]], val)

        if method == 'GET':
            self.assertEquals(resp, local_app.app.object_body)
コード例 #34
0
ファイル: test_swift3.py プロジェクト: zuiwufenghua/zft
    def _test_object_GETorHEAD(self, method):
        local_app = swift3.filter_factory({})(FakeAppObject())
        req = Request.blank('/bucket/object',
                            environ={'REQUEST_METHOD': method},
                            headers={'Authorization': 'AWS test:tester:hmac'})
        resp = local_app(req.environ, local_app.app.do_start_response)
        self.assertEquals(local_app.app.response_args[0].split()[0], '200')

        headers = dict(local_app.app.response_args[1])
        for key, val in local_app.app.response_headers.iteritems():
            if key in ('Content-Length', 'Content-Type', 'Content-Encoding',
                       'etag', 'last-modified'):
                self.assertTrue(key in headers)
                self.assertEquals(headers[key], val)

            elif key.startswith('x-object-meta-'):
                self.assertTrue('x-amz-meta-' + key[14:] in headers)
                self.assertEquals(headers['x-amz-meta-' + key[14:]], val)

        if method == 'GET':
            self.assertEquals(resp, local_app.app.object_body)
コード例 #35
0
 def test_object_PUT_headers(self):
     class FakeApp(object):
         def __call__(self, env, start_response):
             self.req = Request(env)
             start_response('200 OK')
             start_response([])
     app = FakeApp()
     local_app = swift3.filter_factory({})(app)
     req = Request.blank('/bucket/object',
                     environ={'REQUEST_METHOD': 'PUT'},
                     headers={'Authorization': 'AWS test:tester:hmac',
                              'X-Amz-Storage-Class': 'REDUCED_REDUNDANCY',
                              'X-Amz-Meta-Something': 'oh hai',
                              'X-Amz-Copy-Source': '/some/source',
                              'Content-MD5': 'ffoHqOWd280dyE1MT4KuoQ=='})
     req.date = datetime.now()
     req.content_type = 'text/plain'
     resp = local_app(req.environ, lambda *args: None)
     self.assertEquals(app.req.headers['ETag'],
                 '7dfa07a8e59ddbcd1dc84d4c4f82aea1')
     self.assertEquals(app.req.headers['X-Object-Meta-Something'], 'oh hai')
     self.assertEquals(app.req.headers['X-Copy-From'], '/some/source')
コード例 #36
0
ファイル: test_swift3.py プロジェクト: zuiwufenghua/zft
    def test_service_GET(self):
        local_app = swift3.filter_factory({})(FakeAppService())
        req = Request.blank('/',
                            environ={'REQUEST_METHOD': 'GET'},
                            headers={'Authorization': 'AWS test:tester:hmac'})
        resp = local_app(req.environ, local_app.app.do_start_response)
        self.assertEquals(local_app.app.response_args[0].split()[0], '200')

        dom = xml.dom.minidom.parseString("".join(resp))
        self.assertEquals(dom.firstChild.nodeName, 'ListAllMyBucketsResult')

        buckets = [n for n in dom.getElementsByTagName('Bucket')]
        listing = [n for n in buckets[0].childNodes if n.nodeName != '#text']
        self.assertEquals(len(listing), 2)

        names = []
        for b in buckets:
            if b.childNodes[0].nodeName == 'Name':
                names.append(b.childNodes[0].childNodes[0].nodeValue)

        self.assertEquals(len(names), len(FakeAppService().buckets))
        for i in FakeAppService().buckets:
            self.assertTrue(i[0] in names)
コード例 #37
0
    def test_bucket_GET_passthroughs(self):
        class FakeApp(object):
            def __call__(self, env, start_response):
                self.query_string = env["QUERY_STRING"]
                start_response("200 OK", [])
                return "[]"

        fake_app = FakeApp()
        local_app = swift3.filter_factory({})(fake_app)
        bucket_name = "junk"
        req = Request.blank(
            "/%s" % bucket_name,
            environ={"REQUEST_METHOD": "GET", "QUERY_STRING": "delimiter=a&marker=b&prefix=c"},
            headers={"Authorization": "AWS test:tester:hmac"},
        )
        resp = local_app(req.environ, lambda *args: None)
        dom = xml.dom.minidom.parseString("".join(resp))
        self.assertEquals(dom.getElementsByTagName("Prefix")[0].childNodes[0].nodeValue, "c")
        self.assertEquals(dom.getElementsByTagName("Marker")[0].childNodes[0].nodeValue, "b")
        self.assertEquals(dom.getElementsByTagName("Delimiter")[0].childNodes[0].nodeValue, "a")
        args = dict(cgi.parse_qsl(fake_app.query_string))
        self.assertEquals(args["delimiter"], "a")
        self.assertEquals(args["marker"], "b")
        self.assertEquals(args["prefix"], "c")
コード例 #38
0
ファイル: test_swift3.py プロジェクト: septimius/swift
 def setUp(self):
     if skip:
         raise SkipTest
     self.app = swift3.filter_factory({})(FakeApp())
コード例 #39
0
ファイル: test_swift3.py プロジェクト: zuiwufenghua/zft
 def setUp(self):
     self.app = swift3.filter_factory({})(FakeApp())
コード例 #40
0
ファイル: test_swift3.py プロジェクト: pombredanne/swift
 def setUp(self):
     if skip:
         raise SkipTest
     self.app = swift3.filter_factory({})(FakeApp())
コード例 #41
0
 def setUp(self):
     self.app = swift3.filter_factory({})(FakeApp())