Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

vigiboard / vigiboard / tests / __init__.py @ 747e30c3

History | View | Annotate | Download (2.06 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
import unittest
8
from tg import config
9
from paste.deploy import loadapp
10
from paste.script.appinstall import SetupCommand
11
from routes import url_for
12
from webtest import TestApp
13

    
14
from vigilo.models.session import metadata, DBSession
15

    
16
__all__ = ['setup_db', 'teardown_db', 'TestController', 'url_for']
17

    
18
def setup_db():
19
    """Method used to build a database"""
20
    print "Creating model"
21
    engine = config['pylons.app_globals'].sa_engine
22
    metadata.create_all(engine)
23

    
24
def teardown_db():
25
    """Method used to destroy a database"""
26
    print "Destroying model"
27
    engine = config['pylons.app_globals'].sa_engine
28
    metadata.drop_all(engine)
29

    
30
class TestController(unittest.TestCase):
31
    """
32
    Base functional test case for the controllers.
33
    
34
    The vigiboard application instance (``self.app``) set up in this test 
35
    case (and descendants) has authentication disabled, so that developers can
36
    test the protected areas independently of the :mod:`repoze.who` plugins
37
    used initially. This way, authentication can be tested once and separately.
38
    
39
    Check vigiboard.tests.functional.test_authentication for the repoze.who
40
    integration tests.
41
    
42
    This is the officially supported way to test protected areas with
43
    repoze.who-testutil (http://code.gustavonarea.net/repoze.who-testutil/).
44
    
45
    """
46
    
47
    application_under_test = 'main_without_authn'
48

    
49
    def setUp(self):
50
        """Method called by nose before running each test"""
51
        # Loading the application:
52
        conf_dir = config.here
53
        wsgiapp = loadapp('config:test.ini#%s' %
54
            self.application_under_test, relative_to=conf_dir)
55
        self.app = TestApp(wsgiapp)
56
        # Setting it up:
57
        test_file = path.join(conf_dir, 'test.ini')
58
        cmd = SetupCommand('setup-app')
59
        cmd.run([test_file])
60
    
61
    def tearDown(self):
62
        """Method called by nose after running each test"""
63
        # Cleaning up the database:
64
        teardown_db()
65
        del self.app
66