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  }