17
17
using System . Linq ;
18
18
using System . Net ;
19
19
using System . Net . Http ;
20
+ using System . Net . Http . Headers ;
20
21
using System . Threading . Tasks ;
21
22
using FirebaseAdmin . Tests ;
22
23
using Google . Apis . Auth . OAuth2 ;
@@ -81,6 +82,7 @@ public async Task GetUserById()
81
82
82
83
var request = NewtonsoftJsonSerializer . Instance . Deserialize < Dictionary < string , object > > ( handler . LastRequestBody ) ;
83
84
Assert . Equal ( new JArray ( "user1" ) , request [ "localId" ] ) ;
85
+ this . AssertClientVersion ( handler . LastRequestHeaders ) ;
84
86
}
85
87
86
88
[ Fact ]
@@ -160,6 +162,8 @@ public async Task GetUserByIdWithProperties()
160
162
Assert . NotNull ( metadata ) ;
161
163
Assert . Equal ( UserRecord . UnixEpoch . AddMilliseconds ( 100 ) , metadata . CreationTimestamp ) ;
162
164
Assert . Equal ( UserRecord . UnixEpoch . AddMilliseconds ( 150 ) , metadata . LastSignInTimestamp ) ;
165
+
166
+ this . AssertClientVersion ( handler . LastRequestHeaders ) ;
163
167
}
164
168
165
169
[ Fact ]
@@ -217,6 +221,7 @@ public async Task GetUserByEmail()
217
221
218
222
var request = NewtonsoftJsonSerializer . Instance . Deserialize < Dictionary < string , object > > ( handler . LastRequestBody ) ;
219
223
Assert . Equal ( new JArray ( "[email protected] " ) , request [ "email" ] ) ;
224
+ this . AssertClientVersion ( handler . LastRequestHeaders ) ;
220
225
}
221
226
222
227
[ Fact ]
@@ -274,6 +279,7 @@ public async Task GetUserByPhoneNumber()
274
279
275
280
var request = NewtonsoftJsonSerializer . Instance . Deserialize < Dictionary < string , object > > ( handler . LastRequestBody ) ;
276
281
Assert . Equal ( new JArray ( "+1234567890" ) , request [ "phoneNumber" ] ) ;
282
+ this . AssertClientVersion ( handler . LastRequestHeaders ) ;
277
283
}
278
284
279
285
[ Fact ]
@@ -340,6 +346,9 @@ public async Task ListUsers()
340
346
Assert . Equal ( 2 , query . Count ) ;
341
347
Assert . Equal ( "1000" , query [ "maxResults" ] ) ;
342
348
Assert . Equal ( "token" , query [ "nextPageToken" ] ) ;
349
+
350
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
351
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
343
352
}
344
353
345
354
[ Fact ]
@@ -377,6 +386,9 @@ public void ListUsersForEach()
377
386
Assert . Equal ( 2 , query . Count ) ;
378
387
Assert . Equal ( "1000" , query [ "maxResults" ] ) ;
379
388
Assert . Equal ( "token" , query [ "nextPageToken" ] ) ;
389
+
390
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
391
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
380
392
}
381
393
382
394
[ Fact ]
@@ -416,6 +428,9 @@ public void ListUsersCustomOptions()
416
428
Assert . Equal ( 2 , query . Count ) ;
417
429
Assert . Equal ( "3" , query [ "maxResults" ] ) ;
418
430
Assert . Equal ( "token" , query [ "nextPageToken" ] ) ;
431
+
432
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
433
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
419
434
}
420
435
421
436
[ Fact ]
@@ -451,6 +466,9 @@ public async Task ListUsersReadPage()
451
466
query = this . ExtractQueryParams ( handler . Requests [ 1 ] ) ;
452
467
Assert . Single ( query ) ;
453
468
Assert . Equal ( "3" , query [ "maxResults" ] ) ;
469
+
470
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
471
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
454
472
}
455
473
456
474
[ Fact ]
@@ -496,6 +514,9 @@ public async Task ListUsersByPages()
496
514
{
497
515
Assert . Equal ( $ "user{ i + 1 } ", users [ i ] . Uid ) ;
498
516
}
517
+
518
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
519
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
499
520
}
500
521
501
522
[ Fact ]
@@ -521,6 +542,9 @@ public async Task ListUsersReadLargePageSize()
521
542
Assert . Equal ( 2 , query . Count ) ;
522
543
Assert . Equal ( "7" , query [ "maxResults" ] ) ;
523
544
Assert . Equal ( "token" , query [ "nextPageToken" ] ) ;
545
+
546
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
547
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
524
548
}
525
549
526
550
[ Fact ]
@@ -562,6 +586,9 @@ public async Task ListUsersAsRawResponses()
562
586
Assert . Equal ( 2 , query . Count ) ;
563
587
Assert . Equal ( "1000" , query [ "maxResults" ] ) ;
564
588
Assert . Equal ( "token" , query [ "nextPageToken" ] ) ;
589
+
590
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
591
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
565
592
}
566
593
567
594
[ Fact ]
@@ -698,6 +725,9 @@ public async Task CreateUser()
698
725
Assert . Equal ( 2 , handler . Requests . Count ) ;
699
726
var request = NewtonsoftJsonSerializer . Instance . Deserialize < JObject > ( handler . Requests [ 0 ] . Body ) ;
700
727
Assert . Empty ( request ) ;
728
+
729
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
730
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
701
731
}
702
732
703
733
[ Fact ]
@@ -731,6 +761,9 @@ public async Task CreateUserWithArgs()
731
761
Assert . Equal ( "secret" , request [ "password" ] ) ;
732
762
Assert . Equal ( "+1234567890" , request [ "phoneNumber" ] ) ;
733
763
Assert . Equal ( "https://example.com/user.png" , request [ "photoUrl" ] ) ;
764
+
765
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
766
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
734
767
}
735
768
736
769
[ Fact ]
@@ -759,6 +792,9 @@ public async Task CreateUserWithExplicitDefaults()
759
792
Assert . Equal ( 2 , request . Count ) ;
760
793
Assert . False ( ( bool ) request [ "disabled" ] ) ;
761
794
Assert . False ( ( bool ) request [ "emailVerified" ] ) ;
795
+
796
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
797
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
762
798
}
763
799
764
800
[ Fact ]
@@ -956,6 +992,9 @@ public async Task UpdateUser()
956
992
Assert . True ( ( bool ) claims [ "admin" ] ) ;
957
993
Assert . Equal ( 4L , claims [ "level" ] ) ;
958
994
Assert . Equal ( "gold" , claims [ "package" ] ) ;
995
+
996
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
997
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
959
998
}
960
999
961
1000
[ Fact ]
@@ -979,6 +1018,9 @@ public async Task UpdateUserPartial()
979
1018
Assert . Equal ( 2 , request . Count ) ;
980
1019
Assert . Equal ( "user1" , request [ "localId" ] ) ;
981
1020
Assert . True ( ( bool ) request [ "emailVerified" ] ) ;
1021
+
1022
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
1023
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
982
1024
}
983
1025
984
1026
[ Fact ]
@@ -1005,6 +1047,9 @@ public async Task UpdateUserRemoveAttributes()
1005
1047
Assert . Equal (
1006
1048
new JArray ( ) { "DISPLAY_NAME" , "PHOTO_URL" } ,
1007
1049
request [ "deleteAttribute" ] ) ;
1050
+
1051
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
1052
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
1008
1053
}
1009
1054
1010
1055
[ Fact ]
@@ -1030,6 +1075,9 @@ public async Task UpdateUserRemoveProviders()
1030
1075
Assert . Equal (
1031
1076
new JArray ( ) { "phone" } ,
1032
1077
request [ "deleteProvider" ] ) ;
1078
+
1079
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
1080
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
1033
1081
}
1034
1082
1035
1083
[ Fact ]
@@ -1053,6 +1101,8 @@ public async Task UpdateUserSetCustomClaims()
1053
1101
Assert . True ( ( bool ) claims [ "admin" ] ) ;
1054
1102
Assert . Equal ( 4L , claims [ "level" ] ) ;
1055
1103
Assert . Equal ( "gold" , claims [ "package" ] ) ;
1104
+
1105
+ this . AssertClientVersion ( handler . LastRequestHeaders ) ;
1056
1106
}
1057
1107
1058
1108
[ Fact ]
@@ -1066,6 +1116,7 @@ public async Task LargeClaimsUnderLimit()
1066
1116
} ;
1067
1117
1068
1118
await auth . SetCustomUserClaimsAsync ( "user1" , customClaims ) ;
1119
+ this . AssertClientVersion ( handler . LastRequestHeaders ) ;
1069
1120
}
1070
1121
1071
1122
[ Fact ]
@@ -1079,6 +1130,8 @@ public async Task EmptyClaims()
1079
1130
var request = NewtonsoftJsonSerializer . Instance . Deserialize < JObject > ( handler . LastRequestBody ) ;
1080
1131
Assert . Equal ( "user1" , request [ "localId" ] ) ;
1081
1132
Assert . Equal ( "{}" , request [ "customAttributes" ] ) ;
1133
+
1134
+ this . AssertClientVersion ( handler . LastRequestHeaders ) ;
1082
1135
}
1083
1136
1084
1137
[ Fact ]
@@ -1092,6 +1145,8 @@ public async Task NullClaims()
1092
1145
var request = NewtonsoftJsonSerializer . Instance . Deserialize < JObject > ( handler . LastRequestBody ) ;
1093
1146
Assert . Equal ( "user1" , request [ "localId" ] ) ;
1094
1147
Assert . Equal ( "{}" , request [ "customAttributes" ] ) ;
1148
+
1149
+ this . AssertClientVersion ( handler . LastRequestHeaders ) ;
1095
1150
}
1096
1151
1097
1152
[ Fact ]
@@ -1354,6 +1409,7 @@ public async Task DeleteUser()
1354
1409
var auth = this . CreateFirebaseAuth ( handler ) ;
1355
1410
1356
1411
await auth . DeleteUserAsync ( "user1" ) ;
1412
+ this . AssertClientVersion ( handler . LastRequestHeaders ) ;
1357
1413
}
1358
1414
1359
1415
[ Fact ]
@@ -1390,5 +1446,12 @@ private IDictionary<string, string> ExtractQueryParams(MockMessageHandler.Incomi
1390
1446
return req . Url . Query . Substring ( 1 ) . Split ( '&' ) . ToDictionary (
1391
1447
entry => entry . Split ( '=' ) [ 0 ] , entry => entry . Split ( '=' ) [ 1 ] ) ;
1392
1448
}
1449
+
1450
+ private void AssertClientVersion ( HttpRequestHeaders header )
1451
+ {
1452
+ Assert . Equal (
1453
+ FirebaseUserManager . ClientVersion ,
1454
+ header . GetValues ( FirebaseUserManager . ClientVersionHeader ) . First ( ) ) ;
1455
+ }
1393
1456
}
1394
1457
}
0 commit comments