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:
parent
50500060d5
commit
5aefc18098
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user