package inbound import ( "log/slog" "os" "testing" "postern/internal/db" "postern/internal/model" ) func TestInboundRCPTTO(t *testing.T) { pdb, err := os.CreateTemp(t.TempDir(), "postern.db") if err != nil { t.Fatal(err) } d, err := db.OpenDB(&db.Config{DBPath: pdb.Name()}) if err != nil { t.Fatal(err) } s := &smtpSession{ db: d, } rcptUser := "testuser" tx, err := d.GetWriteTx(t.Context()) if err != nil { t.Fatal(err) } _, err = db.InsertUser(t.Context(), tx, rcptUser, []byte{}) if err != nil { t.Fatal(err) } err = tx.Commit() if err != nil { t.Fatal(err) } err = d.InsertUserAddress(t.Context(), rcptUser, "testuser@example.com") if err != nil { t.Fatal(err) } s.authenticatedUser = &model.SMTPAuth{ ID: 1, Name: "smtpuser", } s.logger = slog.Default() // Test "+" addresses err = s.Rcpt("testuser+tag+two@example.com", nil) if err != nil { t.Fatal(err) } // provoke non existing user err = s.Rcpt("notexist+tag+two@example.com", nil) if err == nil { t.Fatal("expected 550 error, got nil") } }