diff --git a/tests.py b/tests.py new file mode 100644 index 0000000000000000000000000000000000000000..c8ed28700d4033b07e2c43514f8642a09d23006a --- /dev/null +++ b/tests.py @@ -0,0 +1,101 @@ +# tests.py + +import unittest + +import flask +from flask import abort, url_for, g +from flask_testing import TestCase + +from app import create_app + + +class TestBase(TestCase): + + def create_app(self): + app = create_app('testing') + return app + + def setUp(self): + """ + Will be called before every test + """ + app = create_app('testing') + return app + + def tearDown(self): + """ + Will be called after every test + """ + + +class TestModels(TestBase): + # TODO: make tests + pass + + +class TestViews(TestBase): + # TODO: make tests + + def test_index_view(self): + """ + Test that homepage is accessible. + """ + + response = self.client.get(url_for('index')) + self.assertEqual(response.status_code, 200) + + # with self.app.test_client() as c: + # rv = c.get('/') + # assert flask.session['REMOTE_USER'] == 'bobby' + + def test_page_resources(self): + """ + Test that all resources load are found. + """ + with self.app.test_request_context('/?redir=test'): + assert flask.request.path == '/' + c = flask.app.request.args['redir'] + assert c == 'test' + + # def test_logout_view(self): + # """ + # Test that logout link is inaccessible without login + # and redirects to login page then to logout + # """ + # target_url = url_for('auth.logout') + # redirect_url = url_for('auth.login', next=target_url) + # response = self.client.get(target_url) + # self.assertEqual(response.status_code, 302) + # self.assertRedirects(response, redirect_url)\ + + +class TestErrorPages(TestBase): + + def test_403_forbidden(self): + # create route to abort the request with the 403 Error + @self.app.route('/403') + def forbidden_error(): + abort(403) + + response = self.client.get('/403') + self.assertEqual(response.status_code, 403) + self.assertTrue("403 Error" in response.data) + + def test_404_not_found(self): + response = self.client.get('/nothinghere') + self.assertEqual(response.status_code, 404) + self.assertTrue("404 Error" in response.data) + + def test_500_internal_server_error(self): + # create route to abort the request with the 500 Error + @self.app.route('/500') + def internal_server_error(): + abort(500) + + response = self.client.get('/500') + self.assertEqual(response.status_code, 500) + self.assertTrue("500 Error" in response.data) + + +if __name__ == '__main__': + unittest.main()