Files
flowers/tests/test_app.py
T

75 lines
2.2 KiB
Python
Raw Normal View History

2026-07-18 20:27:19 +02:00
import json
import unittest
from unittest.mock import patch
from flowers import create_app
class FakeVault:
def __init__(self, *args):
pass
def authenticate(self):
return True
def all(self):
return [
{
"organization": "Acme",
"myID": "alice@example.test",
"dateCreated": "2024-02-03 12:00:00",
}
]
class AppTests(unittest.TestCase):
def setUp(self):
self.app = create_app({"TESTING": True, "SECRET_KEY": "test-secret"})
self.client = self.app.test_client()
def csrf(self):
self.client.get("/")
with self.client.session_transaction() as browser_session:
return browser_session["csrf_token"]
def test_login_form_requires_csrf(self):
response = self.client.post(
"/browser",
data={"action": "login", "name": "alice", "password": "legacy_pwd"},
)
self.assertEqual(response.status_code, 400)
@patch("flower_vase.Flower", FakeVault)
def test_login_renders_existing_entries(self):
response = self.client.post(
"/browser",
data={
"csrf_token": self.csrf(),
"action": "login",
"name": "alice",
"password": "legacy_pwd",
},
follow_redirects=True,
)
self.assertEqual(response.status_code, 200)
self.assertIn(b"Acme", response.data)
with self.client.session_transaction() as browser_session:
self.assertNotIn("dbpwd", browser_session)
self.assertNotIn("password", browser_session)
self.assertIn("auth_token", browser_session)
@patch("flower_vase.Flower", FakeVault)
def test_legacy_api_keeps_double_encoded_list(self):
response = self.client.post(
"/app",
data={"action": "list", "name": "alice", "password": "legacy_pwd"},
)
payload = response.get_json()
nested = json.loads(payload["list"])
self.assertEqual(payload["result"], 1)
self.assertEqual(nested[0]["organization"], "Acme")
if __name__ == "__main__":
unittest.main()