/* diodemail - send-only smtp server * Copyright (c) 2024 Gnarwhal * * This file is part of diodemail. * * diodemail is free software: you can redistribute it and/or modify it under the terms of * 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. * * diodemail is distributed in the hope that it will be useful, but WITHOUT ANY * 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 * diodemail. If not, see . */ package smtp import ( "testing" ) func TestPathPatterns(t *testing.T) { var tests = []struct { pattern string matches bool group string } { { "", true, "test@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", }, { "", false, "", }, { "", false, "", }, { "<@nope>", false, "", }, { "", 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) } } }) } }