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  }