Mercurial > hg > FileServer
annotate tests/doctest.txt @ 26:395c6744bcd9
upgrading with suggestions from http://docs.webob.org/en/latest/file-example.html
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Mon, 05 Mar 2012 13:15:45 -0800 |
parents | 76c939271534 |
children |
rev | line source |
---|---|
0 | 1 Test FileServer |
16 | 2 =============== |
0 | 3 |
6 | 4 The obligatory imports:: |
0 | 5 |
6 >>> import fileserver | |
6 | 7 >>> import os |
12 | 8 >>> import urlparse |
6 | 9 >>> from paste.fixture import TestApp |
0 | 10 |
6 | 11 Make a single file server:: |
0 | 12 |
6 | 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 | |
7
4d1852cfc077
rudimentary test for directory server
Jeff Hammel <jhammel@mozilla.com>
parents:
6
diff
changeset
|
23 |
4d1852cfc077
rudimentary test for directory server
Jeff Hammel <jhammel@mozilla.com>
parents:
6
diff
changeset
|
24 Make a directory server:: |
4d1852cfc077
rudimentary test for directory server
Jeff Hammel <jhammel@mozilla.com>
parents:
6
diff
changeset
|
25 |
4d1852cfc077
rudimentary test for directory server
Jeff Hammel <jhammel@mozilla.com>
parents:
6
diff
changeset
|
26 >>> directory = os.path.join(here, 'example') |
4d1852cfc077
rudimentary test for directory server
Jeff Hammel <jhammel@mozilla.com>
parents:
6
diff
changeset
|
27 >>> os.path.exists(directory) and os.path.isdir(directory) |
4d1852cfc077
rudimentary test for directory server
Jeff Hammel <jhammel@mozilla.com>
parents:
6
diff
changeset
|
28 True |
4d1852cfc077
rudimentary test for directory server
Jeff Hammel <jhammel@mozilla.com>
parents:
6
diff
changeset
|
29 >>> app = fileserver.DirectoryServer(directory) |
4d1852cfc077
rudimentary test for directory server
Jeff Hammel <jhammel@mozilla.com>
parents:
6
diff
changeset
|
30 >>> testapp = TestApp(app) |
8 | 31 |
32 Ensure you can serve directory listings:: | |
33 | |
7
4d1852cfc077
rudimentary test for directory server
Jeff Hammel <jhammel@mozilla.com>
parents:
6
diff
changeset
|
34 >>> response = testapp.get('/') |
4d1852cfc077
rudimentary test for directory server
Jeff Hammel <jhammel@mozilla.com>
parents:
6
diff
changeset
|
35 >>> response.status |
4d1852cfc077
rudimentary test for directory server
Jeff Hammel <jhammel@mozilla.com>
parents:
6
diff
changeset
|
36 200 |
4d1852cfc077
rudimentary test for directory server
Jeff Hammel <jhammel@mozilla.com>
parents:
6
diff
changeset
|
37 >>> 'helloworld.txt' in response.body |
4d1852cfc077
rudimentary test for directory server
Jeff Hammel <jhammel@mozilla.com>
parents:
6
diff
changeset
|
38 True |
8 | 39 |
40 Ensure you can serve file contents:: | |
41 | |
42 >>> response = testapp.get('/helloworld.txt') | |
43 >>> response.status | |
44 200 | |
9 | 45 >>> response.body == file(filename).read() |
46 True | |
10 | 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 | |
15
21673816cfde
add a test for normal files ending with slashes
Jeff Hammel <jhammel@mozilla.com>
parents:
14
diff
changeset
|
54 Ensure we're not misusing slashes:: |
21673816cfde
add a test for normal files ending with slashes
Jeff Hammel <jhammel@mozilla.com>
parents:
14
diff
changeset
|
55 |
21673816cfde
add a test for normal files ending with slashes
Jeff Hammel <jhammel@mozilla.com>
parents:
14
diff
changeset
|
56 >>> response = testapp.get('/helloworld.txt/', status=404) |
21673816cfde
add a test for normal files ending with slashes
Jeff Hammel <jhammel@mozilla.com>
parents:
14
diff
changeset
|
57 >>> response.status |
21673816cfde
add a test for normal files ending with slashes
Jeff Hammel <jhammel@mozilla.com>
parents:
14
diff
changeset
|
58 404 |
21673816cfde
add a test for normal files ending with slashes
Jeff Hammel <jhammel@mozilla.com>
parents:
14
diff
changeset
|
59 |
11 | 60 Ensure you can get resources from subdirectories:: |
61 | |
62 >>> response = testapp.get('/foo') | |
12 | 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/') | |
11 | 70 >>> response.status |
12 | 71 200 |
72 >>> 'bar.txt' in response.body | |
73 True | |
14
c8520774ddc9
add a test for reading subdirectory files
Jeff Hammel <jhammel@mozilla.com>
parents:
12
diff
changeset
|
74 >>> response = testapp.get('/foo/bar.txt') |
c8520774ddc9
add a test for reading subdirectory files
Jeff Hammel <jhammel@mozilla.com>
parents:
12
diff
changeset
|
75 >>> response.status |
c8520774ddc9
add a test for reading subdirectory files
Jeff Hammel <jhammel@mozilla.com>
parents:
12
diff
changeset
|
76 200 |
c8520774ddc9
add a test for reading subdirectory files
Jeff Hammel <jhammel@mozilla.com>
parents:
12
diff
changeset
|
77 >>> filename = os.path.join(here, 'example', 'foo', 'bar.txt') |
c8520774ddc9
add a test for reading subdirectory files
Jeff Hammel <jhammel@mozilla.com>
parents:
12
diff
changeset
|
78 >>> response.body == file(filename).read() |
c8520774ddc9
add a test for reading subdirectory files
Jeff Hammel <jhammel@mozilla.com>
parents:
12
diff
changeset
|
79 True |
11 | 80 |
81 Ensure you can't get to non-allowed resources:: | |
82 | |
17 | 83 >>> response = testapp.get('/../exampleBADBADBAD', status=404) |
14
c8520774ddc9
add a test for reading subdirectory files
Jeff Hammel <jhammel@mozilla.com>
parents:
12
diff
changeset
|
84 >>> response.status # Not Found: we do not want to give away these resources |
c8520774ddc9
add a test for reading subdirectory files
Jeff Hammel <jhammel@mozilla.com>
parents:
12
diff
changeset
|
85 404 |
18
76c939271534
introduce a test that i dont know what it means
Jeff Hammel <jhammel@mozilla.com>
parents:
17
diff
changeset
|
86 >>> response = testapp.get('//') # XXX weird |
76c939271534
introduce a test that i dont know what it means
Jeff Hammel <jhammel@mozilla.com>
parents:
17
diff
changeset
|
87 >>> response.status |
76c939271534
introduce a test that i dont know what it means
Jeff Hammel <jhammel@mozilla.com>
parents:
17
diff
changeset
|
88 301 |
76c939271534
introduce a test that i dont know what it means
Jeff Hammel <jhammel@mozilla.com>
parents:
17
diff
changeset
|
89 >>> location = response.header_dict['location'] |
76c939271534
introduce a test that i dont know what it means
Jeff Hammel <jhammel@mozilla.com>
parents:
17
diff
changeset
|
90 >>> shema, netloc, path, query, fragment = urlparse.urlsplit(location) |
76c939271534
introduce a test that i dont know what it means
Jeff Hammel <jhammel@mozilla.com>
parents:
17
diff
changeset
|
91 >>> path |
76c939271534
introduce a test that i dont know what it means
Jeff Hammel <jhammel@mozilla.com>
parents:
17
diff
changeset
|
92 '/' |