Mercurial > hg > FileServer
view tests/doctest.txt @ 21:3ce9fe38f5e1
addendum
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Wed, 29 Feb 2012 16:39:50 -0800 |
parents | 76c939271534 |
children |
line wrap: on
line source
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 '/'