github.com/hartzell/terraform@v0.8.6-0.20180503104400-0cc9e050ecd4/helper/structure/normalize_json_test.go (about)

     1  package structure
     2  
     3  import (
     4  	"testing"
     5  )
     6  
     7  func TestNormalizeJsonString_valid(t *testing.T) {
     8  	// Well formatted and valid.
     9  	validJson := `{
    10     "abc": {
    11        "def": 123,
    12        "xyz": [
    13           {
    14              "a": "ホリネズミ"
    15           },
    16           {
    17              "b": "1\\n2"
    18           }
    19        ]
    20     }
    21  }`
    22  	expected := `{"abc":{"def":123,"xyz":[{"a":"ホリネズミ"},{"b":"1\\n2"}]}}`
    23  
    24  	actual, err := NormalizeJsonString(validJson)
    25  	if err != nil {
    26  		t.Fatalf("Expected not to throw an error while parsing JSON, but got: %s", err)
    27  	}
    28  
    29  	if actual != expected {
    30  		t.Fatalf("Got:\n\n%s\n\nExpected:\n\n%s\n", actual, expected)
    31  	}
    32  
    33  	// Well formatted but not valid,
    34  	// missing closing square bracket.
    35  	invalidJson := `{
    36     "abc": {
    37        "def": 123,
    38        "xyz": [
    39           {
    40              "a": "1"
    41           }
    42        }
    43     }
    44  }`
    45  	actual, err = NormalizeJsonString(invalidJson)
    46  	if err == nil {
    47  		t.Fatalf("Expected to throw an error while parsing JSON, but got: %s", err)
    48  	}
    49  
    50  	// We expect the invalid JSON to be shown back to us again.
    51  	if actual != invalidJson {
    52  		t.Fatalf("Got:\n\n%s\n\nExpected:\n\n%s\n", actual, invalidJson)
    53  	}
    54  
    55  	// Verify that it leaves strings alone
    56  	testString := "2016-07-28t04:07:02z\nsomething else"
    57  	expected = "2016-07-28t04:07:02z\nsomething else"
    58  	actual, err = NormalizeJsonString(testString)
    59  	if err == nil {
    60  		t.Fatalf("Expected to throw an error while parsing JSON, but got: %s", err)
    61  	}
    62  
    63  	if actual != expected {
    64  		t.Fatalf("Got:\n\n%s\n\nExpected:\n\n%s\n", actual, expected)
    65  	}
    66  }
    67  
    68  func TestNormalizeJsonString_invalid(t *testing.T) {
    69  	// Well formatted but not valid,
    70  	// missing closing squre bracket.
    71  	invalidJson := `{
    72     "abc": {
    73        "def": 123,
    74        "xyz": [
    75           {
    76              "a": "1"
    77           }
    78        }
    79     }
    80  }`
    81  	expected := `{"abc":{"def":123,"xyz":[{"a":"ホリネズミ"},{"b":"1\\n2"}]}}`
    82  	actual, err := NormalizeJsonString(invalidJson)
    83  	if err == nil {
    84  		t.Fatalf("Expected to throw an error while parsing JSON, but got: %s", err)
    85  	}
    86  
    87  	// We expect the invalid JSON to be shown back to us again.
    88  	if actual != invalidJson {
    89  		t.Fatalf("Got:\n\n%s\n\nExpected:\n\n%s\n", expected, invalidJson)
    90  	}
    91  }