diff --git a/run_tests.sh b/run_tests.sh index 5fb6ab7f4a..bc22a8d6db 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -1,5 +1,6 @@ #!/usr/bin/env bash rm /tmp/caravel_unittests.db +rm -f .coverage export CARAVEL_CONFIG=tests.caravel_test_config caravel/bin/caravel db upgrade python setup.py nosetests diff --git a/setup.cfg b/setup.cfg index e59395f2e9..d51dbf8460 100644 --- a/setup.cfg +++ b/setup.cfg @@ -18,7 +18,7 @@ all_files = 1 upload-dir = docs/_build/html [nosetests] -verbosity=1 +verbosity=3 detailed-errors=1 with-coverage=1 cover-package=caravel diff --git a/tests/core_tests.py b/tests/core_tests.py index dc35f6e28b..e55e5db788 100644 --- a/tests/core_tests.py +++ b/tests/core_tests.py @@ -2,48 +2,75 @@ import imp import doctest import os import unittest -os.environ['CARAVEL_CONFIG'] = 'tests.caravel_test_config' -from flask.ext.testing import LiveServerTestCase, TestCase + +from flask import escape import caravel -from caravel import app, db, models, utils +from caravel import app, db, models, utils, appbuilder + +os.environ['CARAVEL_CONFIG'] = 'tests.caravel_test_config' + +app.config['TESTING'] = True +app.config['CSRF_ENABLED'] = False +app.config['SECRET_KEY'] = 'thisismyscretkey' +app.config['WTF_CSRF_ENABLED'] = False BASE_DIR = app.config.get("BASE_DIR") cli = imp.load_source('cli', BASE_DIR + "/bin/caravel") -class LiveTest(TestCase): +class CaravelTests(unittest.TestCase): - def create_app(self): - app.config['LIVESERVER_PORT'] = 8873 - app.config['TESTING'] = True - return app + def __init__(self, *args, **kwargs): + super(CaravelTests, self).__init__(*args, **kwargs) + self.client = app.test_client() + role_admin = appbuilder.sm.find_role('Admin') + user = appbuilder.sm.find_user('admin') + if not user: + appbuilder.sm.add_user( + 'admin', 'admin',' user', 'admin@fab.org', + role_admin, 'general') + utils.init(caravel) + self.load_examples() def setUp(self): pass - def test_init(self): - utils.init(caravel) + def tearDown(self): + pass - def test_load_examples(self): + def login(self): + self.client.post( + '/login/', + data=dict(username='admin', password='general'), + follow_redirects=True) + + def load_examples(self): cli.load_examples(sample=True) def test_slices(self): # Testing by running all the examples + self.login() Slc = models.Slice + urls = [] for slc in db.session.query(Slc).all(): - print(slc) - self.client.get(slc.slice_url) - viz = slc.viz - self.client.get(viz.get_url()) - if hasattr(viz, 'get_json'): - self.client.get(viz.get_json()) + urls += [ + slc.slice_url, + slc.viz.json_endpoint, + ] + for url in urls: + self.client.get(url) def test_csv(self): self.client.get('/caravel/explore/table/1/?viz_type=table&granularity=ds&since=100+years&until=now&metrics=count&groupby=name&limit=50&show_brush=y&show_brush=false&show_legend=y&show_brush=false&rich_tooltip=y&show_brush=false&show_brush=false&show_brush=false&show_brush=false&y_axis_format=&x_axis_showminmax=y&show_brush=false&line_interpolation=linear&rolling_type=None&rolling_periods=&time_compare=&num_period_compare=&where=&having=&flt_col_0=gender&flt_op_0=in&flt_eq_0=&flt_col_0=gender&flt_op_0=in&flt_eq_0=&slice_id=14&slice_name=Boys&collapsed_fieldsets=&action=&datasource_name=birth_names&datasource_id=1&datasource_type=table&previous_viz_type=line&csv=true') def test_dashboard(self): + self.login() + urls = {} for dash in db.session.query(models.Dashboard).all(): - self.client.get(dash.url) + urls[dash.dashboard_title] = dash.url + for title, url in urls.items(): + print(url) + assert escape(title) in self.client.get(url).data def test_doctests(self): modules = [utils] @@ -52,12 +79,10 @@ class LiveTest(TestCase): if failed: raise Exception("Failed a doctest") - def misc(self): - self.client.get('/health') - self.client.get('/ping') + def test_misc(self): + assert self.client.get('/health').data == "OK" + assert self.client.get('/ping').data == "OK" - def tearDown(self): - pass if __name__ == '__main__': unittest.main() diff --git a/tests/panoramix_test_config.py b/tests/panoramix_test_config.py deleted file mode 100644 index dea0733b2e..0000000000 --- a/tests/panoramix_test_config.py +++ /dev/null @@ -1,6 +0,0 @@ -from caravel.config import * - -AUTH_USER_REGISTRATION_ROLE = 'alpha' -SQLALCHEMY_DATABASE_URI = 'sqlite:////tmp/panoramix_unittests.db' -DEBUG = True -PANORAMIX_WEBSERVER_PORT = 8081