Mercurial > p > roundup > code
annotate test/test_liveserver.py @ 6383:e9760702bf0c
Add live server test to suite.
Now the testsuite starts an instance of the roundup tracker. It then
uses requests to verify the main page is acessible.
At some point this will be extended to use selemium or splinter to
drive more extensive end to end testing.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Tue, 20 Apr 2021 14:16:58 -0400 |
| parents | |
| children | 66a061e52435 |
| rev | line source |
|---|---|
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
1 import shutil, errno, pytest |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
2 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
3 from roundup.cgi.wsgi_handler import RequestDispatcher |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
4 from .wsgi_liveserver import LiveServerTestCase |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
5 from . import db_test_base |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
6 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
7 try: |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
8 import requests |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
9 skip_requests = lambda func, *args, **kwargs: func |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
10 except ImportError: |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
11 from .pytest_patcher import mark_class |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
12 skip_requests = mark_class(pytest.mark.skip( |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
13 reason='Skipping liveserver tests: requests library not available')) |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
14 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
15 @skip_requests |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
16 class SimpleTest(LiveServerTestCase): |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
17 port_range = (9001, 9010) # default is (8080, 8090) |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
18 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
19 dirname = '_test_instance' |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
20 backend = 'anydbm' |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
21 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
22 @classmethod |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
23 def setup_class(cls): |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
24 '''All test in this class use the same roundup instance. |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
25 This instance persists across all tests. |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
26 Create the tracker dir here so that it is ready for the |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
27 create_app() method to be called. |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
28 ''' |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
29 # tests in this class. |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
30 # set up and open a tracker |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
31 cls.instance = db_test_base.setupTracker(cls.dirname, cls.backend) |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
32 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
33 # open the database |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
34 cls.db = cls.instance.open('admin') |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
35 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
36 cls.db.commit() |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
37 cls.db.close() |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
38 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
39 @classmethod |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
40 def teardown_class(cls): |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
41 '''Close the database and delete the tracker directory |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
42 now that the app should be exiting. |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
43 ''' |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
44 if cls.db: |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
45 cls.db.close() |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
46 try: |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
47 shutil.rmtree(cls.dirname) |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
48 except OSError as error: |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
49 if error.errno not in (errno.ENOENT, errno.ESRCH): raise |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
50 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
51 def create_app(self): |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
52 '''The wsgi app to start''' |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
53 return RequestDispatcher(self.dirname) |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
54 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
55 def test_start_page(self): |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
56 """ simple test that verifies that the server can serve a start page. |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
57 """ |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
58 f = requests.get(self.url_base()) |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
59 self.assertTrue(b'Roundup' in f.content) |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
60 self.assertTrue(b'Creator' in f.content) |
