diff --git a/test/fun_core/basic_signup_whitelist_test.exs b/test/fun_core/basic_signup_whitelist_test.exs index c200ea7..3370f0b 100644 --- a/test/fun_core/basic_signup_whitelist_test.exs +++ b/test/fun_core/basic_signup_whitelist_test.exs @@ -1,10 +1,37 @@ defmodule FunCore.BasicSignupWhitelistTest do use ExUnit.Case - def mail_whitelisted_fun(signups_allowed, email_received) do - signups_allowed == email_received + defp normalize(email) do + email |> String.trim() end + defp addresses_as_list(addresses_str) do + addresses_str + |> String.split(",") + |> Enum.map(&normalize/1) + end + + def mail_whitelisted_fun(signups_allowed, email_received) do + case signups_allowed do + nil -> false + "*" -> true + list_str -> email_received in addresses_as_list(list_str) + end + end + + test "addresses_as_list" do + assert addresses_as_list("joe@example.com, jane@example.com") == [ + "joe@example.com", + "jane@example.com" + ] + end + + test "jane in list" do + lst = addresses_as_list("joe@example.com, jane@example.com") + assert "jane@example.com" in lst + end + + # test for normalize describe "Not whitelisted when allowed list is" do test "not set" do refute(mail_whitelisted_fun(nil, "joe@example.com")) @@ -15,7 +42,13 @@ defmodule FunCore.BasicSignupWhitelistTest do end end - test "When set and mach, then whitelisted" do - assert(mail_whitelisted_fun("joe@example.com", "joe@example.com")) + describe "Whitelisted when" do + test "*" do + assert(mail_whitelisted_fun("*", "jane@example.com")) + end + + test "Multiple set and one match" do + assert(mail_whitelisted_fun("joe@example.com, jane@example.com", "jane@example.com")) + end end end