1/*2Maddy Mail Server - Composable all-in-one email server.3Copyright © 2019-2020 Max Mazurov <fox.cpp@disroot.org>, Maddy Mail Server contributors45This program is free software: you can redistribute it and/or modify6it under the terms of the GNU General Public License as published by7the Free Software Foundation, either version 3 of the License, or8(at your option) any later version.910This program is distributed in the hope that it will be useful,11but WITHOUT ANY WARRANTY; without even the implied warranty of12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the13GNU General Public License for more details.1415You should have received a copy of the GNU General Public License16along with this program. If not, see <https://www.gnu.org/licenses/>.17*/1819package config2021import (22 "reflect"23 "testing"24)2526func TestStandardizeAddress(t *testing.T) {27 for _, expected := range []Endpoint{28 {Original: "tcp://0.0.0.0:10025", Scheme: "tcp", Host: "0.0.0.0", Port: "10025"},29 {Original: "tcp://[::]:10025", Scheme: "tcp", Host: "::", Port: "10025"},30 {Original: "tcp:127.0.0.1:10025", Scheme: "tcp", Host: "127.0.0.1", Port: "10025"},31 {Original: "unix://path", Scheme: "unix", Host: "", Path: "path", Port: ""},32 {Original: "unix:path", Scheme: "unix", Host: "", Path: "path", Port: ""},33 {Original: "unix:/path", Scheme: "unix", Host: "", Path: "/path", Port: ""},34 {Original: "unix:///path", Scheme: "unix", Host: "", Path: "/path", Port: ""},35 {Original: "unix://also/path", Scheme: "unix", Host: "", Path: "also/path", Port: ""},36 {Original: "unix:///also/path", Scheme: "unix", Host: "", Path: "/also/path", Port: ""},37 {Original: "tls://0.0.0.0:10025", Scheme: "tls", Host: "0.0.0.0", Port: "10025"},38 {Original: "tls:0.0.0.0:10025", Scheme: "tls", Host: "0.0.0.0", Port: "10025"},39 } {40 actual, err := ParseEndpoint(expected.Original)41 if err != nil {42 t.Errorf("Unexpected failure for %s: %v", expected.Original, err)43 return44 }4546 if !reflect.DeepEqual(expected, actual) {47 t.Errorf("Didn't parse URL %q correctly\ngot %#v\nwant %#v", expected.Original, actual, expected)48 continue49 }5051 if actual.String() != expected.Original {52 t.Errorf("actual.String() = %s, want %s", actual.String(), expected.Original)53 }54 }55}