diff --git a/apps/emqx_gateway_jt808/test/emqx_jt808_SUITE.erl b/apps/emqx_gateway_jt808/test/emqx_jt808_SUITE.erl index c8c747c1c..04a7ad0ad 100644 --- a/apps/emqx_gateway_jt808/test/emqx_jt808_SUITE.erl +++ b/apps/emqx_gateway_jt808/test/emqx_jt808_SUITE.erl @@ -68,6 +68,22 @@ gateway.jt808 { } ">>). +%% erlfmt-ignore +-define(CONF_INVALID_AUTH_SERVER, <<" +gateway.jt808 { + listeners.tcp.default { + bind = ", ?PORT_STR, " + } + proto { + auth { + allow_anonymous = false + registry = \"abc://abc\" + authentication = \"abc://abc\" + } + } +} +">>). + all() -> emqx_common_test_helpers:all(?MODULE). @@ -77,6 +93,9 @@ init_per_suite(Config) -> end_per_suite(_Config) -> ok. +init_per_testcase(Case = t_case_invalid_auth_reg_server, Config) -> + Apps = boot_apps(Case, ?CONF_INVALID_AUTH_SERVER, Config), + [{suite_apps, Apps} | Config]; init_per_testcase(Case = t_case02_anonymous_register_and_auth, Config) -> Apps = boot_apps(Case, ?CONF_ANONYMOUS, Config), [{suite_apps, Apps} | Config]; @@ -146,7 +165,7 @@ do_escape(<>, Acc) -> client_regi_procedure(Socket) -> client_regi_procedure(Socket, <<"123456">>). -client_regi_procedure(Socket, ExpectedCode) -> +client_regi_procedure(Socket, ExpectedAuthCode) -> % % send REGISTER % @@ -170,7 +189,7 @@ client_regi_procedure(Socket, ExpectedCode) -> ok = gen_tcp:send(Socket, S1), {ok, Packet} = gen_tcp:recv(Socket, 0, 500), - AckPacket = <>, + AckPacket = <>, Size2 = size(AckPacket), MsgId2 = ?MS_REGISTER_ACK, MsgSn2 = 0, @@ -181,7 +200,7 @@ client_regi_procedure(Socket, ExpectedCode) -> ?LOGT("S2=~p", [binary_to_hex_string(S2)]), ?LOGT("Packet=~p", [binary_to_hex_string(Packet)]), ?assertEqual(S2, Packet), - {ok, ExpectedCode}. + {ok, ExpectedAuthCode}. client_auth_procedure(Socket, AuthCode) -> ?LOGT("start auth procedure", []), @@ -2683,6 +2702,52 @@ t_case34_dl_0x8805_single_mm_data_ctrl(_Config) -> ok = gen_tcp:close(Socket). +t_case_invalid_auth_reg_server(_Config) -> + {ok, Socket} = gen_tcp:connect({127, 0, 0, 1}, ?PORT, [binary, {active, false}]), + % + % send REGISTER + % + Manuf = <<"examp">>, + Model = <<"33333333333333333333">>, + DevId = <<"1234567">>, + + Color = 3, + Plate = <<"ujvl239">>, + RegisterPacket = + <<58:?WORD, 59:?WORD, Manuf/binary, Model/binary, DevId/binary, Color, Plate/binary>>, + MsgId = ?MC_REGISTER, + PhoneBCD = <<16#00, 16#01, 16#23, 16#45, 16#67, 16#89>>, + MsgSn = 78, + Size = size(RegisterPacket), + Header = + <>, + S1 = gen_packet(Header, RegisterPacket), + + %% Send REGISTER Packet + ok = gen_tcp:send(Socket, S1), + %% Receive REGISTER_ACK Packet + {ok, RecvPacket} = gen_tcp:recv(Socket, 0, 50_000), + + %% No AuthCode when register failed + AuthCode = <<>>, + + AckPacket = <>, + Size2 = size(AckPacket), + MsgId2 = ?MS_REGISTER_ACK, + MsgSn2 = 0, + Header2 = + <>, + S2 = gen_packet(Header2, AckPacket), + + ?LOGT("S1=~p", [binary_to_hex_string(S1)]), + ?LOGT("S2=~p", [binary_to_hex_string(S2)]), + ?LOGT("Received REGISTER_ACK Packet=~p", [binary_to_hex_string(RecvPacket)]), + + ?assertEqual(S2, RecvPacket), + ok. + t_create_ALLOW_invalid_auth_config(_Config) -> test_invalid_config(create, true).