1package awstesting_test 2 3import ( 4 "encoding/xml" 5 "testing" 6 7 "github.com/aws/aws-sdk-go/awstesting" 8) 9 10func TestAssertJSON(t *testing.T) { 11 cases := []struct { 12 e, a string 13 asserts bool 14 }{ 15 { 16 e: `{"RecursiveStruct":{"RecursiveMap":{"foo":{"NoRecurse":"foo"},"bar":{"NoRecurse":"bar"}}}}`, 17 a: `{"RecursiveStruct":{"RecursiveMap":{"bar":{"NoRecurse":"bar"},"foo":{"NoRecurse":"foo"}}}}`, 18 asserts: true, 19 }, 20 } 21 22 for i, c := range cases { 23 mockT := &testing.T{} 24 if awstesting.AssertJSON(mockT, c.e, c.a) != c.asserts { 25 t.Error("Assert JSON result was not expected.", i) 26 } 27 } 28} 29 30func TestAssertXML(t *testing.T) { 31 cases := []struct { 32 e, a string 33 asserts bool 34 container struct { 35 XMLName xml.Name `xml:"OperationRequest"` 36 NS string `xml:"xmlns,attr"` 37 RecursiveStruct struct { 38 XMLName xml.Name 39 RecursiveMap struct { 40 XMLName xml.Name 41 Entries []struct { 42 Key string `xml:"key"` 43 Value struct { 44 XMLName xml.Name `xml:"value"` 45 NoRecurse string 46 } 47 } `xml:"entry"` 48 } 49 } 50 } 51 }{ 52 { 53 e: `<OperationRequest xmlns="https://foo/"><RecursiveStruct xmlns="https://foo/"><RecursiveMap xmlns="https://foo/"><entry xmlns="https://foo/"><key xmlns="https://foo/">foo</key><value xmlns="https://foo/"><NoRecurse xmlns="https://foo/">foo</NoRecurse></value></entry><entry xmlns="https://foo/"><key xmlns="https://foo/">bar</key><value xmlns="https://foo/"><NoRecurse xmlns="https://foo/">bar</NoRecurse></value></entry></RecursiveMap></RecursiveStruct></OperationRequest>`, 54 a: `<OperationRequest xmlns="https://foo/"><RecursiveStruct xmlns="https://foo/"><RecursiveMap xmlns="https://foo/"><entry xmlns="https://foo/"><key xmlns="https://foo/">foo</key><value xmlns="https://foo/"><NoRecurse xmlns="https://foo/">foo</NoRecurse></value></entry><entry xmlns="https://foo/"><key xmlns="https://foo/">bar</key><value xmlns="https://foo/"><NoRecurse xmlns="https://foo/">bar</NoRecurse></value></entry></RecursiveMap></RecursiveStruct></OperationRequest>`, 55 asserts: true, 56 }, 57 { 58 e: `<OperationRequest xmlns="https://foo/"><RecursiveStruct xmlns="https://foo/"><RecursiveMap xmlns="https://foo/"><entry xmlns="https://foo/"><key xmlns="https://foo/">foo</key><value xmlns="https://foo/"><NoRecurse xmlns="https://foo/">foo</NoRecurse></value></entry><entry xmlns="https://foo/"><key xmlns="https://foo/">bar</key><value xmlns="https://foo/"><NoRecurse xmlns="https://foo/">bar</NoRecurse></value></entry></RecursiveMap></RecursiveStruct></OperationRequest>`, 59 a: `<OperationRequest xmlns="https://foo/"><RecursiveStruct xmlns="https://foo/"><RecursiveMap xmlns="https://foo/"><entry xmlns="https://foo/"><key xmlns="https://foo/">baz</key><value xmlns="https://foo/"><NoRecurse xmlns="https://foo/">baz</NoRecurse></value></entry></RecursiveMap></RecursiveStruct></OperationRequest>`, 60 asserts: false, 61 }, 62 } 63 64 for i, c := range cases { 65 mockT := &testing.T{} 66 if awstesting.AssertXML(mockT, c.e, c.a) != c.asserts { 67 t.Error("Assert XML result was not expected.", i) 68 } 69 } 70} 71 72func TestAssertQuery(t *testing.T) { 73 cases := []struct { 74 e, a string 75 asserts bool 76 }{ 77 { 78 e: `Action=OperationName&Version=2014-01-01&Foo=val1&Bar=val2`, 79 a: `Action=OperationName&Version=2014-01-01&Foo=val2&Bar=val3`, 80 asserts: false, 81 }, 82 { 83 e: `Action=OperationName&Version=2014-01-01&Foo=val1&Bar=val2`, 84 a: `Action=OperationName&Version=2014-01-01&Foo=val1&Bar=val2`, 85 asserts: true, 86 }, 87 } 88 89 for i, c := range cases { 90 mockT := &testing.T{} 91 if awstesting.AssertQuery(mockT, c.e, c.a) != c.asserts { 92 t.Error("Assert Query result was not expected.", i) 93 } 94 } 95} 96