fix(message_validation): take `enable` into account
This commit is contained in:
parent
7aa287c6c1
commit
e767f01e0a
|
@ -153,24 +153,26 @@ do_reindex_positions(Validations) ->
|
||||||
|
|
||||||
do_insert(Pos, Validation) ->
|
do_insert(Pos, Validation) ->
|
||||||
#{
|
#{
|
||||||
|
enable := Enabled,
|
||||||
name := Name,
|
name := Name,
|
||||||
topics := Topics
|
topics := Topics
|
||||||
} = Validation,
|
} = Validation,
|
||||||
maybe_create_metrics(Name),
|
maybe_create_metrics(Name),
|
||||||
do_insert_into_tab(Name, Validation, Pos),
|
do_insert_into_tab(Name, Validation, Pos),
|
||||||
update_topic_index(Name, Pos, Topics),
|
Enabled andalso update_topic_index(Name, Pos, Topics),
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
do_update(OldValidation, Pos, NewValidation) ->
|
do_update(OldValidation, Pos, NewValidation) ->
|
||||||
#{topics := OldTopics} = OldValidation,
|
#{topics := OldTopics} = OldValidation,
|
||||||
#{
|
#{
|
||||||
|
enable := Enabled,
|
||||||
name := Name,
|
name := Name,
|
||||||
topics := NewTopics
|
topics := NewTopics
|
||||||
} = NewValidation,
|
} = NewValidation,
|
||||||
maybe_create_metrics(Name),
|
maybe_create_metrics(Name),
|
||||||
do_insert_into_tab(Name, NewValidation, Pos),
|
do_insert_into_tab(Name, NewValidation, Pos),
|
||||||
delete_topic_index(Name, OldTopics),
|
delete_topic_index(Name, OldTopics),
|
||||||
update_topic_index(Name, Pos, NewTopics),
|
Enabled andalso update_topic_index(Name, Pos, NewTopics),
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
do_delete(Validation) ->
|
do_delete(Validation) ->
|
||||||
|
|
|
@ -508,6 +508,42 @@ t_reorder(_Config) ->
|
||||||
|
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
|
t_enable_disable_via_update(_Config) ->
|
||||||
|
Topic = <<"t">>,
|
||||||
|
|
||||||
|
Name1 = <<"foo">>,
|
||||||
|
AlwaysFailCheck = sql_check(<<"select * where false">>),
|
||||||
|
Validation1 = validation(Name1, [AlwaysFailCheck], #{<<"topics">> => Topic}),
|
||||||
|
|
||||||
|
{201, _} = insert(Validation1#{<<"enable">> => false}),
|
||||||
|
?assertIndexOrder([], Topic),
|
||||||
|
|
||||||
|
C = connect(<<"c1">>),
|
||||||
|
{ok, _, [_]} = emqtt:subscribe(C, Topic),
|
||||||
|
|
||||||
|
ok = publish(C, Topic, #{}),
|
||||||
|
?assertReceive({publish, _}),
|
||||||
|
|
||||||
|
{200, _} = update(Validation1#{<<"enable">> => true}),
|
||||||
|
?assertIndexOrder([Name1], Topic),
|
||||||
|
|
||||||
|
ok = publish(C, Topic, #{}),
|
||||||
|
?assertNotReceive({publish, _}),
|
||||||
|
|
||||||
|
{200, _} = update(Validation1#{<<"enable">> => false}),
|
||||||
|
?assertIndexOrder([], Topic),
|
||||||
|
|
||||||
|
ok = publish(C, Topic, #{}),
|
||||||
|
?assertReceive({publish, _}),
|
||||||
|
|
||||||
|
%% Test index after delete; ensure it's in the index before
|
||||||
|
{200, _} = update(Validation1#{<<"enable">> => true}),
|
||||||
|
?assertIndexOrder([Name1], Topic),
|
||||||
|
{204, _} = delete(Name1),
|
||||||
|
?assertIndexOrder([], Topic),
|
||||||
|
|
||||||
|
ok.
|
||||||
|
|
||||||
%% Check the `all_pass' strategy
|
%% Check the `all_pass' strategy
|
||||||
t_all_pass(_Config) ->
|
t_all_pass(_Config) ->
|
||||||
Name1 = <<"foo">>,
|
Name1 = <<"foo">>,
|
||||||
|
|
Loading…
Reference in New Issue