github.com/aavshr/aws-sdk-go@v1.41.3/private/protocol/eventstream/eventstreamtest/testing_1_7.go (about) 1 //go:build go1.7 2 // +build go1.7 3 4 package eventstreamtest 5 6 import ( 7 "bytes" 8 "encoding/base64" 9 "encoding/json" 10 "fmt" 11 "testing" 12 13 "github.com/aavshr/aws-sdk-go/private/protocol/eventstream" 14 ) 15 16 // AssertMessageEqual compares to event stream messages, and determines if they 17 // are equal. Will trigger an testing Error if components of the message are 18 // not equal. 19 func AssertMessageEqual(t testing.TB, a, b eventstream.Message, msg ...interface{}) { 20 getHelper(t)() 21 22 ah, err := bytesEncodeHeader(a.Headers) 23 if err != nil { 24 t.Fatalf("unable to encode a's headers, %v", err) 25 } 26 27 bh, err := bytesEncodeHeader(b.Headers) 28 if err != nil { 29 t.Fatalf("unable to encode b's headers, %v", err) 30 } 31 32 if !bytes.Equal(ah, bh) { 33 aj, err := json.Marshal(ah) 34 if err != nil { 35 t.Fatalf("unable to json encode a's headers, %v", err) 36 } 37 bj, err := json.Marshal(bh) 38 if err != nil { 39 t.Fatalf("unable to json encode b's headers, %v", err) 40 } 41 t.Errorf("%s\nexpect headers: %v\n\t%v\nactual headers: %v\n\t%v\n", 42 fmt.Sprint(msg...), 43 base64.StdEncoding.EncodeToString(ah), aj, 44 base64.StdEncoding.EncodeToString(bh), bj, 45 ) 46 } 47 48 if !bytes.Equal(a.Payload, b.Payload) { 49 t.Errorf("%s\nexpect payload: %v\nactual payload: %v\n", 50 fmt.Sprint(msg...), 51 base64.StdEncoding.EncodeToString(a.Payload), 52 base64.StdEncoding.EncodeToString(b.Payload), 53 ) 54 } 55 } 56 57 func bytesEncodeHeader(v eventstream.Headers) ([]byte, error) { 58 var buf bytes.Buffer 59 if err := eventstream.EncodeHeaders(&buf, v); err != nil { 60 return nil, err 61 } 62 63 return buf.Bytes(), nil 64 }