@@ -45,7 +45,7 @@ public async Task GetUserById()
4545 } ;
4646 var userManager = this . CreateFirebaseUserManager ( handler ) ;
4747
48- var userRecord = await userManager . GetUserById ( "user1" ) ;
48+ var userRecord = await userManager . GetUserByIdAsync ( "user1" ) ;
4949
5050 Assert . Equal ( "user1" , userRecord . Uid ) ;
5151 Assert . Null ( userRecord . DisplayName ) ;
@@ -60,6 +60,9 @@ public async Task GetUserById()
6060 Assert . Empty ( userRecord . ProviderData ) ;
6161 Assert . Null ( userRecord . UserMetaData . CreationTimestamp ) ;
6262 Assert . Null ( userRecord . UserMetaData . LastSignInTimestamp ) ;
63+
64+ var request = NewtonsoftJsonSerializer . Instance . Deserialize < Dictionary < string , object > > ( handler . Request ) ;
65+ Assert . Equal ( new JArray ( "user1" ) , request [ "localId" ] ) ;
6366 }
6467
6568 [ Fact ]
@@ -99,7 +102,7 @@ public async Task GetUserByIdWithProperties()
99102 } ;
100103 var userManager = this . CreateFirebaseUserManager ( handler ) ;
101104
102- var userRecord = await userManager . GetUserById ( "user1" ) ;
105+ var userRecord = await userManager . GetUserByIdAsync ( "user1" ) ;
103106
104107 Assert . Equal ( "user1" , userRecord . Uid ) ;
105108 Assert . Equal ( "Test User" , userRecord . DisplayName ) ;
@@ -150,8 +153,145 @@ public async Task GetUserByIdUserNotFound()
150153 } ;
151154 var userManager = this . CreateFirebaseUserManager ( handler ) ;
152155
153- await Assert . ThrowsAsync < FirebaseException > (
154- async ( ) => await userManager . GetUserById ( "user1" ) ) ;
156+ var exception = await Assert . ThrowsAsync < FirebaseException > (
157+ async ( ) => await userManager . GetUserByIdAsync ( "user1" ) ) ;
158+ Assert . Equal ( "Failed to get user with uid: user1" , exception . Message ) ;
159+ }
160+
161+ [ Fact ]
162+ public async Task GetUserByIdNull ( )
163+ {
164+ var userManager = this . CreateFirebaseUserManager ( new MockMessageHandler ( ) ) ;
165+ await Assert . ThrowsAsync < ArgumentException > ( ( ) => userManager . GetUserByIdAsync ( null ) ) ;
166+ }
167+
168+ [ Fact ]
169+ public async Task GetUserByIdEmpty ( )
170+ {
171+ var userManager = this . CreateFirebaseUserManager ( new MockMessageHandler ( ) ) ;
172+ await Assert . ThrowsAsync < ArgumentException > ( ( ) => userManager . GetUserByIdAsync ( string . Empty ) ) ;
173+ }
174+
175+ [ Fact ]
176+ public async Task GetUserByEmail ( )
177+ {
178+ var handler = new MockMessageHandler ( )
179+ {
180+ Response = @"{""users"": [
181+ {
182+ ""localId"": ""user1""
183+ }
184+ ]}" ,
185+ } ;
186+ var userManager = this . CreateFirebaseUserManager ( handler ) ;
187+
188+ var userRecord = await userManager . GetUserByEmailAsync ( "user@example.com" ) ;
189+
190+ Assert . Equal ( "user1" , userRecord . Uid ) ;
191+ Assert . Null ( userRecord . DisplayName ) ;
192+ Assert . Null ( userRecord . Email ) ;
193+ Assert . Null ( userRecord . PhoneNumber ) ;
194+ Assert . Null ( userRecord . PhotoUrl ) ;
195+ Assert . Equal ( "firebase" , userRecord . ProviderId ) ;
196+ Assert . False ( userRecord . Disabled ) ;
197+ Assert . False ( userRecord . EmailVerified ) ;
198+ Assert . Equal ( UserRecord . UnixEpoch , userRecord . TokensValidAfterTimestamp ) ;
199+ Assert . Empty ( userRecord . CustomClaims ) ;
200+ Assert . Empty ( userRecord . ProviderData ) ;
201+ Assert . Null ( userRecord . UserMetaData . CreationTimestamp ) ;
202+ Assert . Null ( userRecord . UserMetaData . LastSignInTimestamp ) ;
203+
204+ var request = NewtonsoftJsonSerializer . Instance . Deserialize < Dictionary < string , object > > ( handler . Request ) ;
205+ Assert . Equal ( new JArray ( "user@example.com" ) , request [ "email" ] ) ;
206+ }
207+
208+ [ Fact ]
209+ public async Task GetUserByEmailUserNotFound ( )
210+ {
211+ var handler = new MockMessageHandler ( )
212+ {
213+ Response = @"{""users"": []}" ,
214+ } ;
215+ var userManager = this . CreateFirebaseUserManager ( handler ) ;
216+
217+ var exception = await Assert . ThrowsAsync < FirebaseException > (
218+ async ( ) => await userManager . GetUserByEmailAsync ( "user@example.com" ) ) ;
219+ Assert . Equal ( "Failed to get user with email: user@example.com" , exception . Message ) ;
220+ }
221+
222+ [ Fact ]
223+ public async Task GetUserByEmailNull ( )
224+ {
225+ var userManager = this . CreateFirebaseUserManager ( new MockMessageHandler ( ) ) ;
226+ await Assert . ThrowsAsync < ArgumentException > ( ( ) => userManager . GetUserByEmailAsync ( null ) ) ;
227+ }
228+
229+ [ Fact ]
230+ public async Task GetUserByEmailEmpty ( )
231+ {
232+ var userManager = this . CreateFirebaseUserManager ( new MockMessageHandler ( ) ) ;
233+ await Assert . ThrowsAsync < ArgumentException > ( ( ) => userManager . GetUserByEmailAsync ( string . Empty ) ) ;
234+ }
235+
236+ [ Fact ]
237+ public async Task GetUserByPhoneNumber ( )
238+ {
239+ var handler = new MockMessageHandler ( )
240+ {
241+ Response = @"{""users"": [
242+ {
243+ ""localId"": ""user1""
244+ }
245+ ]}" ,
246+ } ;
247+ var userManager = this . CreateFirebaseUserManager ( handler ) ;
248+
249+ var userRecord = await userManager . GetUserByPhoneNumberAsync ( "+1234567890" ) ;
250+
251+ Assert . Equal ( "user1" , userRecord . Uid ) ;
252+ Assert . Null ( userRecord . DisplayName ) ;
253+ Assert . Null ( userRecord . Email ) ;
254+ Assert . Null ( userRecord . PhoneNumber ) ;
255+ Assert . Null ( userRecord . PhotoUrl ) ;
256+ Assert . Equal ( "firebase" , userRecord . ProviderId ) ;
257+ Assert . False ( userRecord . Disabled ) ;
258+ Assert . False ( userRecord . EmailVerified ) ;
259+ Assert . Equal ( UserRecord . UnixEpoch , userRecord . TokensValidAfterTimestamp ) ;
260+ Assert . Empty ( userRecord . CustomClaims ) ;
261+ Assert . Empty ( userRecord . ProviderData ) ;
262+ Assert . Null ( userRecord . UserMetaData . CreationTimestamp ) ;
263+ Assert . Null ( userRecord . UserMetaData . LastSignInTimestamp ) ;
264+
265+ var request = NewtonsoftJsonSerializer . Instance . Deserialize < Dictionary < string , object > > ( handler . Request ) ;
266+ Assert . Equal ( new JArray ( "+1234567890" ) , request [ "phoneNumber" ] ) ;
267+ }
268+
269+ [ Fact ]
270+ public async Task GetUserByPhoneNumberUserNotFound ( )
271+ {
272+ var handler = new MockMessageHandler ( )
273+ {
274+ Response = @"{""users"": []}" ,
275+ } ;
276+ var userManager = this . CreateFirebaseUserManager ( handler ) ;
277+
278+ var exception = await Assert . ThrowsAsync < FirebaseException > (
279+ async ( ) => await userManager . GetUserByPhoneNumberAsync ( "+1234567890" ) ) ;
280+ Assert . Equal ( "Failed to get user with phone number: +1234567890" , exception . Message ) ;
281+ }
282+
283+ [ Fact ]
284+ public async Task GetUserByPhoneNumberNull ( )
285+ {
286+ var userManager = this . CreateFirebaseUserManager ( new MockMessageHandler ( ) ) ;
287+ await Assert . ThrowsAsync < ArgumentException > ( ( ) => userManager . GetUserByPhoneNumberAsync ( null ) ) ;
288+ }
289+
290+ [ Fact ]
291+ public async Task GetUserByPhoneNumberEmpty ( )
292+ {
293+ var userManager = this . CreateFirebaseUserManager ( new MockMessageHandler ( ) ) ;
294+ await Assert . ThrowsAsync < ArgumentException > ( ( ) => userManager . GetUserByPhoneNumberAsync ( string . Empty ) ) ;
155295 }
156296
157297 [ Fact ]
0 commit comments