Exemple #1
0
 def testSaveGzipped(self):
     # Tiny files are not gzipped.
     with self.save_file():
         self.assertEqual(default_storage.meta("foo.txt").get("ContentEncoding"), None)
         self.assertEqual(default_storage.open("foo.txt").read(), b"foo")
         self.assertEqual(requests.get(default_storage.url("foo.txt")).content, b"foo")
     # Large files are gzipped.
     with self.save_file(content=b"foo" * 1000):
         self.assertEqual(default_storage.meta("foo.txt").get("ContentEncoding"), "gzip")
         self.assertEqual(default_storage.open("foo.txt").read(), b"foo" * 1000)
         self.assertEqual(requests.get(default_storage.url("foo.txt")).content, b"foo" * 1000)
 def testSyncMetaWithGzip(self):
     content = b"foo" * 1000
     with self.settings(AWS_S3_GZIP=True):
         with self.save_file(name="foo/bar.txt", content=content):
             meta = default_storage.meta("foo/bar.txt")
             self.assertEqual(meta["CacheControl"], "private,max-age=3600")
             self.assertEqual(meta["ContentType"], "text/plain")
             self.assertEqual(meta["ContentEncoding"], "gzip")
             self.assertEqual(meta.get("ContentDisposition"), None)
             self.assertEqual(meta.get("ContentLanguage"), None)
             self.assertEqual(meta["Metadata"],
                              {"uncompressed_size": str(len(content))})
             self.assertEqual(meta.get("StorageClass"), None)
             self.assertEqual(meta.get("ServerSideEncryption"), None)
             # Store new metadata.
             with self.settings(
                     AWS_S3_BUCKET_AUTH=False,
                     AWS_S3_MAX_AGE_SECONDS=9999,
                     AWS_S3_CONTENT_DISPOSITION=lambda name:
                     "attachment; filename={}".format(name),
                     AWS_S3_CONTENT_LANGUAGE="eo",
                     AWS_S3_METADATA={
                         "foo": "bar",
                         "baz": lambda name: name,
                     },
                     AWS_S3_REDUCED_REDUNDANCY=True,
                     AWS_S3_ENCRYPT_KEY=True,
             ):
                 default_storage.sync_meta()
             # Check metadata changed.
             meta = default_storage.meta("foo/bar.txt")
             self.assertEqual(meta["CacheControl"], "public,max-age=9999")
             self.assertEqual(meta["ContentType"], "text/plain")
             self.assertEqual(meta["ContentEncoding"], "gzip")
             self.assertEqual(meta.get("ContentDisposition"),
                              "attachment; filename=foo/bar.txt")
             self.assertEqual(meta.get("ContentLanguage"), "eo")
             self.assertEqual(
                 meta.get("Metadata"), {
                     "foo": "bar",
                     "baz": "foo/bar.txt",
                     "uncompressed_size": str(len(content)),
                 })
             self.assertEqual(meta["StorageClass"], "REDUCED_REDUNDANCY")
             self.assertEqual(meta["ServerSideEncryption"], "AES256")
             # Check ACL changed by removing the query string.
             url_unauthenticated = urlunsplit(
                 urlsplit(default_storage.url("foo/bar.txt"))[:3] + (
                     "",
                     "",
                 ))
             response = requests.get(url_unauthenticated)
             self.assertEqual(response.status_code, 200)
             self.assertEqual(response.content, b"foo" * 1000)
Exemple #3
0
 def testManagementS3SyncMeta(self):
     with self.save_file():
         # Store new metadata.
         with self.settings(AWS_S3_MAX_AGE_SECONDS=9999):
             call_command("s3_sync_meta", "django.core.files.storage.default_storage", stdout=StringIO())
         # Check metadata changed.
         meta = default_storage.meta("foo.txt")
         self.assertEqual(meta["CacheControl"], "private,max-age=9999")
Exemple #4
0
 def testGzippedSize(self):
     content = "foo" * 4096
     with self.settings(AWS_S3_GZIP=False):
         name = "foo/bar.txt"
         with self.save_file(name=name, content=content):
             meta = default_storage.meta(name)
             self.assertNotEqual(meta.get("ContentEncoding", ""), "gzip")
             self.assertNotIn("uncompressed_size", meta["Metadata"])
             self.assertEqual(default_storage.size(name), len(content))
     with self.settings(AWS_S3_GZIP=True):
         name = "foo/bar.txt.gz"
         with self.save_file(name=name, content=content):
             meta = default_storage.meta(name)
             self.assertEqual(meta["ContentEncoding"], "gzip")
             self.assertIn("uncompressed_size", meta["Metadata"])
             self.assertEqual(meta["Metadata"], {"uncompressed_size": str(len(content))})
             self.assertEqual(default_storage.size(name), len(content))