func TestHTTPMembersAPIAddSuccess(t *testing.T) { wantAction := &membersAPIActionAdd{ peerURLs: types.URLs([]url.URL{ {Scheme: "http", Host: "127.0.0.1:7002"}, }), } mAPI := &httpMembersAPI{ client: &actionAssertingHTTPClient{ t: t, act: wantAction, resp: http.Response{ StatusCode: http.StatusCreated, }, body: []byte(`{"id":"94088180e21eb87b","peerURLs":["http://127.0.0.1:7002"]}`), }, } wantResponseMember := &Member{ ID: "94088180e21eb87b", PeerURLs: []string{"http://127.0.0.1:7002"}, } m, err := mAPI.Add(context.Background(), "http://127.0.0.1:7002") if err != nil { t.Errorf("got non-nil err: %#v", err) } if !reflect.DeepEqual(wantResponseMember, m) { t.Errorf("incorrect Member: want=%#v got=%#v", wantResponseMember, m) } }
func TestMembersAPIActionUpdate(t *testing.T) { ep := url.URL{Scheme: "http", Host: "example.com"} act := &membersAPIActionUpdate{ memberID: "0xabcd", peerURLs: types.URLs([]url.URL{ {Scheme: "https", Host: "127.0.0.1:8081"}, {Scheme: "http", Host: "127.0.0.1:8080"}, }), } wantURL := &url.URL{ Scheme: "http", Host: "example.com", Path: "/v2/members/0xabcd", } wantHeader := http.Header{ "Content-Type": []string{"application/json"}, } wantBody := []byte(`{"peerURLs":["https://127.0.0.1:8081","http://127.0.0.1:8080"]}`) got := *act.HTTPRequest(ep) err := assertRequest(got, "PUT", wantURL, wantHeader, wantBody) if err != nil { t.Error(err.Error()) } }
func TestMemberCreateRequestMarshal(t *testing.T) { req := memberCreateOrUpdateRequest{ PeerURLs: types.URLs([]url.URL{ {Scheme: "http", Host: "127.0.0.1:8081"}, {Scheme: "https", Host: "127.0.0.1:8080"}, }), } want := []byte(`{"peerURLs":["http://127.0.0.1:8081","https://127.0.0.1:8080"]}`) got, err := json.Marshal(&req) if err != nil { t.Fatalf("Marshal returned unexpected err=%v", err) } if !reflect.DeepEqual(want, got) { t.Fatalf("Failed to marshal memberCreateRequest: want=%s, got=%s", want, got) } }