2024-10-02 15:01:29 +00:00
|
|
|
/* diodemail - send-only smtp server
|
|
|
|
* Copyright (c) 2024 Gnarwhal
|
|
|
|
*
|
2024-10-03 15:12:20 +00:00
|
|
|
* This file is part of diodemail.
|
2024-10-02 15:01:29 +00:00
|
|
|
*
|
2024-10-03 15:12:20 +00:00
|
|
|
* diodemail is free software: you can redistribute it and/or modify it under the terms of
|
2024-10-02 15:01:29 +00:00
|
|
|
* the GNU General Public License as published by the Free Software Foundation,
|
|
|
|
* either version 3 of the License, or (at your option) any later version.
|
|
|
|
*
|
2024-10-03 15:12:20 +00:00
|
|
|
* diodemail is distributed in the hope that it will be useful, but WITHOUT ANY
|
2024-10-02 15:01:29 +00:00
|
|
|
* WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
|
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
|
|
* more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License along with
|
2024-10-03 15:12:20 +00:00
|
|
|
* diodemail. If not, see <https://www.gnu.org/licenses/>.
|
2024-10-02 15:01:29 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
package smtp
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestPathPatterns(t *testing.T) {
|
|
|
|
var tests = []struct {
|
|
|
|
pattern string
|
|
|
|
matches bool
|
|
|
|
group string
|
|
|
|
} {
|
|
|
|
{
|
|
|
|
"<test@example.com>",
|
2024-10-05 00:20:17 +00:00
|
|
|
true, "test@example.com",
|
2024-10-02 15:01:29 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
"<test@example.com",
|
|
|
|
false, "",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"<test@sub-domain.example.com>",
|
|
|
|
true, "test@sub-domain.example.com",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"<テスト@何か.com>",
|
|
|
|
true, "テスト@何か.com",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"<@source-path.com:test@example.com>",
|
|
|
|
true, "test@example.com",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"<@second-path.com,@source-path.com:test@example.com>",
|
|
|
|
true, "test@example.com",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"<test@example-.com>",
|
|
|
|
false, "",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"<test@example!.com>",
|
|
|
|
false, "",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"<@nope>",
|
|
|
|
false, "",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"<nope>",
|
|
|
|
false, "",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"<>",
|
|
|
|
true, "",
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, test := range tests {
|
|
|
|
t.Run(test.pattern, func(t *testing.T) {
|
|
|
|
match := ReversePath.FindStringSubmatch(test.pattern)
|
|
|
|
if match == nil {
|
|
|
|
if test.matches {
|
|
|
|
t.Errorf("unxpectedly did not match")
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
if !test.matches {
|
|
|
|
t.Errorf("unexpectedly matched: %v", match[0])
|
|
|
|
} else if match[1] != test.group {
|
|
|
|
t.Errorf("got %v, expected %v", match[1], test.group)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|