Skip to content

Commit 6829448

Browse files
committed
test: cover schedule flex config auth errors
Signed-off-by: Mohamed Belhsan Hmida <[email protected]>
1 parent 1df2778 commit 6829448

1 file changed

Lines changed: 61 additions & 0 deletions

File tree

flexmeasures/api/v3_0/tests/test_sensor_schedules.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from datetime import timedelta
2+
13
from flask import url_for
24
import pytest
35
from isodate import parse_datetime
@@ -10,12 +12,26 @@
1012
from flexmeasures.api.tests.utils import check_deprecation
1113
from flexmeasures.api.v3_0.tests.utils import message_for_trigger_schedule
1214
from flexmeasures.data.models.data_sources import DataSource
15+
from flexmeasures.data.models.time_series import Sensor
1316
from flexmeasures.utils.job_utils import work_on_rq
1417
from flexmeasures.data.services.scheduling import handle_scheduling_exception
1518
from flexmeasures.tests.utils import get_test_sensor
1619
from flexmeasures.utils.unit_utils import ur
1720

1821

22+
@pytest.fixture(scope="module")
23+
def setup_capacity_sensor_on_asset_in_supplier_account(db, setup_generic_assets):
24+
sensor = Sensor(
25+
name="supplier account capacity sensor",
26+
unit="MW",
27+
event_resolution=timedelta(minutes=15),
28+
generic_asset=setup_generic_assets["test_wind_turbine"],
29+
)
30+
db.session.add(sensor)
31+
db.session.commit()
32+
return sensor
33+
34+
1935
@pytest.mark.parametrize(
2036
"requesting_user", ["[email protected]"], indirect=True
2137
)
@@ -98,6 +114,51 @@ def test_trigger_schedule_with_invalid_flexmodel(
98114
)
99115

100116

117+
@pytest.mark.parametrize(
118+
"flex_config, field",
119+
[
120+
("flex-context", "site-consumption-capacity"),
121+
("flex-model", "consumption-capacity"),
122+
],
123+
)
124+
@pytest.mark.parametrize(
125+
"requesting_user", ["[email protected]"], indirect=True
126+
)
127+
def test_trigger_schedule_with_unreadable_flex_config_sensor(
128+
app,
129+
add_battery_assets,
130+
setup_capacity_sensor_on_asset_in_supplier_account,
131+
keep_scheduling_queue_empty,
132+
flex_config,
133+
field,
134+
requesting_user,
135+
):
136+
sensor = add_battery_assets["Test battery"].sensors[0]
137+
message = message_for_trigger_schedule()
138+
message.setdefault(flex_config, {})
139+
message[flex_config][field] = {
140+
"sensor": setup_capacity_sensor_on_asset_in_supplier_account.id
141+
}
142+
143+
with app.test_client() as client:
144+
trigger_schedule_response = client.post(
145+
url_for("SensorAPI:trigger_schedule", id=sensor.id),
146+
json=message,
147+
)
148+
149+
print("Server responded with:\n%s" % trigger_schedule_response.json)
150+
check_deprecation(trigger_schedule_response, deprecation=None, sunset=None)
151+
assert trigger_schedule_response.status_code == 403
152+
assert (
153+
str({"json": {flex_config: {field: "sensor"}}})
154+
in trigger_schedule_response.json["message"]
155+
)
156+
assert (
157+
setup_capacity_sensor_on_asset_in_supplier_account.name
158+
in trigger_schedule_response.json["message"]
159+
)
160+
161+
101162
@pytest.mark.parametrize("message", [message_for_trigger_schedule(unknown_prices=True)])
102163
@pytest.mark.parametrize(
103164
"requesting_user", ["[email protected]"], indirect=True

0 commit comments

Comments
 (0)