diff --git a/budget/tests.py b/budget/tests.py new file mode 100644 index 00000000..6e365bd9 --- /dev/null +++ b/budget/tests.py @@ -0,0 +1,64 @@ +import os +import tempfile +import unittest + +from flask import g + +import web +import models + +class BudgetTestCase(unittest.TestCase): + + def test_notifications(self): + """Test that the notifications are sent, and that email adresses + are checked properly. + """ + # create a project + self.create_project("raclette") + + with web.app.test_client() as c: + self.login("raclette", test_client=c) + result = c.post("/raclette/invite", + data={"emails": 'test@test.com'}) + # check here that the mails are sent. + + + def login(self, project, password=None, test_client=None): + password = password or project + test_client = test_client or self.app + + return test_client.post('/authenticate', data=dict( + id=project, password=password), follow_redirects=True) + + def create_project(self, name): + """Create a fake project""" + # create the project + project = models.Project(id=name, name=unicode(name), password=name, + contact_email="%s@notmyidea.org" % name) + models.db.session.add(project) + models.db.session.commit() + + return project + + def setUp(self): + web.app.config['TESTING'] = True + + self.fd, self.fp = tempfile.mkstemp() + web.app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:///%s" % self.fp + web.app.config['CSRF_ENABLED'] = False # simplify the tests + self.app = web.app.test_client() + + models.db.init_app(web.app) + web.mail.init_app(web.app) + + models.db.app = web.app + models.db.create_all() + + def tearDown(self): + # clean after testing + os.close(self.fd) + os.unlink(self.fp) + + +if __name__ == "__main__": + unittest.main() diff --git a/budget/web.py b/budget/web.py index 049fae9c..36a198d2 100644 --- a/budget/web.py +++ b/budget/web.py @@ -11,6 +11,7 @@ from utils import get_billform_for, requires_auth # create the application, initialize stuff app = Flask(__name__) +app.config.from_object("default_settings") mail = Mail() @app.route("/") @@ -200,7 +201,6 @@ def debug(): def main(): - app.config.from_object("default_settings") # db db.init_app(app) db.app = app