Пример #1
0
 def testGetHtAccess(self):
     os.environ['REQUEST_METHOD'] = 'GET'
     os.environ['QUERY_STRING'] = 'path=/.htaccess'
     sys.stdin = StringIO("")
     (headers, body) = generic.GenericMain()
     self.assertEqual(headers['Status'], "403 Forbidden")
     self.assertEqual(headers['Content-Type'], "text/plain")
Пример #2
0
 def testInvalidRangeUnit(self):
     os.environ['REQUEST_METHOD'] = 'GET'
     os.environ['QUERY_STRING'] = 'path=/'
     os.environ['HTTP_RANGE'] = 'updated=3-7,9-123'
     (headers, body) = generic.GenericMain()
     self.assertEqual(headers['Status'], "500 Internal Server Error")
     self.assertFalse(headers.has_key('Vary'))
Пример #3
0
 def testGet(self):
     os.environ['REQUEST_METHOD'] = 'GET'
     os.environ['QUERY_STRING'] = 'path=/3.txt'
     sys.stdin = StringIO("")
     (headers, body) = generic.GenericMain()
     self.assertEqual(headers['Status'], "200 Ok")
     self.assertEqual(headers['Content-Type'], "text/plain")
     self.assertEqual(body.read(), "Hello World\n")
Пример #4
0
 def testDeleteNonExistent(self):
     os.environ['REQUEST_METHOD'] = 'DELETE'
     os.environ['QUERY_STRING'] = 'path=//fred.txt'
     sys.stdin = StringIO("Hi Planet!")
     fullpath = os.path.join(generic.datadir, '.htaccess')
     self.assert_(os.path.exists(fullpath))
     (headers, body) = generic.GenericMain()
     self.assertEqual(headers['Status'], "403 Forbidden")
     self.assert_(os.path.exists(fullpath))
Пример #5
0
 def testDelete(self):
     os.environ['REQUEST_METHOD'] = 'DELETE'
     os.environ['QUERY_STRING'] = 'path=/2.txt'
     sys.stdin = StringIO("Hi Planet!")
     fullpath = os.path.join(generic.datadir, '2.txt')
     self.assert_(os.path.exists(fullpath))
     (headers, body) = generic.GenericMain()
     self.assertEqual(headers['Status'], "200 Ok")
     self.assertFalse(os.path.exists(fullpath))
Пример #6
0
 def testCreateNewMember(self):
     os.environ['REQUEST_METHOD'] = 'POST'
     os.environ['QUERY_STRING'] = 'path=/'
     os.environ['CONTENT_TYPE'] = 'text/plain'
     sys.stdin = StringIO("Hi Planet!")
     (headers, body) = generic.GenericMain()
     self.assertEqual(headers['Status'], "201 Created")
     self.assertTrue(headers.has_key('Location'))
     (doc, ctxt) = parseBody(body)
Пример #7
0
 def testPutHtAccess(self):
     os.environ['REQUEST_METHOD'] = 'PUT'
     os.environ['QUERY_STRING'] = 'path=/.htaccess'
     sys.stdin = StringIO("")
     (headers, body) = generic.GenericMain()
     self.assertEqual(headers['Status'], "403 Forbidden")
     self.assertEqual(headers['Content-Type'], "text/plain")
     fullpath = os.path.join(generic.datadir, '3.txt')
     f = file(fullpath, "r")
     self.assertEqual(f.read(), "Hello World\n")
     f.close()
Пример #8
0
 def testPut(self):
     os.environ['REQUEST_METHOD'] = 'PUT'
     os.environ['QUERY_STRING'] = 'path=/3.txt'
     sys.stdin = StringIO("This is a replacement.")
     (headers, body) = generic.GenericMain()
     self.assertEqual(headers['Status'], "200 Ok")
     self.assertEqual(headers['Content-Type'], "text/plain")
     fullpath = os.path.join(generic.datadir, '3.txt')
     f = file(fullpath, "r")
     self.assertEqual(f.read(), "This is a replacement.")
     f.close()
Пример #9
0
 def testCreateNoDirSymbols(self):
     os.environ['REQUEST_METHOD'] = 'POST'
     os.environ['QUERY_STRING'] = 'path=/'
     os.environ['CONTENT_TYPE'] = 'text/plain'
     os.environ['HTTP_NAME'] = '.fred/../.htaccess'
     sys.stdin = StringIO("Hi Planet!")
     (headers, body) = generic.GenericMain()
     self.assertEqual(headers['Status'], "201 Created")
     self.assertTrue(headers.has_key('Location'))
     (doc, ctxt) = parseBody(body)
     self.assertEqual("fred...htaccess.asc",
                      ctxt.xpathEval("//ac:member/@title")[0].get_content())
Пример #10
0
 def testUnknownRangeUnit(self):
     os.environ['REQUEST_METHOD'] = 'GET'
     os.environ['QUERY_STRING'] = 'path=/'
     os.environ['HTTP_RANGE'] = 'znarfbits=3-7,9-123'
     (headers, body) = generic.GenericMain()
     self.assertEqual(headers['Status'], "200 Ok")
     self.assertFalse(headers.has_key('Vary'))
     self.assertEqual(headers['Accept-Ranges'], "updated")
     (doc, ctxt) = parseBody(body)
     self.assertEqual(3, len(ctxt.xpathEval("//ac:collection/ac:member")))
     self.assertEqual(
         'http://bitworking.org/projects/pyapp/genericedit/_/3',
         ctxt.xpathEval("//ac:collection/@next")[0].get_content())
Пример #11
0
 def testAllInRanges(self):
     os.environ['REQUEST_METHOD'] = 'GET'
     os.environ['QUERY_STRING'] = 'path=/'
     os.environ[
         'HTTP_RANGE'] = 'updated=2005-08-15T15:19:45+05:00/2005-08-15T15:19:49+05:00'
     (headers, body) = generic.GenericMain()
     self.assertEqual(headers['Status'], "200 Ok")
     self.assertEqual(headers['Vary'], "Range")
     (doc, ctxt) = parseBody(body)
     self.assertEqual(5, len(ctxt.xpathEval("//ac:collection/ac:member")))
     self.assertEqual(
         '',
         ctxt.xpathEval("//ac:collection/@next")[0].get_content())
Пример #12
0
    def testGetBasic2(self):
        os.environ['REQUEST_METHOD'] = 'GET'
        os.environ['QUERY_STRING'] = 'path=/&block=3'
        os.environ['HTTP_RANGE'] = ''
        (headers, body) = generic.GenericMain()
        self.assertEqual(headers['Status'], "200 Ok")
        self.assertEqual(headers['Content-Type'], "application/atomcoll+xml")
        self.assertEqual(headers['Accept-Ranges'], "updated")
        (doc, ctxt) = parseBody(body)

        self.assertEqual(2, len(ctxt.xpathEval("//ac:collection/ac:member")))
        self.assertEqual(
            '',
            ctxt.xpathEval("//ac:collection/@next")[0].get_content())
Пример #13
0
 def testCreateWithName(self):
     os.environ['REQUEST_METHOD'] = 'POST'
     os.environ['QUERY_STRING'] = 'path=/'
     os.environ['CONTENT_TYPE'] = 'text/plain'
     os.environ['HTTP_NAME'] = 'fred.txt'
     sys.stdin = StringIO("Hi Planet!")
     (headers, body) = generic.GenericMain()
     self.assertEqual(headers['Status'], "201 Created")
     self.assertTrue(headers.has_key('Location'))
     (doc, ctxt) = parseBody(body)
     self.assertEqual("fred.txt",
                      ctxt.xpathEval("//ac:member/@title")[0].get_content())
     self.assertEqual(
         generic.static + "fred.txt",
         ctxt.xpathEval("//ac:member/@hrefreadonly")[0].get_content())
     self.assertEqual(generic.dynamic + "fred.txt",
                      ctxt.xpathEval("//ac:member/@href")[0].get_content())
Пример #14
0
    def testGetBasic(self):
        os.environ['REQUEST_METHOD'] = 'GET'
        os.environ['QUERY_STRING'] = 'path=/&block=0'
        os.environ['HTTP_RANGE'] = ''
        (headers, body) = generic.GenericMain()
        self.assertEqual(headers['Status'], "200 Ok")
        self.assertEqual(headers['Content-Type'], "application/atomcoll+xml")
        self.assertEqual(headers['Accept-Ranges'], "updated")
        (doc, ctxt) = parseBody(body)

        # Only 3 member's are returned
        self.assertEqual(3, len(ctxt.xpathEval("//ac:collection/ac:member")))

        # The second member is 2.txt
        self.assertEqual("2.txt",
                         ctxt.xpathEval("//ac:member/@title")[1].get_content())

        # We have the right  pointer to the 'next' document
        self.assertEqual(
            'http://bitworking.org/projects/pyapp/genericedit/_/3',
            ctxt.xpathEval("//ac:collection/@next")[0].get_content())