M8-R06: refresh Tibber prices after startup and configuration

This commit is contained in:
2026-08-24 06:45:31 +02:00
parent 0924e8df52
commit 09abe05f66
8 changed files with 275 additions and 14 deletions
+49
View File
@@ -946,6 +946,55 @@ def test_get_config_tibber_api_token_value_masked_after_save(
assert "some-tibber-token" not in resp_after.text
def test_put_tibber_config_triggers_refresh_only_for_active_tibber_contract(
client: TestClient, test_database_urls
) -> None:
"""Saved Tibber credentials request a refresh only when their contract is active."""
_login(client)
conn = sqlite3.connect(test_database_urls["app_path"])
try:
conn.execute(
"INSERT INTO energy_contract (name, kind, scope, active, currency, created_at, updated_at) "
"VALUES (?, ?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)",
("Tibber", "tibber", "electricity", True, "EUR"),
)
conn.commit()
finally:
conn.close()
with patch("app.api.routes.api.config.trigger_tibber_refresh") as trigger:
response = client.put(
"/api/config",
json={"updates": _full_config_payload({"TIBBER_API_TOKEN": "new-secret-token"})},
headers={"X-CSRF-Token": "token"},
)
assert response.status_code == 200
trigger.assert_called_once()
with patch("app.api.routes.api.config.trigger_tibber_refresh") as trigger:
response = client.put(
"/api/config",
json={"updates": _full_config_payload({"TIBBER_API_TOKEN": ""})},
headers={"X-CSRF-Token": "token"},
)
assert response.status_code == 200
trigger.assert_not_called()
def test_put_tibber_config_does_not_refresh_without_active_tibber_contract(client: TestClient) -> None:
_login(client)
with patch("app.api.routes.api.config.trigger_tibber_refresh") as trigger:
response = client.put(
"/api/config",
json={"updates": _full_config_payload({"TIBBER_HOME_ID": "new-home-id"})},
headers={"X-CSRF-Token": "token"},
)
assert response.status_code == 200
trigger.assert_not_called()
def test_post_mqtt_test_uses_db_broker_host(
client: TestClient, test_database_urls
) -> None: