Force user to fill out their user profile

This commit is contained in:
Patrick Smith
2018-10-30 15:31:56 -04:00
parent f8c4386d84
commit dd5f99faab
5 changed files with 95 additions and 4 deletions

45
tests/routes/test_auth.py Normal file
View File

@@ -0,0 +1,45 @@
from flask import url_for
from urllib.parse import quote
from tests.factories import UserFactory
def test_request_page_with_complete_profile(client, user_session):
user = UserFactory.create()
user_session(user)
response = client.get("/requests", follow_redirects=False)
assert response.status_code == 200
def test_redirect_when_profile_missing_fields(client, user_session):
user = UserFactory.create(date_latest_training=None)
user_session(user)
requested_url = "/requests"
response = client.get(requested_url, follow_redirects=False)
assert response.status_code == 302
assert "/user?next={}".format(quote(requested_url, safe="")) in response.location
def test_unprotected_route_with_incomplete_profile(client, user_session):
user = UserFactory.create(date_latest_training=None)
user_session(user)
response = client.get("/about", follow_redirects=False)
assert response.status_code == 200
def test_completing_user_profile(client, user_session):
user = UserFactory.create(phone_number=None)
user_session(user)
response = client.get("/requests", follow_redirects=True)
assert b"You must complete your profile" in response.data
updated_data = {**user.to_dictionary(), "phone_number": "5558675309"}
updated_data["date_latest_training"] = updated_data[
"date_latest_training"
].strftime("%m/%d/%Y")
response = client.post(url_for("users.update_user"), data=updated_data)
assert response.status_code == 200
response = client.get("/requests", follow_redirects=False)
assert response.status_code == 200
assert b"You must complete your profile" not in response.data

View File

@@ -23,3 +23,21 @@ def test_user_can_update_profile(user_session, client):
updated_user = Users.get_by_dod_id(user.dod_id)
assert updated_user.first_name == "chad"
assert updated_user.last_name == "vader"
def test_user_is_redirected_when_updating_profile(user_session, client):
user = UserFactory.create()
user_session(user)
next_url = "/requests"
user_data = user.to_dictionary()
user_data["date_latest_training"] = user_data["date_latest_training"].strftime(
"%m/%d/%Y"
)
response = client.post(
url_for("users.update_user", next=next_url),
data=user_data,
follow_redirects=False,
)
assert response.status_code == 302
assert response.location.endswith(next_url)