Add tests for new PUT behavior
authorkevan <kevan@isnotajoke.com>
Mon, 20 Jul 2009 03:46:32 +0000 (20:46 -0700)
committerkevan <kevan@isnotajoke.com>
Mon, 20 Jul 2009 03:46:32 +0000 (20:46 -0700)
src/allmydata/test/test_web.py

index 23de764d70c9e0bf52b28a6ed5b178cc0d6672f3..bc9005e0498635a0a8894aa21e587e9c70b126e9 100644 (file)
@@ -702,6 +702,26 @@ class Web(WebMixin, WebErrorMixin, testutil.StallMixin, unittest.TestCase):
         d.addBoth(self.should404, "test_GET_FILEURL_missing")
         return d
 
+    def test_PUT_overwrite_only_files(self):
+        # create a directory, put a file in that directory.
+        contents, n, uri = self.makefile(8)
+        d = self.PUT(self.public_url + "/foo/dir?t=mkdir", "")
+        d.addCallback(lambda res:
+            self.PUT(self.public_url + "/foo/dir/file1.txt",
+                     self.NEWFILE_CONTENTS))
+        # try to overwrite the file with replace=only-files
+        # (this should work)
+        d.addCallback(lambda res:
+            self.PUT(self.public_url + "/foo/dir/file1.txt?t=uri&replace=only-files",
+                     uri))
+        d.addCallback(lambda res:
+            self.shouldFail2(error.Error, "PUT_bad_t", "409 Conflict",
+                 "There was already a child by that name, and you asked me "
+                 "to not replace it",
+                 self.PUT, self.public_url + "/foo/dir?t=uri&replace=only-files",
+                 uri))
+        return d
+
     def test_PUT_NEWFILEURL(self):
         d = self.PUT(self.public_url + "/foo/new.txt", self.NEWFILE_CONTENTS)
         # TODO: we lose the response code, so we can't check this