fix(redis): validate database number

This commit is contained in:
Ilya Averyanov 2023-06-13 16:20:24 +02:00
parent 2cc0ba1217
commit 9701c3f7a1
3 changed files with 18 additions and 7 deletions

View File

@ -157,22 +157,32 @@ t_create_with_config_values_wont_work(_Config) ->
).
t_create_invalid_config(_Config) ->
Config0 = raw_redis_auth_config(),
Config = maps:without([<<"server">>], Config0),
BaseAuthConfig = raw_redis_auth_config(),
test_create_invalid_config(
maps:without([<<"server">>], BaseAuthConfig),
"authentication.1.server"
),
test_create_invalid_config(
BaseAuthConfig#{<<"database">> => <<"-1">>},
"authentication.1.database"
).
test_create_invalid_config(InvalidAuthConfig, Path) ->
?assertMatch(
{error, #{
kind := validation_error,
matched_type := "authn:redis_single",
path := "authentication.1.server",
reason := required_field
path := Path
}},
emqx:update_config(?PATH, {create_authenticator, ?GLOBAL, Config})
emqx:update_config(?PATH, {create_authenticator, ?GLOBAL, InvalidAuthConfig})
),
?assertMatch([], emqx_config:get_raw([authentication])),
?assertEqual(
{error, {not_found, {chain, ?GLOBAL}}},
emqx_authentication:list_authenticators(?GLOBAL)
).
),
ok.
t_authenticate(_Config) ->
ok = lists:foreach(

View File

@ -294,7 +294,7 @@ redis_fields() ->
{pool_size, fun emqx_connector_schema_lib:pool_size/1},
{password, fun emqx_connector_schema_lib:password/1},
{database, #{
type => integer(),
type => non_neg_integer(),
default => 0,
desc => ?DESC("database")
}},

View File

@ -0,0 +1 @@
Fixed database number validation for Redis connector. Previously negative numbers were accepted as valid database numbers.