Whitelist two addresses

Intermediate steps not committed - addresses_as_list, because long stack
trace in output. turned out 'nil' case needs to be explicit now. I
prefer the small functions though instead of whole implementation in
case statement.
This commit is contained in:
Willem van den Ende 2025-09-14 16:39:56 +01:00
parent 50500060d5
commit 5aefc18098

View File

@ -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