@@ -141,22 +141,96 @@ func TestGetUserByPhoneNumber(t *testing.T) {
141
141
}
142
142
}
143
143
144
+ func TestGetUserByProviderIDNotFound (t * testing.T ) {
145
+ mockUsers := []byte (`{ "users": [] }` )
146
+ s := echoServer (mockUsers , t )
147
+ defer s .Close ()
148
+
149
+ userRecord , err := s .Client .GetUserByProviderID (context .Background (), "google.com" , "google_uid1" )
150
+ want := "cannot find user from providerID: { google.com, google_uid1 }"
151
+ if userRecord != nil || err == nil || err .Error () != want || ! IsUserNotFound (err ) {
152
+ t .Errorf ("GetUserByProviderID() = (%v, %q); want = (nil, %q)" , userRecord , err , want )
153
+ }
154
+ }
155
+
156
+ func TestGetUserByProviderId (t * testing.T ) {
157
+ cases := []struct {
158
+ providerID string
159
+ providerUID string
160
+ want string
161
+ }{
162
+ {
163
+ "google.com" ,
164
+ "google_uid1" ,
165
+ `{"federatedUserId":[{"providerId":"google.com","rawId":"google_uid1"}]}` ,
166
+ }, {
167
+ "phone" ,
168
+ "+15555550001" ,
169
+ `{"phoneNumber":["+15555550001"]}` ,
170
+ }, {
171
+ "email" ,
172
+ "user@example.com" ,
173
+ `{"email":["user@example.com"]}` ,
174
+ },
175
+ }
176
+
177
+ // The resulting user isn't parsed, so it just needs to exist (even if it's empty).
178
+ mockUsers := []byte (`{ "users": [{}] }` )
179
+ s := echoServer (mockUsers , t )
180
+ defer s .Close ()
181
+
182
+ for _ , tc := range cases {
183
+ t .Run (tc .providerID + ":" + tc .providerUID , func (t * testing.T ) {
184
+
185
+ _ , err := s .Client .GetUserByProviderID (context .Background (), tc .providerID , tc .providerUID )
186
+ if err != nil {
187
+ t .Fatalf ("GetUserByProviderID() = %q" , err )
188
+ }
189
+
190
+ got := string (s .Rbody )
191
+ if got != tc .want {
192
+ t .Errorf ("GetUserByProviderID() Req = %v; want = %v" , got , tc .want )
193
+ }
194
+
195
+ wantPath := "/projects/mock-project-id/accounts:lookup"
196
+ if s .Req [0 ].RequestURI != wantPath {
197
+ t .Errorf ("GetUserByProviderID() URL = %q; want = %q" , s .Req [0 ].RequestURI , wantPath )
198
+ }
199
+ })
200
+ }
201
+ }
202
+
144
203
func TestInvalidGetUser (t * testing.T ) {
145
204
client := & Client {
146
205
baseClient : & baseClient {},
147
206
}
207
+
148
208
user , err := client .GetUser (context .Background (), "" )
149
209
if user != nil || err == nil {
150
210
t .Errorf ("GetUser('') = (%v, %v); want = (nil, error)" , user , err )
151
211
}
212
+
152
213
user , err = client .GetUserByEmail (context .Background (), "" )
153
214
if user != nil || err == nil {
154
215
t .Errorf ("GetUserByEmail('') = (%v, %v); want = (nil, error)" , user , err )
155
216
}
217
+
156
218
user , err = client .GetUserByPhoneNumber (context .Background (), "" )
157
219
if user != nil || err == nil {
158
220
t .Errorf ("GetUserPhoneNumber('') = (%v, %v); want = (nil, error)" , user , err )
159
221
}
222
+
223
+ userRecord , err := client .GetUserByProviderID (context .Background (), "" , "google_uid1" )
224
+ want := "providerID must be a non-empty string"
225
+ if userRecord != nil || err == nil || err .Error () != want {
226
+ t .Errorf ("GetUserByProviderID() = (%v, %q); want = (nil, %q)" , userRecord , err , want )
227
+ }
228
+
229
+ userRecord , err = client .GetUserByProviderID (context .Background (), "google.com" , "" )
230
+ want = "providerUID must be a non-empty string"
231
+ if userRecord != nil || err == nil || err .Error () != want {
232
+ t .Errorf ("GetUserByProviderID() = (%v, %q); want = (nil, %q)" , userRecord , err , want )
233
+ }
160
234
}
161
235
162
236
// Checks to see if the users list contain the given uids. Order is ignored.
0 commit comments