emqx_tls_lib_tests.erl 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. %%--------------------------------------------------------------------
  2. %% Copyright (c) 2021 EMQ Technologies Co., Ltd. All Rights Reserved.
  3. %%
  4. %% Licensed under the Apache License, Version 2.0 (the "License");
  5. %% you may not use this file except in compliance with the License.
  6. %% You may obtain a copy of the License at
  7. %%
  8. %% http://www.apache.org/licenses/LICENSE-2.0
  9. %%
  10. %% Unless required by applicable law or agreed to in writing, software
  11. %% distributed under the License is distributed on an "AS IS" BASIS,
  12. %% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. %% See the License for the specific language governing permissions and
  14. %% limitations under the License.
  15. %%--------------------------------------------------------------------
  16. -module(emqx_tls_lib_tests).
  17. -include_lib("eunit/include/eunit.hrl").
  18. %% one of the cipher suite from tlsv1.2 and tlsv1.3 each
  19. -define(TLS_12_CIPHER, "ECDHE-ECDSA-AES256-GCM-SHA384").
  20. -define(TLS_13_CIPHER, "TLS_AES_256_GCM_SHA384").
  21. ensure_tls13_ciphers_added_test() ->
  22. Ciphers = emqx_tls_lib:integral_ciphers(['tlsv1.3'], [?TLS_12_CIPHER]),
  23. ?assert(lists:member(?TLS_12_CIPHER, Ciphers)),
  24. ?assert(lists:member(?TLS_13_CIPHER, Ciphers)).
  25. legacy_cipher_suites_test() ->
  26. Ciphers = emqx_tls_lib:integral_ciphers(['tlsv1.2'], [?TLS_12_CIPHER]),
  27. ?assertEqual([?TLS_12_CIPHER], Ciphers).
  28. use_default_ciphers_test() ->
  29. Ciphers = emqx_tls_lib:integral_ciphers(['tlsv1.3', 'tlsv1.2'], ""),
  30. ?assert(lists:member(?TLS_12_CIPHER, Ciphers)),
  31. ?assert(lists:member(?TLS_13_CIPHER, Ciphers)).
  32. ciphers_format_test_() ->
  33. String = ?TLS_13_CIPHER ++ "," ++ ?TLS_12_CIPHER,
  34. Binary = iolist_to_binary(String),
  35. List = [?TLS_13_CIPHER, ?TLS_12_CIPHER],
  36. [ {"string", fun() -> test_cipher_format(String) end}
  37. , {"binary", fun() -> test_cipher_format(Binary) end}
  38. , {"string-list", fun() -> test_cipher_format(List) end}
  39. ].
  40. test_cipher_format(Input) ->
  41. Ciphers = emqx_tls_lib:integral_ciphers(['tlsv1.3', 'tlsv1.2'], Input),
  42. ?assertEqual([?TLS_13_CIPHER, ?TLS_12_CIPHER], Ciphers).
  43. tls_versions_test() ->
  44. ?assert(lists:member('tlsv1.3', emqx_tls_lib:default_versions())).
  45. tls_version_unknown_test() ->
  46. ?assertEqual(emqx_tls_lib:default_versions(),
  47. emqx_tls_lib:integral_versions([])),
  48. ?assertEqual(emqx_tls_lib:default_versions(),
  49. emqx_tls_lib:integral_versions(<<>>)),
  50. ?assertEqual(emqx_tls_lib:default_versions(),
  51. emqx_tls_lib:integral_versions("foo")),
  52. ?assertError(#{reason := no_available_tls_version},
  53. emqx_tls_lib:integral_versions([foo])).
  54. cipher_suites_no_duplication_test() ->
  55. AllCiphers = emqx_tls_lib:default_ciphers(),
  56. ?assertEqual(length(AllCiphers), length(lists:usort(AllCiphers))).