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()