summaryrefslogtreecommitdiffstats
path: root/tests/conftest.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/conftest.py')
-rw-r--r--tests/conftest.py61
1 files changed, 61 insertions, 0 deletions
diff --git a/tests/conftest.py b/tests/conftest.py
new file mode 100644
index 0000000..45079a9
--- /dev/null
+++ b/tests/conftest.py
@@ -0,0 +1,61 @@
+"""contains setup functions called fixtures that each test will use"""
+
+import os
+import tempfile
+
+import pytest
+from flaskr import create_app
+from flaskr.db import get_db, init_db
+
+with open(os.path.join(os.path.dirname(__file__), 'data.sql'), 'rb') as f:
+ _data_sql = f.read().decode('utf8')
+
+
+def app():
+ db_fd, db_path = tempfile.mkstemp()
+
+ app = create_app({
+ 'TESTING': True,
+ 'DATABASE': db_path,
+ })
+
+ with app.app_context():
+ init_db()
+ get_db().executescript(_data_sql)
+
+ yield app
+
+ os.close(db_fd)
+ os.unlink(db_path)
+
+
+def client(app):
+ """can make requests to the app without running the server"""
+ return app.test_client()
+
+
+def runner(app):
+ """can all the Click commands registered with the application"""
+ return app.test_cli_runner()
+
+
+class AuthActions(object):
+ def __init__(self, client):
+ self._client = client
+
+ def login(self, username='test', password='test'):
+ return self._client.post(
+ '/auth/login',
+ data={'username': username, 'password': password}
+ )
+
+ def logout(self):
+ return self._client.get('/auth/logout')
+
+
+def auth(client):
+ return AuthActions(client) \ No newline at end of file