github.com/release-engineering/exodus-rsync@v1.11.2/internal/gw/client_whoami_test.go (about)

     1  package gw
     2  
     3  import (
     4  	"context"
     5  	"io"
     6  	"net/http"
     7  	"reflect"
     8  	"strings"
     9  	"testing"
    10  
    11  	"github.com/release-engineering/exodus-rsync/internal/args"
    12  	"github.com/release-engineering/exodus-rsync/internal/log"
    13  )
    14  
    15  func TestClientWhoAmI(t *testing.T) {
    16  	cfg := testConfig(t)
    17  
    18  	clientIface, err := Package.NewClient(context.Background(), cfg)
    19  	if clientIface == nil {
    20  		t.Errorf("failed to create client, err = %v", err)
    21  	}
    22  
    23  	ctx := context.Background()
    24  	ctx = log.NewContext(ctx, log.Package.NewLogger(args.Config{}))
    25  
    26  	gw := newFakeGw(t, clientIface.(*client))
    27  
    28  	gw.nextHTTPResponse = &http.Response{
    29  		Status:     "200 OK",
    30  		StatusCode: 200,
    31  		Body:       io.NopCloser(strings.NewReader("{\"a\": \"b\", \"c\": \"d\"}")),
    32  	}
    33  
    34  	whoami, err := clientIface.WhoAmI(ctx)
    35  
    36  	// It should have succeeded.
    37  	if err != nil {
    38  		t.Errorf("whoami failed: %v", err)
    39  	}
    40  
    41  	// The return value should be simply the raw data decoded from JSON.
    42  	expected := map[string]interface{}{
    43  		"a": "b",
    44  		"c": "d",
    45  	}
    46  	if !reflect.DeepEqual(whoami, expected) {
    47  		t.Errorf("unexpected whoami response, actual: %v, expected: %v", whoami, expected)
    48  	}
    49  }