vigiboard / vigiboard / tests / __init__.py @ a2d3e48e
History | View | Annotate | Download (2.45 KB)
1 |
# -*- coding: utf-8 -*-
|
---|---|
2 |
"""Unit and functional test suite for vigiboard."""
|
3 |
|
4 |
from os import path, environ |
5 |
import sys |
6 |
|
7 |
from tg import config |
8 |
from paste.deploy import loadapp |
9 |
from paste.script.appinstall import SetupCommand |
10 |
from routes import url_for |
11 |
from webtest import TestApp |
12 |
import nose |
13 |
from nose.tools import eq_, nottest |
14 |
|
15 |
from vigiboard import model |
16 |
|
17 |
__all__ = ['setup_db', 'teardown_db', 'TestController', 'url_for'] |
18 |
|
19 |
def setup_db(): |
20 |
"""Method used to build a database"""
|
21 |
engine = config['pylons.app_globals'].sa_engine
|
22 |
model.init_model(engine) |
23 |
model.metadata.create_all(engine) |
24 |
|
25 |
def teardown_db(): |
26 |
"""Method used to destroy a database"""
|
27 |
engine = config['pylons.app_globals'].sa_engine
|
28 |
model.metadata.drop_all(engine) |
29 |
|
30 |
|
31 |
class TestController(object): |
32 |
"""
|
33 |
Base functional test case for the controllers.
|
34 |
|
35 |
The vigiboard application instance (``self.app``) set up in this test
|
36 |
case (and descendants) has authentication disabled, so that developers can
|
37 |
test the protected areas independently of the :mod:`repoze.who` plugins
|
38 |
used initially. This way, authentication can be tested once and separately.
|
39 |
|
40 |
Check vigiboard.tests.functional.test_authentication for the repoze.who
|
41 |
integration tests.
|
42 |
|
43 |
This is the officially supported way to test protected areas with
|
44 |
repoze.who-testutil (http://code.gustavonarea.net/repoze.who-testutil/).
|
45 |
|
46 |
"""
|
47 |
|
48 |
application_under_test = 'main_without_authn'
|
49 |
|
50 |
def setUp(self): |
51 |
"""Method called by nose before running each test"""
|
52 |
# Loading the application:
|
53 |
conf_dir = config.here |
54 |
wsgiapp = loadapp('config:test.ini#%s' % self.application_under_test, |
55 |
relative_to=conf_dir) |
56 |
self.app = TestApp(wsgiapp)
|
57 |
# Setting it up:
|
58 |
test_file = path.join(conf_dir, 'test.ini')
|
59 |
cmd = SetupCommand('setup-app')
|
60 |
cmd.run([test_file]) |
61 |
|
62 |
def tearDown(self): |
63 |
"""Method called by nose after running each test"""
|
64 |
# Cleaning up the database:
|
65 |
teardown_db() |
66 |
|
67 |
|
68 |
def runtests(): |
69 |
# XXX This is a hack, some import gets there first.
|
70 |
#environ.setdefault('VIGILO_SETTINGS_MODULE', 'settings_tests')
|
71 |
# XXX hard-coded path.
|
72 |
sys.argv[1:0] = ['--with-pylons', '../vigiboard/test.ini', |
73 |
'--with-coverage', '--cover-inclusive', |
74 |
'--cover-erase', '--cover-package', 'vigiboard', |
75 |
'vigiboard.tests' ]
|
76 |
nose.main() |
77 |
|