44 "encoding/json"
55 "net/http"
66 "net/http/httptest"
7+ "os"
78 "testing"
89 "time"
910
@@ -20,7 +21,8 @@ func NewClient(accountSid string, authToken string) *twilio.Client {
2021 c := & twilio.Client {
2122 Credentials : creds ,
2223 HTTPClient : http .DefaultClient ,
23- BaseURL : "twilio.com" ,
24+ Edge : os .Getenv ("TWILIO_EDGE" ),
25+ Region : os .Getenv ("TWILIO_REGION" ),
2426 }
2527
2628 return c
@@ -103,7 +105,6 @@ func TestClient_SetTimeoutTimesOut(t *testing.T) {
103105 time .Sleep (100 * time .Microsecond )
104106 encoder := json .NewEncoder (writer )
105107 err := encoder .Encode (& d )
106-
107108 if err != nil {
108109 t .Error (err )
109110 }
@@ -126,7 +127,6 @@ func TestClient_SetTimeoutSucceeds(t *testing.T) {
126127 time .Sleep (100 * time .Microsecond )
127128 encoder := json .NewEncoder (writer )
128129 err := encoder .Encode (& d )
129-
130130 if err != nil {
131131 t .Error (err )
132132 }
@@ -140,3 +140,88 @@ func TestClient_SetTimeoutSucceeds(t *testing.T) {
140140 assert .NoError (t , err )
141141 assert .Equal (t , 200 , resp .StatusCode )
142142}
143+
144+ //nolint:paralleltest
145+ func TestClient_BuildHostSetRegion (t * testing.T ) {
146+ // Region set via client
147+ client := NewClient ("user" , "pass" )
148+ client .Region = "region"
149+ assert .Equal (t , "https://api.region.twilio.com" , client .BuildHost ("https://api.twilio.com" ))
150+ assert .Equal (t , "https://api.region.twilio.com" , client .BuildHost ("https://api.urlRegion.twilio.com" ))
151+
152+ // Region set via env vars
153+ err := os .Setenv ("TWILIO_REGION" , "region" )
154+ if err != nil {
155+ t .Errorf ("unexpected error: %v" , err )
156+ }
157+
158+ client = NewClient ("user" , "pass" )
159+ assert .Equal (t , "https://api.region.twilio.com" , client .BuildHost ("https://api.twilio.com" ))
160+
161+ err = os .Setenv ("TWILIO_REGION" , "" )
162+ if err != nil {
163+ t .Errorf ("unexpected error: %v" , err )
164+ }
165+
166+ // Region set via url
167+ assert .Equal (t , "https://api.region.twilio.com" , client .BuildHost ("https://api.region.twilio.com" ))
168+ }
169+
170+ //nolint:paralleltest
171+ func TestClient_BuildHostSetEdgeDefaultRegion (t * testing.T ) {
172+ // Edge set via client
173+ client := NewClient ("user" , "pass" )
174+ client .Edge = "edge"
175+ assert .Equal (t , "https://api.edge.us1.twilio.com" , client .BuildHost ("https://api.twilio.com" ))
176+
177+ // Edge set via env vars
178+ err := os .Setenv ("TWILIO_EDGE" , "edge" )
179+ if err != nil {
180+ t .Errorf ("unexpected error: %v" , err )
181+ }
182+
183+ client = NewClient ("user" , "pass" )
184+ assert .Equal (t , "https://api.edge.us1.twilio.com" , client .BuildHost ("https://api.twilio.com" ))
185+
186+ err = os .Setenv ("TWILIO_EDGE" , "" )
187+ if err != nil {
188+ t .Errorf ("unexpected error: %v" , err )
189+ }
190+ }
191+
192+ //nolint:paralleltest
193+ func TestClient_BuildHostSetEdgeRegion (t * testing.T ) {
194+ // Edge and Region set via client
195+ client := NewClient ("user" , "pass" )
196+ client .Edge = "edge"
197+ assert .Equal (t , "https://api.edge.region.twilio.com" , client .BuildHost ("https://api.region.twilio.com" ))
198+ client .Region = "region"
199+ assert .Equal (t , "https://api.edge.region.twilio.com" , client .BuildHost ("https://api.twilio.com" ))
200+ assert .Equal (t , "https://api.edge.region.twilio.com" , client .BuildHost ("https://api.urlEdge.urlRegion.twilio.com" ))
201+
202+ // Edge and Region set via env vars
203+ err := os .Setenv ("TWILIO_EDGE" , "edge" )
204+ if err != nil {
205+ t .Errorf ("unexpected error: %v" , err )
206+ }
207+
208+ err = os .Setenv ("TWILIO_REGION" , "region" )
209+ if err != nil {
210+ t .Errorf ("unexpected error: %v" , err )
211+ }
212+
213+ assert .Equal (t , "https://api.edge.region.twilio.com" , client .BuildHost ("https://api.twilio.com" ))
214+ assert .Equal (t , "https://api.edge.region.twilio.com" , client .BuildHost ("https://api.urlEdge.urlRegion.twilio.com" ))
215+
216+ err = os .Setenv ("TWILIO_REGION" , "" )
217+ if err != nil {
218+ t .Errorf ("unexpected error: %v" , err )
219+ }
220+
221+ err = os .Setenv ("TWILIO_EDGE" , "" )
222+ if err != nil {
223+ t .Errorf ("unexpected error: %v" , err )
224+ }
225+
226+ assert .Equal (t , "https://api.edge.region.twilio.com" , client .BuildHost ("https://api.edge.region.twilio.com" ))
227+ }
0 commit comments