github.com/vtorhonen/terraform@v0.9.0-beta2.0.20170307220345-5d894e4ffda7/builtin/providers/azurerm/validators_test.go (about)

     1  package azurerm
     2  
     3  import "testing"
     4  
     5  func TestValidateJsonString(t *testing.T) {
     6  	type testCases struct {
     7  		Value    string
     8  		ErrCount int
     9  	}
    10  
    11  	invalidCases := []testCases{
    12  		{
    13  			Value:    `{0:"1"}`,
    14  			ErrCount: 1,
    15  		},
    16  		{
    17  			Value:    `{'abc':1}`,
    18  			ErrCount: 1,
    19  		},
    20  		{
    21  			Value:    `{"def":}`,
    22  			ErrCount: 1,
    23  		},
    24  		{
    25  			Value:    `{"xyz":[}}`,
    26  			ErrCount: 1,
    27  		},
    28  	}
    29  
    30  	for _, tc := range invalidCases {
    31  		_, errors := validateJsonString(tc.Value, "json")
    32  		if len(errors) != tc.ErrCount {
    33  			t.Fatalf("Expected %q to trigger a validation error.", tc.Value)
    34  		}
    35  	}
    36  
    37  	validCases := []testCases{
    38  		{
    39  			Value:    ``,
    40  			ErrCount: 0,
    41  		},
    42  		{
    43  			Value:    `{}`,
    44  			ErrCount: 0,
    45  		},
    46  		{
    47  			Value:    `{"abc":["1","2"]}`,
    48  			ErrCount: 0,
    49  		},
    50  	}
    51  
    52  	for _, tc := range validCases {
    53  		_, errors := validateJsonString(tc.Value, "json")
    54  		if len(errors) != tc.ErrCount {
    55  			t.Fatalf("Expected %q not to trigger a validation error.", tc.Value)
    56  		}
    57  	}
    58  }