class HTTP(twisted.web2.dav.test.util.TestCase): """ HTTP Utilities """ def test_statusForFailure(self): def check(exception, result): try: raise exception except Exception, e: failure = Failure() status = statusForFailure(failure) self.failUnless( status == result, "Failure %r (%s) generated incorrect status code: %s != %s" % (failure, failure.value, status, result) ) else: self.fail("We shouldn't be here.") # Handle known errno cases in either IOError or OSError exceptions for ex_class in (IOError, OSError): for exception, result in ( (ex_class(errno.EACCES, "Permission denied" ), responsecode.FORBIDDEN), (ex_class(errno.EPERM , "Permission denied" ), responsecode.FORBIDDEN), (ex_class(errno.ENOSPC, "No space available"), responsecode.INSUFFICIENT_STORAGE_SPACE), (ex_class(errno.ENOENT, "No such file" ), responsecode.NOT_FOUND), ): check(exception, result) # Handle HTTP errors for code in responsecode.RESPONSES: check(HTTPError(code), code) check(HTTPError(ErrorResponse(code, ("http://twistedmatrix.com/", "bar"))), code) # Handle known exception classes for exception, result in ( (NotImplementedError("Duh..."), responsecode.NOT_IMPLEMENTED), ): check(exception, result)