diff --git a/flaskr/__init__.py b/flaskr/__init__.py
index ed7d989..7d7ec81 100644
--- a/flaskr/__init__.py
+++ b/flaskr/__init__.py
@@ -8,6 +8,7 @@ def create_app(test_config=None):
app.config.from_mapping(
SECRET_KEY='dev',
DATABASE=os.path.join(app.instance_path, 'flaskr.sqlite'),
+ ALLOW_REGISTER=False,
)
app.wsgi_app = ProxyFix(
diff --git a/flaskr/auth.py b/flaskr/auth.py
index 5874e97..6b95143 100644
--- a/flaskr/auth.py
+++ b/flaskr/auth.py
@@ -1,7 +1,7 @@
import functools
from flask import (
- Blueprint, flash, g, redirect, render_template, request, session, url_for
+ Blueprint, flash, g, redirect, render_template, request, session, url_for, current_app
)
from werkzeug.security import check_password_hash, generate_password_hash
@@ -11,7 +11,8 @@ bp = Blueprint('auth', __name__, url_prefix='/auth')
@bp.route('/register', methods=('GET', 'POST'))
def register():
- return "Admin only", 403
+ if not current_app.config["ALLOW_REGISTER"]:
+ return "Admin only", 403
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
diff --git a/flaskr/templates/base.html b/flaskr/templates/base.html
index 6c1d788..152f1af 100644
--- a/flaskr/templates/base.html
+++ b/flaskr/templates/base.html
@@ -9,7 +9,6 @@
{{ g.user['username'] }}
Log Out
{% else %}
- Register
Log In
{% endif %}
diff --git a/tests/conftest.py b/tests/conftest.py
index 2db6e29..836a5ad 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -15,6 +15,7 @@ def app():
app = create_app({
'TESTING': True,
'DATABASE': db_path,
+ 'ALLOW_REGISTER': True,
})
with app.app_context():
diff --git a/tests/test_auth.py b/tests/test_auth.py
index d9b9b9e..1f45590 100644
--- a/tests/test_auth.py
+++ b/tests/test_auth.py
@@ -14,6 +14,10 @@ def test_register(client, app):
"SELECT * FROM user WHERE USERNAME = 'a'",
).fetchone() is not None
+ app.config["ALLOW_REGISTER"] = False
+ response = client.get('/auth/register')
+ assert b"Admin only" in response.data
+
@pytest.mark.parametrize(('username', 'password', 'message'), (
('', '', b'Username is required.'),
('a', '', b'Password is required.'),
diff --git a/tests/test_blog.py b/tests/test_blog.py
index 2479428..5f7e816 100644
--- a/tests/test_blog.py
+++ b/tests/test_blog.py
@@ -4,7 +4,7 @@ from flaskr.db import get_db
def test_index(client, auth):
response = client.get('/')
assert b"Log In" in response.data
- assert b"Register" in response.data
+ assert b"Register" not in response.data
auth.login()
response = client.get('/')
@@ -58,7 +58,7 @@ def test_create(client, auth, app):
def test_update(client, auth, app):
auth.login()
assert client.get('/1/update').status_code == 200
- client.post('/1/update', data={'title': 'updated', 'body': ''})
+ client.post('/1/update', data={'title': 'updated', 'body': '', 'created': '1970-01-01 00:00:00'})
with app.app_context():
db = get_db()
@@ -71,7 +71,7 @@ def test_update(client, auth, app):
))
def test_create_update_validate(client, auth, path):
auth.login()
- response = client.post(path, data={'title': '', 'body': ''})
+ response = client.post(path, data={'title': '', 'body': '', 'created': '1970-01-01 00:00:00'})
assert b'Title is required.' in response.data
def test_delete(client, auth, app):