Kill MultiRemoteStaticDirect... nobody was really using it anyway
[mediagoblin.git] / mediagoblin / tests / test_workbench.py
index 83e90c3dcc5bb1c1062cdf42cc894ebcaad9382d..04a74653d5e9230f4a3febce0f40d512ec051ee6 100644 (file)
@@ -1,5 +1,5 @@
 # GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# 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
@@ -17,9 +17,9 @@
 import os
 import tempfile
 
-from nose.tools import assert_raises
 
-from mediagoblin.process_media import workbench
+from mediagoblin import workbench
+from mediagoblin.tests.test_storage import get_tmp_filestorage
 
 
 class TestWorkbench(object):
@@ -29,26 +29,65 @@ class TestWorkbench(object):
 
     def test_create_workbench(self):
         workbench = self.workbench_manager.create_workbench()
-        assert os.path.isdir(workbench)
-        assert workbench.startswith(self.workbench_manager.base_workbench_dir)
+        assert os.path.isdir(workbench.dir)
+        assert workbench.dir.startswith(self.workbench_manager.base_workbench_dir)
+
+    def test_joinpath(self):
+        this_workbench = self.workbench_manager.create_workbench()
+        tmpname = this_workbench.joinpath('temp.txt')
+        assert tmpname == os.path.join(this_workbench.dir, 'temp.txt')
+        this_workbench.destroy_self()
 
     def test_destroy_workbench(self):
         # kill a workbench
         this_workbench = self.workbench_manager.create_workbench()
-        tmpfile = file(os.path.join(this_workbench, 'temp.txt'), 'w')
+        tmpfile_name = this_workbench.joinpath('temp.txt')
+        tmpfile = file(tmpfile_name, 'w')
         with tmpfile:
             tmpfile.write('lollerskates')
 
-        assert os.path.exists(os.path.join(this_workbench, 'temp.txt'))
+        assert os.path.exists(tmpfile_name)
+
+        wb_dir = this_workbench.dir
+        this_workbench.destroy_self()
+        assert not os.path.exists(tmpfile_name)
+        assert not os.path.exists(wb_dir)
+
+    def test_localized_file(self):
+        tmpdir, this_storage = get_tmp_filestorage()
+        this_workbench = self.workbench_manager.create_workbench()
+        
+        # Write a brand new file
+        filepath = ['dir1', 'dir2', 'ourfile.txt']
+
+        with this_storage.get_file(filepath, 'w') as our_file:
+            our_file.write('Our file')
+
+        # with a local file storage
+        filename = this_workbench.localized_file(this_storage, filepath)
+        assert filename == os.path.join(
+            tmpdir, 'dir1/dir2/ourfile.txt')
+
+        # with a fake remote file storage
+        tmpdir, this_storage = get_tmp_filestorage(fake_remote=True)
 
-        self.workbench_manager.destroy_workbench(this_workbench)
-        assert not os.path.exists(os.path.join(this_workbench, 'temp.txt'))
-        assert not os.path.exists(this_workbench)
+        # ... write a brand new file, again ;)
+        with this_storage.get_file(filepath, 'w') as our_file:
+            our_file.write('Our file')
 
-        # make sure we can't kill other stuff though
-        dont_kill_this = tempfile.mkdtemp()
+        filename = this_workbench.localized_file(this_storage, filepath)
+        assert filename == os.path.join(
+            this_workbench.dir, 'ourfile.txt')
+        
+        # fake remote file storage, filename_if_copying set
+        filename = this_workbench.localized_file(
+            this_storage, filepath, 'thisfile')
+        assert filename == os.path.join(
+            this_workbench.dir, 'thisfile.txt')
 
-        assert_raises(
-            workbench.WorkbenchOutsideScope,
-            self.workbench_manager.destroy_workbench,
-            dont_kill_this)
+        # fake remote file storage, filename_if_copying set,
+        # keep_extension_if_copying set to false
+        filename = this_workbench.localized_file(
+            this_storage, filepath, 'thisfile.text', False)
+        assert filename == os.path.join(
+            this_workbench.dir, 'thisfile.text')