feat(calendar): validate org defaults in calendar.settings
Documented keys default_location, default_duration_minutes, default_recurrence; unknown keys (week_patterns) passthrough; invalid known shape returns 400. Refs EventHub/EventHubBack#63
This commit is contained in:
@@ -62,7 +62,7 @@ test_update_calendar(Token, CalId) ->
|
||||
ct:pal(" OK").
|
||||
|
||||
test_update_calendar_settings(Token, CalId) ->
|
||||
ct:pal(" TEST: Persist calendar.settings.week_patterns"),
|
||||
ct:pal(" TEST: Persist calendar.settings week_patterns + org defaults"),
|
||||
Path = <<"/v1/calendars/", CalId/binary>>,
|
||||
Settings = #{
|
||||
<<"week_patterns">> => [
|
||||
@@ -73,12 +73,26 @@ test_update_calendar_settings(Token, CalId) ->
|
||||
#{<<"weekday">> => 1, <<"time">> => <<"10:00">>, <<"duration">> => 60, <<"title">> => <<"Open">>}
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
<<"default_location">> => #{
|
||||
<<"address">> => <<"ул. Пример, 1">>,
|
||||
<<"lat">> => 55.75,
|
||||
<<"lon">> => 37.61
|
||||
},
|
||||
<<"default_duration_minutes">> => 60,
|
||||
<<"default_recurrence">> => #{
|
||||
<<"enabled">> => true,
|
||||
<<"freq">> => <<"WEEKLY">>,
|
||||
<<"interval">> => 1
|
||||
}
|
||||
},
|
||||
Updated = api_test_runner:client_put(Path, Token, #{settings => Settings}),
|
||||
?assertEqual(Settings, maps:get(<<"settings">>, Updated)),
|
||||
Got = api_test_runner:client_get(Path, Token),
|
||||
?assertEqual(Settings, maps:get(<<"settings">>, Got)),
|
||||
Bad = api_test_runner:client_request(put, Path, Token,
|
||||
jsx:encode(#{settings => #{default_location => #{address => <<"">>}}})),
|
||||
?assertMatch({ok, 400, _, _}, Bad),
|
||||
ct:pal(" OK").
|
||||
|
||||
test_update_calendar_forbidden(OtherToken, CalId) ->
|
||||
|
||||
Reference in New Issue
Block a user