emqx_rule_engine_api_SUITE.erl 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. -module(emqx_rule_engine_api_SUITE).
  2. -compile(nowarn_export_all).
  3. -compile(export_all).
  4. -include_lib("eunit/include/eunit.hrl").
  5. -include_lib("common_test/include/ct.hrl").
  6. -define(CONF_DEFAULT, <<"rule_engine {rules {}}">>).
  7. all() ->
  8. emqx_common_test_helpers:all(?MODULE).
  9. init_per_suite(Config) ->
  10. application:load(emqx_conf),
  11. ok = emqx_config:init_load(emqx_rule_engine_schema, ?CONF_DEFAULT),
  12. ok = emqx_common_test_helpers:start_apps([emqx_conf, emqx_rule_engine]),
  13. Config.
  14. end_per_suite(_Config) ->
  15. emqx_common_test_helpers:stop_apps([emqx_conf, emqx_rule_engine]),
  16. ok.
  17. init_per_testcase(_, Config) ->
  18. Config.
  19. end_per_testcase(_, _Config) ->
  20. ok.
  21. t_crud_rule_api(_Config) ->
  22. RuleID = <<"my_rule">>,
  23. Params0 = #{
  24. <<"description">> => <<"A simple rule">>,
  25. <<"enable">> => true,
  26. <<"id">> => RuleID,
  27. <<"outputs">> => [#{<<"function">> => <<"console">>}],
  28. <<"sql">> => <<"SELECT * from \"t/1\"">>
  29. },
  30. {201, Rule} = emqx_rule_engine_api:'/rules'(post, #{body => Params0}),
  31. %% if we post again with the same params, it return with 400 "rule id already exists"
  32. ?assertMatch({400, #{code := _, message := _Message}},
  33. emqx_rule_engine_api:'/rules'(post, #{body => Params0})),
  34. ?assertEqual(RuleID, maps:get(id, Rule)),
  35. {200, Rules} = emqx_rule_engine_api:'/rules'(get, #{}),
  36. ct:pal("RList : ~p", [Rules]),
  37. ?assert(length(Rules) > 0),
  38. {200, Rule1} = emqx_rule_engine_api:'/rules/:id'(get, #{bindings => #{id => RuleID}}),
  39. ct:pal("RShow : ~p", [Rule1]),
  40. ?assertEqual(Rule, Rule1),
  41. {200, Rule2} = emqx_rule_engine_api:'/rules/:id'(put, #{
  42. bindings => #{id => RuleID},
  43. body => Params0#{<<"sql">> => <<"select * from \"t/b\"">>}
  44. }),
  45. {200, Rule3} = emqx_rule_engine_api:'/rules/:id'(get, #{bindings => #{id => RuleID}}),
  46. %ct:pal("RShow : ~p", [Rule3]),
  47. ?assertEqual(Rule3, Rule2),
  48. ?assertEqual(<<"select * from \"t/b\"">>, maps:get(sql, Rule3)),
  49. ?assertMatch({204}, emqx_rule_engine_api:'/rules/:id'(delete,
  50. #{bindings => #{id => RuleID}})),
  51. %ct:pal("Show After Deleted: ~p", [NotFound]),
  52. ?assertMatch({404, #{code := _, message := _Message}},
  53. emqx_rule_engine_api:'/rules/:id'(get, #{bindings => #{id => RuleID}})),
  54. ok.