MCPcopy Index your code
hub / github.com/coder/coder / TestValidateFromAddr

Function TestValidateFromAddr

coderd/notifications/dispatch/smtp_internal_test.go:46–118  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

44}
45
46func TestValidateFromAddr(t *testing.T) {
47 t.Parallel()
48
49 tests := []struct {
50 name string
51 input string
52 expectedEnvelope string
53 expectedHeader string
54 expectedErrContain string
55 }{
56 {
57 name: "bare email address",
58 input: "system@coder.com",
59 expectedEnvelope: "system@coder.com",
60 expectedHeader: "system@coder.com",
61 },
62 {
63 name: "email with display name",
64 input: "Coder System <system@coder.com>",
65 expectedEnvelope: "system@coder.com",
66 expectedHeader: "Coder System <system@coder.com>",
67 },
68 {
69 name: "email with quoted display name",
70 input: `"Coder Notifications" <notifications@coder.com>`,
71 expectedEnvelope: "notifications@coder.com",
72 expectedHeader: `"Coder Notifications" <notifications@coder.com>`,
73 },
74 {
75 name: "email with special characters in display name",
76 input: `"O'Brien, John" <john@example.com>`,
77 expectedEnvelope: "john@example.com",
78 expectedHeader: `"O'Brien, John" <john@example.com>`,
79 },
80 {
81 name: "invalid email address",
82 input: "not-an-email",
83 expectedErrContain: "parse 'from' address",
84 },
85 {
86 name: "empty string",
87 input: "",
88 expectedErrContain: "parse 'from' address",
89 },
90 {
91 name: "multiple addresses",
92 input: "a@example.com, b@example.com",
93 expectedErrContain: "'from' address not defined",
94 },
95 }
96
97 handler := &SMTPHandler{}
98
99 for _, tc := range tests {
100 t.Run(tc.name, func(t *testing.T) {
101 t.Parallel()
102
103 envelope, header, err := handler.validateFromAddr(tc.input)

Callers

nothing calls this directly

Calls 4

validateFromAddrMethod · 0.95
RunMethod · 0.65
ErrorMethod · 0.45
EqualMethod · 0.45

Tested by

no test coverage detected