Mercurial > hg > FileServer
view tests/test_directory_server.txt @ 33:86b519dd8467
finish test and implementation
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Mon, 05 Mar 2012 14:08:31 -0800 |
parents | d8b73d9b679d |
children |
line wrap: on
line source
Test Directory Server ===================== The obligatory imports:: >>> import fileserver >>> import os >>> import urlparse >>> from paste.fixture import TestApp 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 >>> filename = os.path.join(here, 'example', 'helloworld.txt') >>> 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 '/'