diff --git a/tests/test_file.py b/tests/test_file.py
index 083d75b75292e5bc1c8f034e429c49fe7b01f2d4..b965d20f652a9755dcc6f4127bc006a2d96aac54 100644
--- a/tests/test_file.py
+++ b/tests/test_file.py
@@ -73,6 +73,21 @@ def teardown():
     except Exception as e:
         print(e)
 
+    # remove directories
+    body = get_connection().retrieve(
+        entity_uri_segments=[
+            "Entity"],
+        query_dict={"query": "FIND ENTITY WITH ID>99"},
+        reconnect=True).read()
+    xml = etree.fromstring(body)
+    delete_ids = []
+    for d in xml.xpath('/Response/Directory'):
+        delete_ids.append(d.get("id"))
+    get_connection().delete(
+        entity_uri_segments=[
+            "Entity", "&".join(delete_ids)],
+        reconnect=True)
+
 
 def test_file_with_space():
     file_ = models.File(name="TestFile",
@@ -700,7 +715,6 @@ def test_insert_files_in_dir_regex():
             pass
 
 
-@mark.xfail(reason="refactoring filesystem")
 def test_thumbnails():
     file_ = models.File(name="TestFile",
                         description="Testfile Desc",
@@ -717,3 +731,86 @@ def test_thumbnails():
     xml = etree.fromstring(body)
     assert xml.xpath('/Response/dir/file')[0].get(
         "thumbnail")[-41:] == "/Thumbnails/testfiles/thumbnails_test.dat"
+
+
+def test_auto_create_parent_dirs():
+    file_ = models.File(name="TestFile",
+                        path="A/B/C/test.dat",
+                        file="test.dat")
+    file_.set_flag("autoCreateDirs", "true")
+    file_.insert()
+
+
+    body = get_connection().retrieve(
+        entity_uri_segments=[
+            "FileSystem",
+            ""],
+        reconnect=True).read()
+    xml = etree.fromstring(body)
+    assert len(xml.xpath('/Response/dir')) == 1
+    root = xml.xpath('/Response/dir')[0]
+    assert root.get("name") == "/"
+    assert root.get("path") == ""
+    assert root.get("url")[-12:] == "/FileSystem/"
+
+    assert len(root.xpath('dir')) == 1
+    assert len(root.xpath('file')) == 0
+
+    dir_a = root.xpath('dir')[0]
+    assert dir_a.get("name") == "A/"
+    assert dir_a.get("url")[-14:] == "/FileSystem/A/"
+
+
+    body = get_connection().retrieve(
+        entity_uri_segments=[
+            "FileSystem",
+            "A", ""],
+        reconnect=True).read()
+    xml = etree.fromstring(body)
+    assert len(xml.xpath('/Response/dir')) == 1
+    dir_a = xml.xpath('/Response/dir')[0]
+
+    assert dir_a.get("name") == "A/"
+    assert dir_a.get("path") == "A"
+    assert dir_a.get("url")[-14:] == "/FileSystem/A/"
+
+    assert len(dir_a.xpath('dir')) == 1
+    assert len(dir_a.xpath('file')) == 0
+
+    dir_b = dir_a.xpath('dir')[0]
+    assert dir_b.get("name") == "B/"
+    assert dir_b.get("url")[-16:] == "/FileSystem/A/B/"
+
+
+    body = get_connection().retrieve(
+        entity_uri_segments=[
+            "FileSystem",
+            "A", "B", ""],
+        reconnect=True).read()
+    xml = etree.fromstring(body)
+    assert len(xml.xpath('/Response/dir')) == 1
+    dir_b = xml.xpath('/Response/dir')[0]
+
+    assert len(dir_b.xpath('dir')) == 1
+    assert len(dir_b.xpath('file')) == 0
+
+    dir_c = dir_b.xpath('dir')[0]
+    assert dir_c.get("name") == "C/"
+    assert dir_c.get("url")[-18:] == "/FileSystem/A/B/C/"
+
+
+    body = get_connection().retrieve(
+        entity_uri_segments=[
+            "FileSystem",
+            "A", "B", "C", ""],
+        reconnect=True).read()
+    xml = etree.fromstring(body)
+    assert len(xml.xpath('/Response/dir')) == 1
+    dir_c = xml.xpath('/Response/dir')[0]
+
+    assert len(dir_c.xpath('dir')) == 0
+    assert len(dir_c.xpath('file')) == 1
+
+    file_1 = dir_c.xpath("file")[0]
+    assert file_1.get("name") == "test.dat"
+    assert file_1.get("url")[-26:] == "/FileSystem/A/B/C/test.dat"
diff --git a/tests/test_misc.py b/tests/test_misc.py
index 9e5514a5604a78774b92838fa15b4d85be1eb7bc..0da3bffd7b48cd7840ee106954489befe210eb15 100644
--- a/tests/test_misc.py
+++ b/tests/test_misc.py
@@ -30,7 +30,6 @@ from nose.tools import (assert_equal, assert_is_not_none,  # @UnresolvedImport
                         assert_not_equal, assert_true, nottest,
                         with_setup)
 
-from pytest import mark
 import caosdb as db
 from caosdb import (Container, Info, Property, Record, RecordType,
                     execute_query)
@@ -44,7 +43,6 @@ def setup():
         print(e)
 
 
-@mark.xfail(reason="refactoring filesystem")
 @with_setup(setup=setup, teardown=setup)
 def test_file_system_returns_ids():
     upload_file = open("test.dat", "w")