M8-R06: refresh Tibber prices after startup and configuration
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user