github.com/xmidt-org/webpa-common@v1.11.9/service/instance_test.go (about) 1 package service 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestFormatInstance(t *testing.T) { 11 var ( 12 testData = []struct { 13 scheme string 14 address string 15 port int 16 expected string 17 }{ 18 {"http", "somehost.com", 8080, "http://somehost.com:8080"}, 19 {"http", "somehost.com", 80, "http://somehost.com"}, 20 {"", "somehost.com", 8080, "https://somehost.com:8080"}, 21 {"https", "somehost.com", 8080, "https://somehost.com:8080"}, 22 {"https", "somehost.com", 80, "https://somehost.com:80"}, 23 {"ftp", "somehost.com", 1234, "ftp://somehost.com:1234"}, 24 {"http", "default.net", 0, "http://default.net"}, 25 {"", "default.net", 0, "https://default.net"}, 26 } 27 ) 28 29 for _, record := range testData { 30 t.Run(fmt.Sprintf("%s,%s,%d", record.scheme, record.address, record.port), func(t *testing.T) { 31 assert.Equal( 32 t, 33 record.expected, 34 FormatInstance(record.scheme, record.address, record.port), 35 ) 36 }) 37 } 38 } 39 40 func TestNormalizeInstance(t *testing.T) { 41 var ( 42 testData = []struct { 43 defaultScheme string 44 instance string 45 expected string 46 expectsError bool 47 }{ 48 {"", "", "", true}, 49 {"", " \t\n\r", "", true}, 50 {"", "blah:blah:blah", "blah:blah:blah", true}, 51 {"", " blah:blah:blah ", "blah:blah:blah", true}, 52 {"", "somehost.com:8080", "https://somehost.com:8080", false}, 53 {"", " somehost.com:8080 ", "https://somehost.com:8080", false}, 54 {"http", "somehost.com:8080", "http://somehost.com:8080", false}, 55 {"http", " somehost.com:8080 ", "http://somehost.com:8080", false}, 56 {"https", "somehost.com:8080", "https://somehost.com:8080", false}, 57 {"https", " somehost.com:8080 ", "https://somehost.com:8080", false}, 58 {"ftp", "somehost.com:8080", "ftp://somehost.com:8080", false}, 59 {"ftp", " somehost.com:8080 ", "ftp://somehost.com:8080", false}, 60 {"", "http://foobar.com", "http://foobar.com", false}, 61 {"http", "http://foobar.com", "http://foobar.com", false}, 62 {"https", "http://foobar.com", "http://foobar.com", false}, 63 } 64 ) 65 66 for _, record := range testData { 67 t.Run(fmt.Sprintf("%s,%s", record.defaultScheme, record.instance), func(t *testing.T) { 68 var ( 69 assert = assert.New(t) 70 actual, err = NormalizeInstance(record.defaultScheme, record.instance) 71 ) 72 73 assert.Equal(record.expected, actual) 74 if record.expectsError { 75 assert.Error(err) 76 } else { 77 assert.NoError(err) 78 } 79 }) 80 } 81 }