mail notification
This commit is contained in:
@@ -366,6 +366,106 @@ def test_update_user_rejects_empty_mywhoosh_email(client: TestClient) -> None:
|
||||
assert response.status_code == 400
|
||||
|
||||
|
||||
def test_create_user_without_notifications_requires_no_email(client: TestClient) -> None:
|
||||
login(client)
|
||||
page = client.get("/users/new")
|
||||
csrf = extract_csrf(page.text)
|
||||
response = client.post(
|
||||
"/users",
|
||||
data={"csrf_token": csrf, **_create_payload()},
|
||||
follow_redirects=False,
|
||||
)
|
||||
assert response.status_code == 303
|
||||
|
||||
|
||||
def test_create_user_rejects_notify_enabled_without_email(client: TestClient) -> None:
|
||||
login(client)
|
||||
page = client.get("/users/new")
|
||||
csrf = extract_csrf(page.text)
|
||||
response = client.post(
|
||||
"/users",
|
||||
data={"csrf_token": csrf, **_create_payload(notify_email_enabled="on")},
|
||||
)
|
||||
assert response.status_code == 400
|
||||
|
||||
|
||||
def test_create_user_persists_notification_preferences(client: TestClient) -> None:
|
||||
login(client)
|
||||
page = client.get("/users/new")
|
||||
csrf = extract_csrf(page.text)
|
||||
response = client.post(
|
||||
"/users",
|
||||
data={
|
||||
"csrf_token": csrf,
|
||||
**_create_payload(notify_email_enabled="on", notification_email="alerts@example.com"),
|
||||
},
|
||||
follow_redirects=False,
|
||||
)
|
||||
assert response.status_code == 303
|
||||
user_id = int(response.headers["location"].rsplit("/", 1)[-1])
|
||||
|
||||
with client.app.state.session_factory() as session:
|
||||
user = UserRepository(session).get(user_id)
|
||||
assert user is not None
|
||||
assert user.notify_email_enabled is True
|
||||
assert user.notification_email == "alerts@example.com"
|
||||
|
||||
|
||||
def test_update_user_can_enable_notifications_without_reentering_passwords(client: TestClient) -> None:
|
||||
login(client)
|
||||
user_id = create_user_via_http(client)
|
||||
|
||||
edit_page = client.get(f"/users/{user_id}/edit")
|
||||
csrf = extract_csrf(edit_page.text)
|
||||
response = client.post(
|
||||
f"/users/{user_id}",
|
||||
data={
|
||||
"csrf_token": csrf,
|
||||
"name": "Max",
|
||||
"mywhoosh_email": "max@example.com",
|
||||
"mywhoosh_password": "",
|
||||
"garmin_email": "max-garmin@example.com",
|
||||
"garmin_password": "",
|
||||
"enabled": "on",
|
||||
"notify_email_enabled": "on",
|
||||
"notification_email": "alerts@example.com",
|
||||
},
|
||||
follow_redirects=True,
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
with client.app.state.session_factory() as session:
|
||||
user = UserRepository(session).get(user_id)
|
||||
assert user is not None
|
||||
assert user.notify_email_enabled is True
|
||||
assert user.notification_email == "alerts@example.com"
|
||||
cipher = CredentialCipher(client.app.state.settings.credential_encryption_key)
|
||||
assert cipher.decrypt(user.mywhoosh_password_enc) == "mw-secret"
|
||||
assert cipher.decrypt(user.garmin_password_enc) == "garmin-secret"
|
||||
|
||||
|
||||
def test_update_user_rejects_notify_enabled_without_email(client: TestClient) -> None:
|
||||
login(client)
|
||||
user_id = create_user_via_http(client)
|
||||
edit_page = client.get(f"/users/{user_id}/edit")
|
||||
csrf = extract_csrf(edit_page.text)
|
||||
response = client.post(
|
||||
f"/users/{user_id}",
|
||||
data={
|
||||
"csrf_token": csrf,
|
||||
"name": "Max",
|
||||
"mywhoosh_email": "max@example.com",
|
||||
"mywhoosh_password": "",
|
||||
"garmin_email": "max-garmin@example.com",
|
||||
"garmin_password": "",
|
||||
"enabled": "on",
|
||||
"notify_email_enabled": "on",
|
||||
"notification_email": "",
|
||||
},
|
||||
)
|
||||
assert response.status_code == 400
|
||||
|
||||
|
||||
def test_update_user_rejects_empty_garmin_email(client: TestClient) -> None:
|
||||
login(client)
|
||||
user_id = create_user_via_http(client)
|
||||
|
||||
Reference in New Issue
Block a user