Mercurial > hg > FileServer
comparison 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 |
comparison
equal
deleted
inserted
replaced
| 27:41bd126ab77d | 28:4509330ef8ad |
|---|---|
| 1 Test FileServer | |
| 2 =============== | |
| 3 | |
| 4 The obligatory imports:: | |
| 5 | |
| 6 >>> import fileserver | |
| 7 >>> import os | |
| 8 >>> import urlparse | |
| 9 >>> from paste.fixture import TestApp | |
| 10 | |
| 11 Make a single file server:: | |
| 12 | |
| 13 >>> filename = os.path.join(here, 'example', 'helloworld.txt') | |
| 14 >>> os.path.exists(filename) | |
| 15 True | |
| 16 >>> app = fileserver.FileApp(filename) | |
| 17 >>> testapp = TestApp(app) | |
| 18 >>> response = testapp.get('/') | |
| 19 >>> response.status | |
| 20 200 | |
| 21 >>> response.body == file(filename).read() | |
| 22 True | |
| 23 | |
| 24 Make a directory server:: | |
| 25 | |
| 26 >>> directory = os.path.join(here, 'example') | |
| 27 >>> os.path.exists(directory) and os.path.isdir(directory) | |
| 28 True | |
| 29 >>> app = fileserver.DirectoryServer(directory) | |
| 30 >>> testapp = TestApp(app) | |
| 31 | |
| 32 Ensure you can serve directory listings:: | |
| 33 | |
| 34 >>> response = testapp.get('/') | |
| 35 >>> response.status | |
| 36 200 | |
| 37 >>> 'helloworld.txt' in response.body | |
| 38 True | |
| 39 | |
| 40 Ensure you can serve file contents:: | |
| 41 | |
| 42 >>> response = testapp.get('/helloworld.txt') | |
| 43 >>> response.status | |
| 44 200 | |
| 45 >>> response.body == file(filename).read() | |
| 46 True | |
| 47 | |
| 48 Ensure you get a 404 for nonexistent resources:: | |
| 49 | |
| 50 >>> response = testapp.get('/notfound.bin', status=404) | |
| 51 >>> response.status | |
| 52 404 | |
| 53 | |
| 54 Ensure we're not misusing slashes:: | |
| 55 | |
| 56 >>> response = testapp.get('/helloworld.txt/', status=404) | |
| 57 >>> response.status | |
| 58 404 | |
| 59 | |
| 60 Ensure you can get resources from subdirectories:: | |
| 61 | |
| 62 >>> response = testapp.get('/foo') | |
| 63 >>> response.status # 301 Moved Permanently | |
| 64 301 | |
| 65 >>> location = response.header_dict['location'] | |
| 66 >>> shema, netloc, path, query, fragment = urlparse.urlsplit(location) | |
| 67 >>> path | |
| 68 '/foo/' | |
| 69 >>> response = testapp.get('/foo/') | |
| 70 >>> response.status | |
| 71 200 | |
| 72 >>> 'bar.txt' in response.body | |
| 73 True | |
| 74 >>> response = testapp.get('/foo/bar.txt') | |
| 75 >>> response.status | |
| 76 200 | |
| 77 >>> filename = os.path.join(here, 'example', 'foo', 'bar.txt') | |
| 78 >>> response.body == file(filename).read() | |
| 79 True | |
| 80 | |
| 81 Ensure you can't get to non-allowed resources:: | |
| 82 | |
| 83 >>> response = testapp.get('/../exampleBADBADBAD', status=404) | |
| 84 >>> response.status # Not Found: we do not want to give away these resources | |
| 85 404 | |
| 86 >>> response = testapp.get('//') # XXX weird | |
| 87 >>> response.status | |
| 88 301 | |
| 89 >>> location = response.header_dict['location'] | |
| 90 >>> shema, netloc, path, query, fragment = urlparse.urlsplit(location) | |
| 91 >>> path | |
| 92 '/' |
