1 # paperdoorknob: Print glowfic
3 # This program is free software: you can redistribute it and/or modify it
4 # under the terms of the GNU General Public License as published by the
5 # Free Software Foundation, version 3.
10 from http
.server
import BaseHTTPRequestHandler
, HTTPServer
17 class FakeGlowficHTTPRequestHandler(BaseHTTPRequestHandler
):
19 def _response_code(self
) -> int:
20 if self
.path
== "/not_found":
22 if self
.path
== "/server_error":
26 def do_GET(self
) -> None:
27 body
= b
'<html><body>This is glowfic</body></html>'
28 self
.send_response(self
._response
_code
())
29 self
.send_header("Content-type", "text/html")
30 self
.send_header("Content-Length", str(len(body
)))
32 self
.wfile
.write(body
)
35 class TestFetch(unittest
.TestCase
):
36 def _port(self
) -> int:
37 port
= self
._web
_server
.socket
.getsockname()[1]
38 assert isinstance(port
, int)
41 def setUp(self
) -> None:
42 self
._web
_server
= HTTPServer(('', 0), FakeGlowficHTTPRequestHandler
)
43 self
._thread
= threading
.Thread(target
=self
._web
_server
.serve_forever
)
46 def tearDown(self
) -> None:
47 self
._web
_server
.shutdown()
49 self
._web
_server
.server_close()
51 def testFetch(self
) -> None:
52 paperdoorknob
.fetch(f
"http://localhost:{self._port()}", TIMEOUT
)
54 def testFetchErrors(self
) -> None:
55 with self
.assertRaises(requests
.HTTPError
):
57 f
"http://localhost:{self._port()}/not_found", TIMEOUT
)
58 with self
.assertRaises(requests
.HTTPError
):
60 f
"http://localhost:{self._port()}/server_error", TIMEOUT
)
63 if __name__
== '__main__':