test(gw): jt808 register failed

This commit is contained in:
JimMoen 2024-05-10 22:42:14 +08:00
parent f8fd4d15be
commit 3c7e8a3bd5
No known key found for this signature in database
1 changed files with 68 additions and 3 deletions

View File

@ -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() -> all() ->
emqx_common_test_helpers:all(?MODULE). emqx_common_test_helpers:all(?MODULE).
@ -77,6 +93,9 @@ init_per_suite(Config) ->
end_per_suite(_Config) -> end_per_suite(_Config) ->
ok. 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) -> init_per_testcase(Case = t_case02_anonymous_register_and_auth, Config) ->
Apps = boot_apps(Case, ?CONF_ANONYMOUS, Config), Apps = boot_apps(Case, ?CONF_ANONYMOUS, Config),
[{suite_apps, Apps} | Config]; [{suite_apps, Apps} | Config];
@ -146,7 +165,7 @@ do_escape(<<C, Rest/binary>>, Acc) ->
client_regi_procedure(Socket) -> client_regi_procedure(Socket) ->
client_regi_procedure(Socket, <<"123456">>). client_regi_procedure(Socket, <<"123456">>).
client_regi_procedure(Socket, ExpectedCode) -> client_regi_procedure(Socket, ExpectedAuthCode) ->
% %
% send REGISTER % send REGISTER
% %
@ -170,7 +189,7 @@ client_regi_procedure(Socket, ExpectedCode) ->
ok = gen_tcp:send(Socket, S1), ok = gen_tcp:send(Socket, S1),
{ok, Packet} = gen_tcp:recv(Socket, 0, 500), {ok, Packet} = gen_tcp:recv(Socket, 0, 500),
AckPacket = <<MsgSn:?WORD, 0, ExpectedCode/binary>>, AckPacket = <<MsgSn:?WORD, 0, ExpectedAuthCode/binary>>,
Size2 = size(AckPacket), Size2 = size(AckPacket),
MsgId2 = ?MS_REGISTER_ACK, MsgId2 = ?MS_REGISTER_ACK,
MsgSn2 = 0, MsgSn2 = 0,
@ -181,7 +200,7 @@ client_regi_procedure(Socket, ExpectedCode) ->
?LOGT("S2=~p", [binary_to_hex_string(S2)]), ?LOGT("S2=~p", [binary_to_hex_string(S2)]),
?LOGT("Packet=~p", [binary_to_hex_string(Packet)]), ?LOGT("Packet=~p", [binary_to_hex_string(Packet)]),
?assertEqual(S2, Packet), ?assertEqual(S2, Packet),
{ok, ExpectedCode}. {ok, ExpectedAuthCode}.
client_auth_procedure(Socket, AuthCode) -> client_auth_procedure(Socket, AuthCode) ->
?LOGT("start auth procedure", []), ?LOGT("start auth procedure", []),
@ -2683,6 +2702,52 @@ t_case34_dl_0x8805_single_mm_data_ctrl(_Config) ->
ok = gen_tcp:close(Socket). 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 =
<<MsgId:?WORD, ?RESERVE:2, ?NO_FRAGMENT:1, ?NO_ENCRYPT:3, ?MSG_SIZE(Size), PhoneBCD/binary,
MsgSn:?WORD>>,
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 = <<MsgSn:?WORD, 1, AuthCode/binary>>,
Size2 = size(AckPacket),
MsgId2 = ?MS_REGISTER_ACK,
MsgSn2 = 0,
Header2 =
<<MsgId2:?WORD, ?RESERVE:2, ?NO_FRAGMENT:1, ?NO_ENCRYPT:3, ?MSG_SIZE(Size2),
PhoneBCD/binary, MsgSn2:?WORD>>,
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) -> t_create_ALLOW_invalid_auth_config(_Config) ->
test_invalid_config(create, true). test_invalid_config(create, true).