36 lines
1002 B
Go
36 lines
1002 B
Go
package rules
|
|
|
|
import "testing"
|
|
|
|
func TestBlocklistRule_SenderBlocked_Rejects(t *testing.T) {
|
|
r := NewBlocklistRule([]string{"spam@test.com"})
|
|
result := r.Evaluate(EmailContext{Sender: "spam@test.com"})
|
|
if result.Accepted {
|
|
t.Fatal("expected reject for blocked sender")
|
|
}
|
|
}
|
|
|
|
func TestBlocklistRule_SenderNotBlocked_Accepts(t *testing.T) {
|
|
r := NewBlocklistRule([]string{"spam@test.com"})
|
|
result := r.Evaluate(EmailContext{Sender: "ok@test.com"})
|
|
if !result.Accepted {
|
|
t.Fatal("expected accept for non-blocked sender")
|
|
}
|
|
}
|
|
|
|
func TestBlocklistRule_EmptyList_Accepts(t *testing.T) {
|
|
r := NewBlocklistRule(nil)
|
|
result := r.Evaluate(EmailContext{Sender: "anyone@test.com"})
|
|
if !result.Accepted {
|
|
t.Fatal("empty blocklist should accept all")
|
|
}
|
|
}
|
|
|
|
func TestBlocklistRule_CaseInsensitive(t *testing.T) {
|
|
r := NewBlocklistRule([]string{"Spam@Test.com"})
|
|
result := r.Evaluate(EmailContext{Sender: "spam@test.com"})
|
|
if result.Accepted {
|
|
t.Fatal("blocklist should be case-insensitive")
|
|
}
|
|
}
|