| package allowed |
| |
| import ( |
| "testing" |
| ) |
| |
| func TestAllowed(t *testing.T) { |
| testCases := []struct { |
| allowed []string |
| value string |
| expected bool |
| message string |
| }{ |
| { |
| allowed: []string{}, |
| value: "test@example.org", |
| expected: false, |
| message: "empty", |
| }, |
| { |
| allowed: []string{AnyDomain}, |
| value: "test@example.org", |
| expected: true, |
| message: "AnyDomain", |
| }, |
| { |
| allowed: []string{""}, |
| value: "test@", |
| expected: false, |
| message: "empty domain", |
| }, |
| { |
| allowed: []string{"test@example.org"}, |
| value: "test@example.org", |
| expected: true, |
| message: "single email", |
| }, |
| { |
| allowed: []string{"example.org"}, |
| value: "test@example.org", |
| expected: true, |
| message: "single domain", |
| }, |
| { |
| allowed: []string{"example.org"}, |
| value: "test@google.com", |
| expected: false, |
| message: "single domain fail", |
| }, |
| { |
| allowed: []string{"google.com", "chromium.org", "special@example.com"}, |
| value: "test@google.com", |
| expected: true, |
| message: "multi domain", |
| }, |
| { |
| allowed: []string{"google.com", "chromium.org", "special@example.com"}, |
| value: "foo@chromium.org", |
| expected: true, |
| message: "multi domain 2", |
| }, |
| { |
| allowed: []string{"google.com", "chromium.org", "special@example.com"}, |
| value: "special@example.com", |
| expected: true, |
| message: "multi domain 3", |
| }, |
| { |
| allowed: []string{"google.com", "chromium.org", "special@example.com"}, |
| value: "missing@example.com", |
| expected: false, |
| message: "multi domain 4", |
| }, |
| } |
| |
| for _, tc := range testCases { |
| w := NewAllowedFromList(tc.allowed) |
| if got, want := w.Member(tc.value), tc.expected; got != want { |
| t.Errorf("Failed case Got %v Want %v: %s", got, want, tc.message) |
| } |
| } |
| } |