]>
git.scottworley.com Git - paperdoorknob/blob - fetch_test.py
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.
9 from requests
import HTTPError
10 from testing
.fakeserver
import FakeGlowficServer
11 from fetch
import CachingFetcher
, DirectFetcher
16 class TestFetch(unittest
.TestCase
):
17 def setUp(self
) -> None:
18 self
._server
= self
.enterContext(FakeGlowficServer())
19 self
._port
= self
._server
.port()
21 def testDirectFetch(self
) -> None:
22 with DirectFetcher(TIMEOUT
) as f
:
23 f
.fetch(f
"http://localhost:{self._port}")
24 self
.assertEqual(self
._server
.request_count(), 1)
25 f
.fetch(f
"http://localhost:{self._port}")
26 self
.assertEqual(self
._server
.request_count(), 2)
28 def testFetchCaching(self
) -> None:
29 with CachingFetcher("testcache", TIMEOUT
) as f
:
30 f
.fetch(f
"http://localhost:{self._port}")
31 self
.assertEqual(self
._server
.request_count(), 1)
32 f
.fetch(f
"http://localhost:{self._port}")
33 self
.assertEqual(self
._server
.request_count(), 1)
35 def testFetchPersistentCaching(self
) -> None:
36 with CachingFetcher("testpersistentcache", TIMEOUT
) as f
:
37 f
.fetch(f
"http://localhost:{self._port}")
38 self
.assertEqual(self
._server
.request_count(), 1)
39 with CachingFetcher("testpersistentcache", TIMEOUT
) as f
:
40 f
.fetch(f
"http://localhost:{self._port}")
41 self
.assertEqual(self
._server
.request_count(), 1)
43 def testFetchErrors(self
) -> None:
44 with DirectFetcher(TIMEOUT
) as f
:
45 with self
.assertRaises(HTTPError
):
46 f
.fetch(f
"http://localhost:{self._port}/not_found")
47 with self
.assertRaises(HTTPError
):
48 f
.fetch(f
"http://localhost:{self._port}/server_error")
49 with CachingFetcher("testerrorscache", TIMEOUT
) as f
:
50 with self
.assertRaises(HTTPError
):
51 f
.fetch(f
"http://localhost:{self._port}/not_found")
52 with self
.assertRaises(HTTPError
):
53 f
.fetch(f
"http://localhost:{self._port}/server_error")
56 if __name__
== '__main__':