Merge remote-tracking branch 'refs/remotes/brett/bug270-lazycelery-script'
[mediagoblin.git] / mediagoblin / tests / test_storage.py
index 9c96f6caa7a76e382af4f621ebdf32ee65fe8d1a..6fc2e57c8119bf252b66b3b97b4eebf4e267c7c6 100644 (file)
@@ -1,5 +1,5 @@
 # GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 MediaGoblin contributors.  See AUTHORS.
+# Copyright (C) 2011, 2012 MediaGoblin contributors.  See AUTHORS.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU Affero General Public License as published by
@@ -52,11 +52,15 @@ class FakeStorageSystem():
         self.foobie = foobie
         self.blech = blech
 
-class FakeRemoteStorage(storage.BasicFileStorage):
+class FakeRemoteStorage(storage.filestorage.BasicFileStorage):
     # Theoretically despite this, all the methods should work but it
     # should force copying to the workbench
     local_storage = False
 
+    def copy_local_to_storage(self, *args, **kwargs):
+        return storage.StorageInterface.copy_local_to_storage(
+            self, *args, **kwargs)
+
 
 def test_storage_system_from_config():
     this_storage = storage.storage_system_from_config(
@@ -66,7 +70,7 @@ def test_storage_system_from_config():
          'garbage_arg': 'trash'})
     assert this_storage.base_url == 'http://example.org/moodia/'
     assert this_storage.base_dir == '/tmp/'
-    assert this_storage.__class__ is storage.BasicFileStorage
+    assert this_storage.__class__ is storage.filestorage.BasicFileStorage
 
     this_storage = storage.storage_system_from_config(
         {'foobie': 'eiboof',
@@ -88,7 +92,7 @@ def get_tmp_filestorage(mount_url=None, fake_remote=False):
     if fake_remote:
         this_storage = FakeRemoteStorage(tmpdir, mount_url)
     else:
-        this_storage = storage.BasicFileStorage(tmpdir, mount_url)
+        this_storage = storage.filestorage.BasicFileStorage(tmpdir, mount_url)
     return tmpdir, this_storage
 
 
@@ -252,3 +256,26 @@ def test_basic_storage_copy_locally():
     this_storage.copy_locally(filepath, new_file_dest)
     
     assert file(new_file_dest).read() == 'Testing this file'
+
+
+def _test_copy_local_to_storage_works(tmpdir, this_storage):
+    local_filename = tempfile.mktemp()
+    with file(local_filename, 'w') as tmpfile:
+        tmpfile.write('haha')
+
+    this_storage.copy_local_to_storage(
+        local_filename, ['dir1', 'dir2', 'copiedto.txt'])
+
+    assert file(
+        os.path.join(tmpdir, 'dir1/dir2/copiedto.txt'),
+        'r').read() == 'haha'
+
+
+def test_basic_storage_copy_local_to_storage():
+    tmpdir, this_storage = get_tmp_filestorage()
+    _test_copy_local_to_storage_works(tmpdir, this_storage)
+
+
+def test_general_storage_copy_local_to_storage():
+    tmpdir, this_storage = get_tmp_filestorage(fake_remote=True)
+    _test_copy_local_to_storage_works(tmpdir, this_storage)