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 }