Mercurial > hg > FileServer
diff tests/test_directory_server.txt @ 28:4509330ef8ad
give a more appropriate name
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Mon, 05 Mar 2012 13:24:10 -0800 |
parents | tests/doctest.txt@76c939271534 |
children | d8b73d9b679d |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test_directory_server.txt Mon Mar 05 13:24:10 2012 -0800 @@ -0,0 +1,92 @@ +Test FileServer +=============== + +The obligatory imports:: + + >>> import fileserver + >>> import os + >>> import urlparse + >>> from paste.fixture import TestApp + +Make a single file server:: + + >>> filename = os.path.join(here, 'example', 'helloworld.txt') + >>> os.path.exists(filename) + True + >>> app = fileserver.FileApp(filename) + >>> testapp = TestApp(app) + >>> response = testapp.get('/') + >>> response.status + 200 + >>> response.body == file(filename).read() + True + +Make a directory server:: + + >>> directory = os.path.join(here, 'example') + >>> os.path.exists(directory) and os.path.isdir(directory) + True + >>> app = fileserver.DirectoryServer(directory) + >>> testapp = TestApp(app) + +Ensure you can serve directory listings:: + + >>> response = testapp.get('/') + >>> response.status + 200 + >>> 'helloworld.txt' in response.body + True + +Ensure you can serve file contents:: + + >>> response = testapp.get('/helloworld.txt') + >>> response.status + 200 + >>> response.body == file(filename).read() + True + +Ensure you get a 404 for nonexistent resources:: + + >>> response = testapp.get('/notfound.bin', status=404) + >>> response.status + 404 + +Ensure we're not misusing slashes:: + + >>> response = testapp.get('/helloworld.txt/', status=404) + >>> response.status + 404 + +Ensure you can get resources from subdirectories:: + + >>> response = testapp.get('/foo') + >>> response.status # 301 Moved Permanently + 301 + >>> location = response.header_dict['location'] + >>> shema, netloc, path, query, fragment = urlparse.urlsplit(location) + >>> path + '/foo/' + >>> response = testapp.get('/foo/') + >>> response.status + 200 + >>> 'bar.txt' in response.body + True + >>> response = testapp.get('/foo/bar.txt') + >>> response.status + 200 + >>> filename = os.path.join(here, 'example', 'foo', 'bar.txt') + >>> response.body == file(filename).read() + True + +Ensure you can't get to non-allowed resources:: + + >>> response = testapp.get('/../exampleBADBADBAD', status=404) + >>> response.status # Not Found: we do not want to give away these resources + 404 + >>> response = testapp.get('//') # XXX weird + >>> response.status + 301 + >>> location = response.header_dict['location'] + >>> shema, netloc, path, query, fragment = urlparse.urlsplit(location) + >>> path + '/'