浏览代码

Refactor object store tests

Nuwan Goonasekera 9 年之前
父节点
当前提交
7e3dbb9f73
共有 1 个文件被更改,包括 34 次插入12 次删除
  1. 34 12
      test/test_object_store_service.py

+ 34 - 12
test/test_object_store_service.py

@@ -3,6 +3,8 @@ from io import BytesIO
 import uuid
 import urllib
 import os
+import requests
+import tempfile
 
 from cloudbridge.cloud.interfaces.resources import BucketObject
 
@@ -158,9 +160,9 @@ class CloudObjectStoreServiceTestCase(ProviderTestBase):
         with helpers.cleanup_action(lambda: test_bucket.delete()):
             obj_name = "hello_upload_download.txt"
             obj = test_bucket.create_object(obj_name)
-            content = "Hello World. Here's some content."
 
             with helpers.cleanup_action(lambda: obj.delete()):
+                content = b"Hello World. Here's some content."
                 # TODO: Upload and download methods accept different parameter
                 # types. Need to make this consistent - possibly provider
                 # multiple methods like upload_from_file, from_stream etc.
@@ -172,22 +174,42 @@ class CloudObjectStoreServiceTestCase(ProviderTestBase):
                 for data in obj.iter_content():
                     target_stream2.write(data)
                 self.assertEqual(target_stream2.getvalue(), content)
+
+
+    @helpers.skipIfNoService(['object_store'])
+    def test_generate_url(self):
+        name = "cbtestbucketobjs-{0}".format(uuid.uuid4())
+        test_bucket = self.provider.object_store.create(name)
+
+        with helpers.cleanup_action(lambda: test_bucket.delete()):
+            obj_name = "hello_upload_download.txt"
+            obj = test_bucket.create_object(obj_name)
+
+            with helpers.cleanup_action(lambda: obj.delete()):
+                content = b"Hello World. Generate a url."
+                obj.upload(content)
+                target_stream = BytesIO()
+                obj.save_content(target_stream)
+
                 url = obj.generate_url(100)
-                urllib.urlretrieve(url, "Downloaded_" + obj.name)
-                with open("Downloaded_" + obj.name) as tmpFile:
-                    for line in tmpFile:
-                        self.assertEqual(line, content)
-                os.remove("Downloaded_" + obj.name)
+                self.assertEqual(requests.get(url).content, content)
+
+    @helpers.skipIfNoService(['object_store'])
+    def test_upload_download_bucket_content_from_file(self):
+        name = "cbtestbucketobjs-{0}".format(uuid.uuid4())
+        test_bucket = self.provider.object_store.create(name)
 
+        with helpers.cleanup_action(lambda: test_bucket.delete()):
+            obj_name = "hello_upload_download.txt"
             obj = test_bucket.create_object(obj_name)
-            with helpers.cleanup_action(lambda: obj.delete):
-                with open("hello_upload_download.txt", "w+") as tmpFile:
+
+            with helpers.cleanup_action(lambda: obj.delete()):
+                content = b"Hello World. Upload from file."
+                with tempfile.NamedTemporaryFile() as tmpFile:
                     tmpFile.write(content)
+                    tmpFile.flush()
+
                     obj.upload_from_file(tmpFile.name)
                     target_stream = BytesIO()
                     obj.save_content(target_stream)
                     self.assertEqual(target_stream.getvalue(), content)
-                    target_stream2 = BytesIO()
-                    for data in obj.iter_content():
-                        target_stream2.write(data)
-                    self.assertEqual(target_stream2.getvalue(), content)