From 56dcb814a8186c51eef60efe9b2ad30c02e1cd92 Mon Sep 17 00:00:00 2001 From: Brian Warner Date: Mon, 16 Jul 2007 12:01:19 -0700 Subject: [PATCH] webish: test error cases more thoroughly by looking inside the response text --- src/allmydata/test/test_web.py | 9 ++++++--- src/allmydata/webish.py | 9 ++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/allmydata/test/test_web.py b/src/allmydata/test/test_web.py index e31f8efe..d8914b0f 100644 --- a/src/allmydata/test/test_web.py +++ b/src/allmydata/test/test_web.py @@ -387,7 +387,8 @@ class Web(unittest.TestCase): d = self.PUT("/vdrive/global/foo/blockingfile/new.txt", self.NEWFILE_CONTENTS) d.addBoth(self.shouldFail, error.Error, "PUT_NEWFILEURL_blocked", - "403 Forbidden") + "400 Bad Request", + "cannot create directory because there is a file in the way") return d def test_DELETE_FILEURL(self): # YES @@ -444,7 +445,8 @@ class Web(unittest.TestCase): d = self.GET("/vdrive/global/foo/bar.txt?t=download&localfile=%s" % localfile) d.addBoth(self.shouldFail, error.Error, "localfile non-local", - "403 Forbidden") + "403 Forbidden", + "localfile= or localdir= requires a local connection") def _check(res): self.failIf(os.path.exists(localfile)) d.addCallback(_check) @@ -460,7 +462,8 @@ class Web(unittest.TestCase): d = self.GET("/vdrive/global/foo/bar.txt?t=download&localfile=%s" % localfile) d.addBoth(self.shouldFail, error.Error, "localfile non-absolute", - "403 Forbidden") + "403 Forbidden", + "localfile= or localdir= requires an absolute path") def _check(res): self.failIf(os.path.exists(localfile)) d.addCallback(_check) diff --git a/src/allmydata/webish.py b/src/allmydata/webish.py index 6ec7a5e8..eba44991 100644 --- a/src/allmydata/webish.py +++ b/src/allmydata/webish.py @@ -626,15 +626,18 @@ class PUTHandler(rend.Page): d.addCallback(self._upload_file, req.content, name) def _check_blocking(f): f.trap(BlockingFileError) - req.setResponseCode(http.FORBIDDEN) + req.setResponseCode(http.BAD_REQUEST) req.setHeader("content-type", "text/plain") - return str(f) + return str(f.value) d.addErrback(_check_blocking) return d def _get_or_create_directories(self, node, path): if not IDirectoryNode.providedBy(node): - raise BlockingFileError + # unfortunately it is too late to provide the name of the + # blocking directory in the error message. + raise BlockingFileError("cannot create directory because there " + "is a file in the way") if not path: return defer.succeed(node) d = node.get(path[0]) -- 2.45.2