chore: add tests case
This commit is contained in:
parent
bd6e9503e6
commit
d7bf8e97d2
|
@ -130,7 +130,6 @@ end_per_testcase(TestCase, _Config) when
|
||||||
->
|
->
|
||||||
ok = emqx_bridge_http_connector_test_server:stop(),
|
ok = emqx_bridge_http_connector_test_server:stop(),
|
||||||
persistent_term:erase({?MODULE, times_called}),
|
persistent_term:erase({?MODULE, times_called}),
|
||||||
%emqx_bridge_testlib:delete_all_bridges(),
|
|
||||||
emqx_bridge_v2_testlib:delete_all_bridges(),
|
emqx_bridge_v2_testlib:delete_all_bridges(),
|
||||||
emqx_bridge_v2_testlib:delete_all_connectors(),
|
emqx_bridge_v2_testlib:delete_all_connectors(),
|
||||||
emqx_common_test_helpers:call_janitor(),
|
emqx_common_test_helpers:call_janitor(),
|
||||||
|
|
|
@ -0,0 +1,140 @@
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
%% Copyright (c) 2023 EMQ Technologies Co., Ltd. All Rights Reserved.
|
||||||
|
%%
|
||||||
|
%% Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
%% you may not use this file except in compliance with the License.
|
||||||
|
%% You may obtain a copy of the License at
|
||||||
|
%% http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
%%
|
||||||
|
%% Unless required by applicable law or agreed to in writing, software
|
||||||
|
%% distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
%% See the License for the specific language governing permissions and
|
||||||
|
%% limitations under the License.
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
|
||||||
|
-module(emqx_bridge_http_v2_SUITE).
|
||||||
|
|
||||||
|
-compile(nowarn_export_all).
|
||||||
|
-compile(export_all).
|
||||||
|
|
||||||
|
-import(emqx_mgmt_api_test_util, [request/3]).
|
||||||
|
-import(emqx_common_test_helpers, [on_exit/1]).
|
||||||
|
-import(emqx_bridge_http_SUITE, [start_http_server/1, stop_http_server/1]).
|
||||||
|
|
||||||
|
-include_lib("eunit/include/eunit.hrl").
|
||||||
|
-include_lib("common_test/include/ct.hrl").
|
||||||
|
-include_lib("snabbkaffe/include/snabbkaffe.hrl").
|
||||||
|
-include_lib("emqx/include/asserts.hrl").
|
||||||
|
|
||||||
|
-define(BRIDGE_TYPE, <<"http">>).
|
||||||
|
-define(BRIDGE_NAME, atom_to_binary(?MODULE)).
|
||||||
|
-define(CONNECTOR_NAME, atom_to_binary(?MODULE)).
|
||||||
|
|
||||||
|
all() ->
|
||||||
|
emqx_common_test_helpers:all(?MODULE).
|
||||||
|
|
||||||
|
groups() ->
|
||||||
|
[].
|
||||||
|
|
||||||
|
init_per_suite(Config0) ->
|
||||||
|
Config =
|
||||||
|
case os:getenv("DEBUG_CASE") of
|
||||||
|
[_ | _] = DebugCase ->
|
||||||
|
CaseName = list_to_atom(DebugCase),
|
||||||
|
[{debug_case, CaseName} | Config0];
|
||||||
|
_ ->
|
||||||
|
Config0
|
||||||
|
end,
|
||||||
|
Apps = emqx_cth_suite:start(
|
||||||
|
[
|
||||||
|
emqx,
|
||||||
|
emqx_conf,
|
||||||
|
emqx_connector,
|
||||||
|
emqx_bridge_http,
|
||||||
|
emqx_bridge,
|
||||||
|
emqx_rule_engine
|
||||||
|
],
|
||||||
|
#{work_dir => emqx_cth_suite:work_dir(Config)}
|
||||||
|
),
|
||||||
|
emqx_mgmt_api_test_util:init_suite(),
|
||||||
|
[{apps, Apps} | Config].
|
||||||
|
|
||||||
|
end_per_suite(Config) ->
|
||||||
|
Apps = ?config(apps, Config),
|
||||||
|
emqx_mgmt_api_test_util:end_suite(),
|
||||||
|
ok = emqx_cth_suite:stop(Apps),
|
||||||
|
ok.
|
||||||
|
|
||||||
|
suite() ->
|
||||||
|
[{timetrap, {seconds, 60}}].
|
||||||
|
|
||||||
|
init_per_testcase(_TestCase, Config) ->
|
||||||
|
Server = start_http_server(#{response_delay_ms => 0}),
|
||||||
|
[{http_server, Server} | Config].
|
||||||
|
|
||||||
|
end_per_testcase(_TestCase, Config) ->
|
||||||
|
case ?config(http_server, Config) of
|
||||||
|
undefined -> ok;
|
||||||
|
Server -> stop_http_server(Server)
|
||||||
|
end,
|
||||||
|
emqx_bridge_v2_testlib:delete_all_bridges(),
|
||||||
|
emqx_bridge_v2_testlib:delete_all_connectors(),
|
||||||
|
emqx_common_test_helpers:call_janitor(),
|
||||||
|
ok.
|
||||||
|
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
%% tests
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
|
||||||
|
t_compose_connector_url_and_action_path(Config) ->
|
||||||
|
Path = <<"/foo/bar">>,
|
||||||
|
ConnectorCfg = make_connector_config(Config),
|
||||||
|
ActionCfg = make_action_config([{path, Path} | Config]),
|
||||||
|
CreateConfig = [
|
||||||
|
{bridge_type, ?BRIDGE_TYPE},
|
||||||
|
{bridge_name, ?BRIDGE_NAME},
|
||||||
|
{bridge_config, ActionCfg},
|
||||||
|
{connector_type, ?BRIDGE_TYPE},
|
||||||
|
{connector_name, ?CONNECTOR_NAME},
|
||||||
|
{connector_config, ConnectorCfg}
|
||||||
|
],
|
||||||
|
{ok, _} = emqx_bridge_v2_testlib:create_bridge(CreateConfig),
|
||||||
|
|
||||||
|
%% assert: the url returned v1 api is composed by the url of the connector and the
|
||||||
|
%% path of the action
|
||||||
|
#{port := Port} = ?config(http_server, Config),
|
||||||
|
ExpectedUrl = iolist_to_binary(io_lib:format("http://localhost:~p/foo/bar", [Port])),
|
||||||
|
{ok, {_, _, [Bridge]}} = emqx_bridge_testlib:list_bridges_api(),
|
||||||
|
?assertMatch(
|
||||||
|
#{<<"url">> := ExpectedUrl},
|
||||||
|
Bridge
|
||||||
|
),
|
||||||
|
ok.
|
||||||
|
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
%% helpers
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
|
||||||
|
make_connector_config(Config) ->
|
||||||
|
#{port := Port} = ?config(http_server, Config),
|
||||||
|
#{
|
||||||
|
<<"enable">> => true,
|
||||||
|
<<"url">> => iolist_to_binary(io_lib:format("http://localhost:~p", [Port])),
|
||||||
|
<<"headers">> => #{},
|
||||||
|
<<"pool_type">> => <<"hash">>,
|
||||||
|
<<"pool_size">> => 1
|
||||||
|
}.
|
||||||
|
|
||||||
|
make_action_config(Config) ->
|
||||||
|
Path = ?config(path, Config),
|
||||||
|
#{
|
||||||
|
<<"enable">> => true,
|
||||||
|
<<"connector">> => ?CONNECTOR_NAME,
|
||||||
|
<<"parameters">> => #{
|
||||||
|
<<"path">> => Path,
|
||||||
|
<<"method">> => <<"post">>,
|
||||||
|
<<"headers">> => #{},
|
||||||
|
<<"body">> => <<"${.}">>
|
||||||
|
}
|
||||||
|
}.
|
Loading…
Reference in New Issue