12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- # -*- coding: utf-8 -*-
- """Unit and functional test suite for pod."""
-
- from os import getcwd, path
-
- from paste.deploy import loadapp
- from webtest import TestApp
-
- from gearbox.commands.setup_app import SetupAppCommand
- from tg import config
- from tg.util import Bunch
-
- from pod import model
-
- __all__ = ['setup_app', 'setup_db', 'teardown_db', 'TestController']
-
- application_name = 'main_without_authn'
-
-
- def load_app(name=application_name):
- """Load the test application."""
- return TestApp(loadapp('config:test.ini#%s' % name, relative_to=getcwd()))
-
-
- def setup_app():
- """Setup the application."""
- cmd = SetupAppCommand(Bunch(options=Bunch(verbose_level=1)), Bunch())
- cmd.run(Bunch(config_file='config:test.ini', section_name=None))
-
- def setup_db():
- """Create the database schema (not needed when you run setup_app)."""
- engine = config['tg.app_globals'].sa_engine
- model.init_model(engine)
- model.metadata.create_all(engine)
-
-
- def teardown_db():
- """Destroy the database schema."""
- engine = config['tg.app_globals'].sa_engine
- model.metadata.drop_all(engine)
-
-
- class TestController(object):
- """Base functional test case for the controllers.
-
- The pod application instance (``self.app``) set up in this test
- case (and descendants) has authentication disabled, so that developers can
- test the protected areas independently of the :mod:`repoze.who` plugins
- used initially. This way, authentication can be tested once and separately.
-
- Check pod.tests.functional.test_authentication for the repoze.who
- integration tests.
-
- This is the officially supported way to test protected areas with
- repoze.who-testutil (http://code.gustavonarea.net/repoze.who-testutil/).
-
- """
-
- application_under_test = application_name
-
- def setUp(self):
- """Setup test fixture for each functional test method."""
- self.app = load_app(self.application_under_test)
- setup_app()
-
- def tearDown(self):
- """Tear down test fixture for each functional test method."""
- model.DBSession.remove()
- teardown_db()
|