github.com/lyft/flytestdlib@v0.3.12-0.20210213045714-8cdd111ecda1/config/url_test.go (about) 1 package config 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "reflect" 7 "testing" 8 9 "github.com/lyft/flytestdlib/internal/utils" 10 11 "github.com/stretchr/testify/assert" 12 ) 13 14 func TestURL_MarshalJSON(t *testing.T) { 15 validURLs := []string{ 16 "http://localhost:123", 17 "http://localhost", 18 "https://non-existent.com/path/to/something", 19 } 20 21 for i, validURL := range validURLs { 22 t.Run(fmt.Sprintf("Valid %v", i), func(t *testing.T) { 23 expected := URL{URL: utils.MustParseURL(validURL)} 24 25 b, err := expected.MarshalJSON() 26 assert.NoError(t, err) 27 28 actual := URL{} 29 err = actual.UnmarshalJSON(b) 30 assert.NoError(t, err) 31 32 assert.True(t, reflect.DeepEqual(expected, actual)) 33 }) 34 } 35 } 36 37 func TestURL_UnmarshalJSON(t *testing.T) { 38 invalidValues := []interface{}{ 39 "%gh&%ij", 40 123, 41 true, 42 } 43 for i, invalidURL := range invalidValues { 44 t.Run(fmt.Sprintf("Invalid %v", i), func(t *testing.T) { 45 raw, err := json.Marshal(invalidURL) 46 assert.NoError(t, err) 47 48 actual := URL{} 49 err = actual.UnmarshalJSON(raw) 50 assert.Error(t, err) 51 }) 52 } 53 54 t.Run("Invalid json", func(t *testing.T) { 55 actual := URL{} 56 err := actual.UnmarshalJSON([]byte{}) 57 assert.Error(t, err) 58 }) 59 }