| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- %%--------------------------------------------------------------------
- %% 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_authn_schema_tests).
- -include_lib("eunit/include/eunit.hrl").
- %% schema error
- -define(ERR(Reason), {error, Reason}).
- union_member_selector_mongo_test_() ->
- Check = fun(Txt) -> check(emqx_authn_mongodb, Txt) end,
- [
- {"unknown", fun() ->
- ?assertMatch(
- ?ERR(#{field_name := mongo_type, expected := _}),
- Check("{mongo_type: foobar}")
- )
- end},
- {"single", fun() ->
- ?assertMatch(
- ?ERR(#{matched_type := "authn:mongo_single"}),
- Check("{mongo_type: single}")
- )
- end},
- {"replica-set", fun() ->
- ?assertMatch(
- ?ERR(#{matched_type := "authn:mongo_rs"}),
- Check("{mongo_type: rs}")
- )
- end},
- {"sharded", fun() ->
- ?assertMatch(
- ?ERR(#{matched_type := "authn:mongo_sharded"}),
- Check("{mongo_type: sharded}")
- )
- end}
- ].
- union_member_selector_jwt_test_() ->
- Check = fun(Txt) -> check(emqx_authn_jwt, Txt) end,
- [
- {"unknown", fun() ->
- ?assertMatch(
- ?ERR(#{field_name := use_jwks, expected := "true | false"}),
- Check("{use_jwks = 1}")
- )
- end},
- {"jwks", fun() ->
- ?assertMatch(
- ?ERR(#{matched_type := "authn:jwt_jwks"}),
- Check("{use_jwks = true}")
- )
- end},
- {"publick-key", fun() ->
- ?assertMatch(
- ?ERR(#{matched_type := "authn:jwt_public_key"}),
- Check("{use_jwks = false, public_key = 1}")
- )
- end},
- {"hmac-based", fun() ->
- ?assertMatch(
- ?ERR(#{matched_type := "authn:jwt_hmac"}),
- Check("{use_jwks = false}")
- )
- end}
- ].
- union_member_selector_redis_test_() ->
- Check = fun(Txt) -> check(emqx_authn_redis, Txt) end,
- [
- {"unknown", fun() ->
- ?assertMatch(
- ?ERR(#{field_name := redis_type, expected := _}),
- Check("{redis_type = 1}")
- )
- end},
- {"single", fun() ->
- ?assertMatch(
- ?ERR(#{matched_type := "authn:redis_single"}),
- Check("{redis_type = single}")
- )
- end},
- {"cluster", fun() ->
- ?assertMatch(
- ?ERR(#{matched_type := "authn:redis_cluster"}),
- Check("{redis_type = cluster}")
- )
- end},
- {"sentinel", fun() ->
- ?assertMatch(
- ?ERR(#{matched_type := "authn:redis_sentinel"}),
- Check("{redis_type = sentinel}")
- )
- end}
- ].
- union_member_selector_http_test_() ->
- Check = fun(Txt) -> check(emqx_authn_http, Txt) end,
- [
- {"unknown", fun() ->
- ?assertMatch(
- ?ERR(#{field_name := method, expected := _}),
- Check("{method = 1}")
- )
- end},
- {"get", fun() ->
- ?assertMatch(
- ?ERR(#{matched_type := "authn:http_get"}),
- Check("{method = get}")
- )
- end},
- {"post", fun() ->
- ?assertMatch(
- ?ERR(#{matched_type := "authn:http_post"}),
- Check("{method = post}")
- )
- end}
- ].
- check(Module, HoconConf) ->
- emqx_hocon:check(Module, ["authentication= ", HoconConf]).
|