1515using System ;
1616using System . Collections . Generic ;
1717using System . Net ;
18+ using System . Net . Http ;
1819using System . Threading . Tasks ;
1920using FirebaseAdmin . Tests ;
2021using Google . Apis . Auth . OAuth2 ;
@@ -47,6 +48,7 @@ public void ReservedClaims()
4748 {
4849 { key , "value" } ,
4950 } ;
51+
5052 Assert . Throws < ArgumentException > ( ( ) => new UserRecord ( "user1" ) { CustomClaims = customClaims } ) ;
5153 }
5254 }
@@ -58,6 +60,7 @@ public void EmptyClaims()
5860 {
5961 { string . Empty , "value" } ,
6062 } ;
63+
6164 Assert . Throws < ArgumentException > ( ( ) => new UserRecord ( "user1" ) { CustomClaims = emptyClaims } ) ;
6265 }
6366
@@ -86,15 +89,7 @@ public async Task GetUserById()
8689 } ,
8790 } ,
8891 } ;
89-
90- var factory = new MockHttpClientFactory ( handler ) ;
91- var userManager = new FirebaseUserManager (
92- new FirebaseUserManagerArgs
93- {
94- Credential = MockCredential ,
95- ProjectId = MockProjectId ,
96- ClientFactory = factory ,
97- } ) ;
92+ var userManager = this . CreateFirebaseUserManager ( handler ) ;
9893
9994 var userRecord = await userManager . GetUserById ( "user1" ) ;
10095 Assert . Equal ( "user1" , userRecord . Uid ) ;
@@ -108,8 +103,8 @@ public async Task GetUserById()
108103 Assert . False ( userRecord . Disabled ) ;
109104 Assert . False ( userRecord . EmailVerified ) ;
110105 Assert . Equal ( UserRecord . UnixEpoch , userRecord . TokensValidAfterTimestamp ) ;
111- Assert . Equal ( 0 , userRecord . UserMetaData . CreationTimestamp ) ;
112- Assert . Equal ( 0 , userRecord . UserMetaData . LastSignInTimestamp ) ;
106+ Assert . Equal ( DateTime . MinValue , userRecord . UserMetaData . CreationTimestamp ) ;
107+ Assert . Equal ( DateTime . MinValue , userRecord . UserMetaData . LastSignInTimestamp ) ;
113108 }
114109
115110 [ Fact ]
@@ -147,21 +142,16 @@ public async Task GetUserByIdWithProperties()
147142 ProviderID = "other.com" ,
148143 UserId = "otheruid" ,
149144 DisplayName = "Other Name" ,
145+ 146+ PhotoUrl = "https://other.com/user.png" ,
147+ PhoneNumber = "+10987654321" ,
150148 } ,
151149 } ,
152150 } ,
153151 } ,
154152 } ,
155153 } ;
156-
157- var factory = new MockHttpClientFactory ( handler ) ;
158- var userManager = new FirebaseUserManager (
159- new FirebaseUserManagerArgs
160- {
161- Credential = MockCredential ,
162- ProjectId = MockProjectId ,
163- ClientFactory = factory ,
164- } ) ;
154+ var userManager = this . CreateFirebaseUserManager ( handler ) ;
165155
166156 var userRecord = await userManager . GetUserById ( "user1" ) ;
167157 Assert . Equal ( "user1" , userRecord . Uid ) ;
@@ -191,15 +181,18 @@ public async Task GetUserByIdWithProperties()
191181 Assert . Equal ( "other.com" , provider . ProviderId ) ;
192182 Assert . Equal ( "otheruid" , provider . Uid ) ;
193183 Assert . Equal ( "Other Name" , provider . DisplayName ) ;
194- Assert . Null ( provider . Email ) ;
195- Assert . Null ( provider . PhoneNumber ) ;
196- Assert . Null ( provider . PhotoUrl ) ;
184+ Assert . Equal ( "[email protected] " , provider . Email ) ; 185+ Assert . Equal ( "+10987654321" , provider . PhoneNumber ) ;
186+ Assert . Equal ( "https://other.com/user.png" , provider . PhotoUrl ) ;
197187
198188 Assert . True ( userRecord . Disabled ) ;
199189 Assert . True ( userRecord . EmailVerified ) ;
190+
200191 Assert . Equal ( UserRecord . UnixEpoch . AddSeconds ( 3600 ) , userRecord . TokensValidAfterTimestamp ) ;
201- Assert . Equal ( 100 , userRecord . UserMetaData . CreationTimestamp ) ;
202- Assert . Equal ( 150 , userRecord . UserMetaData . LastSignInTimestamp ) ;
192+ var metadata = userRecord . UserMetaData ;
193+ Assert . NotNull ( metadata ) ;
194+ Assert . Equal ( UserRecord . UnixEpoch . AddMilliseconds ( 100 ) , metadata . CreationTimestamp ) ;
195+ Assert . Equal ( UserRecord . UnixEpoch . AddMilliseconds ( 150 ) , metadata . LastSignInTimestamp ) ;
203196 }
204197
205198 [ Fact ]
@@ -209,14 +202,8 @@ public async Task GetUserByIdUserNotFound()
209202 {
210203 StatusCode = HttpStatusCode . NotFound ,
211204 } ;
212- var factory = new MockHttpClientFactory ( handler ) ;
213- var userManager = new FirebaseUserManager (
214- new FirebaseUserManagerArgs
215- {
216- Credential = MockCredential ,
217- ProjectId = MockProjectId ,
218- ClientFactory = factory ,
219- } ) ;
205+ var userManager = this . CreateFirebaseUserManager ( handler ) ;
206+
220207 await Assert . ThrowsAsync < FirebaseException > (
221208 async ( ) => await userManager . GetUserById ( "user1" ) ) ;
222209 }
@@ -235,14 +222,7 @@ public async Task UpdateUser()
235222 } ,
236223 } ,
237224 } ;
238- var factory = new MockHttpClientFactory ( handler ) ;
239- var userManager = new FirebaseUserManager (
240- new FirebaseUserManagerArgs
241- {
242- Credential = MockCredential ,
243- ProjectId = MockProjectId ,
244- ClientFactory = factory ,
245- } ) ;
225+ var userManager = this . CreateFirebaseUserManager ( handler ) ;
246226 var customClaims = new Dictionary < string , object > ( )
247227 {
248228 { "admin" , true } ,
@@ -258,17 +238,10 @@ public async Task UpdateUserIncorrectResponseObject()
258238 {
259239 Response = new object ( ) ,
260240 } ;
261- var factory = new MockHttpClientFactory ( handler ) ;
262- var userManager = new FirebaseUserManager (
263- new FirebaseUserManagerArgs
264- {
265- Credential = MockCredential ,
266- ProjectId = MockProjectId ,
267- ClientFactory = factory ,
268- } ) ;
241+ var userManager = this . CreateFirebaseUserManager ( handler ) ;
269242 var customClaims = new Dictionary < string , object > ( )
270243 {
271- { "admin" , true } ,
244+ { "admin" , true } ,
272245 } ;
273246
274247 await Assert . ThrowsAsync < FirebaseException > (
@@ -282,17 +255,10 @@ public async Task UpdateUserIncorrectResponseUid()
282255 {
283256 Response = new UserRecord ( "testuser" ) ,
284257 } ;
285- var factory = new MockHttpClientFactory ( handler ) ;
286- var userManager = new FirebaseUserManager (
287- new FirebaseUserManagerArgs
288- {
289- Credential = MockCredential ,
290- ProjectId = MockProjectId ,
291- ClientFactory = factory ,
292- } ) ;
258+ var userManager = this . CreateFirebaseUserManager ( handler ) ;
293259 var customClaims = new Dictionary < string , object > ( )
294260 {
295- { "admin" , true } ,
261+ { "admin" , true } ,
296262 } ;
297263
298264 await Assert . ThrowsAsync < FirebaseException > (
@@ -306,14 +272,7 @@ public async Task UpdateUserHttpError()
306272 {
307273 StatusCode = HttpStatusCode . InternalServerError ,
308274 } ;
309- var factory = new MockHttpClientFactory ( handler ) ;
310- var userManager = new FirebaseUserManager (
311- new FirebaseUserManagerArgs
312- {
313- Credential = MockCredential ,
314- ProjectId = MockProjectId ,
315- ClientFactory = factory ,
316- } ) ;
275+ var userManager = this . CreateFirebaseUserManager ( handler ) ;
317276 var customClaims = new Dictionary < string , object > ( )
318277 {
319278 { "admin" , true } ,
@@ -333,15 +292,9 @@ public async Task DeleteUser()
333292 { "kind" , "identitytoolkit#DeleteAccountResponse" } ,
334293 } ,
335294 } ;
336- var factory = new MockHttpClientFactory ( handler ) ;
337- var userManager = new FirebaseUserManager (
338- new FirebaseUserManagerArgs
339- {
340- Credential = MockCredential ,
341- ProjectId = MockProjectId ,
342- ClientFactory = factory ,
343- } ) ;
344- await userManager . DeleteUser ( "user1" ) ;
295+ var userManager = this . CreateFirebaseUserManager ( handler ) ;
296+
297+ await userManager . DeleteUserAsync ( "user1" ) ;
345298 }
346299
347300 [ Fact ]
@@ -351,16 +304,21 @@ public async Task DeleteUserNotFound()
351304 {
352305 StatusCode = HttpStatusCode . NotFound ,
353306 } ;
354- var factory = new MockHttpClientFactory ( handler ) ;
355- var userManager = new FirebaseUserManager (
356- new FirebaseUserManagerArgs
357- {
358- Credential = MockCredential ,
359- ProjectId = MockProjectId ,
360- ClientFactory = factory ,
361- } ) ;
307+ var userManager = this . CreateFirebaseUserManager ( handler ) ;
308+
362309 await Assert . ThrowsAsync < FirebaseException > (
363- async ( ) => await userManager . DeleteUser ( "user1" ) ) ;
310+ async ( ) => await userManager . DeleteUserAsync ( "user1" ) ) ;
311+ }
312+
313+ private FirebaseUserManager CreateFirebaseUserManager ( HttpMessageHandler handler )
314+ {
315+ var args = new FirebaseUserManagerArgs
316+ {
317+ Credential = MockCredential ,
318+ ProjectId = MockProjectId ,
319+ ClientFactory = new MockHttpClientFactory ( handler ) ,
320+ } ;
321+ return new FirebaseUserManager ( args ) ;
364322 }
365323 }
366324}
0 commit comments