diff --git a/v1/client.go b/v1/client.go index f8b9c25..1c3f9de 100644 --- a/v1/client.go +++ b/v1/client.go @@ -10,6 +10,7 @@ import ( "net/http" "net/url" "strconv" + "strings" "time" "github.com/google/go-querystring/query" @@ -23,7 +24,7 @@ func New(url string, token string) *MgClient { // NewWithClient initializes the MgClient with specified *http.Client. func NewWithClient(url string, token string, client *http.Client) *MgClient { return &MgClient{ - URL: url, + URL: strings.TrimRight(url, "/"), Token: token, httpClient: client, } diff --git a/v1/client_test.go b/v1/client_test.go index 45004f2..2059d11 100644 --- a/v1/client_test.go +++ b/v1/client_test.go @@ -39,6 +39,23 @@ func (t *MGClientTest) transportURL(path string) string { return "/api/transport/v1/" + strings.TrimLeft(path, "/") } +func (t *MGClientTest) Test_URLWithTrailingSlash() { + c := New("https://mg-test.retailcrm.pro/", "mg_token") + c.Debug = true + + defer gock.Off() + t.gock(). + Get(t.transportURL("channels")). + Reply(http.StatusOK). + JSON([]ChannelListItem{{ID: 1}}) + + data, status, err := c.TransportChannels(Channels{Active: true}) + t.Require().NoError(err) + t.Assert().Equal(http.StatusOK, status) + + t.Assert().Len(data, 1) +} + func (t *MGClientTest) Test_TransportChannels() { c := t.client() chName := "WhatsApp Channel"