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  }