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 ;
@@ -33,6 +34,8 @@ public class FirebaseUserManagerTest
33
34
private static readonly GoogleCredential MockCredential =
34
35
GoogleCredential . FromAccessToken ( "test-token" ) ;
35
36
37
+ private static readonly string ClientVersion = $ "DotNet/Admin/{ FirebaseApp . GetSdkVersion ( ) } ";
38
+
36
39
private static readonly string CreateUserResponse = @"{""localId"": ""user1""}" ;
37
40
private static readonly string GetUserResponse = @"{""users"": [{""localId"": ""user1""}]}" ;
38
41
private static readonly IList < string > ListUsersResponse = new List < string > ( )
@@ -81,6 +84,7 @@ public async Task GetUserById()
81
84
82
85
var request = NewtonsoftJsonSerializer . Instance . Deserialize < Dictionary < string , object > > ( handler . LastRequestBody ) ;
83
86
Assert . Equal ( new JArray ( "user1" ) , request [ "localId" ] ) ;
87
+ this . AssertClientVersion ( handler . LastRequestHeaders ) ;
84
88
}
85
89
86
90
[ Fact ]
@@ -160,6 +164,8 @@ public async Task GetUserByIdWithProperties()
160
164
Assert . NotNull ( metadata ) ;
161
165
Assert . Equal ( UserRecord . UnixEpoch . AddMilliseconds ( 100 ) , metadata . CreationTimestamp ) ;
162
166
Assert . Equal ( UserRecord . UnixEpoch . AddMilliseconds ( 150 ) , metadata . LastSignInTimestamp ) ;
167
+
168
+ this . AssertClientVersion ( handler . LastRequestHeaders ) ;
163
169
}
164
170
165
171
[ Fact ]
@@ -217,6 +223,7 @@ public async Task GetUserByEmail()
217
223
218
224
var request = NewtonsoftJsonSerializer . Instance . Deserialize < Dictionary < string , object > > ( handler . LastRequestBody ) ;
219
225
Assert . Equal ( new JArray ( "[email protected] " ) , request [ "email" ] ) ;
226
+ this . AssertClientVersion ( handler . LastRequestHeaders ) ;
220
227
}
221
228
222
229
[ Fact ]
@@ -274,6 +281,7 @@ public async Task GetUserByPhoneNumber()
274
281
275
282
var request = NewtonsoftJsonSerializer . Instance . Deserialize < Dictionary < string , object > > ( handler . LastRequestBody ) ;
276
283
Assert . Equal ( new JArray ( "+1234567890" ) , request [ "phoneNumber" ] ) ;
284
+ this . AssertClientVersion ( handler . LastRequestHeaders ) ;
277
285
}
278
286
279
287
[ Fact ]
@@ -340,6 +348,9 @@ public async Task ListUsers()
340
348
Assert . Equal ( 2 , query . Count ) ;
341
349
Assert . Equal ( "1000" , query [ "maxResults" ] ) ;
342
350
Assert . Equal ( "token" , query [ "nextPageToken" ] ) ;
351
+
352
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
353
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
343
354
}
344
355
345
356
[ Fact ]
@@ -377,6 +388,9 @@ public void ListUsersForEach()
377
388
Assert . Equal ( 2 , query . Count ) ;
378
389
Assert . Equal ( "1000" , query [ "maxResults" ] ) ;
379
390
Assert . Equal ( "token" , query [ "nextPageToken" ] ) ;
391
+
392
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
393
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
380
394
}
381
395
382
396
[ Fact ]
@@ -416,6 +430,9 @@ public void ListUsersCustomOptions()
416
430
Assert . Equal ( 2 , query . Count ) ;
417
431
Assert . Equal ( "3" , query [ "maxResults" ] ) ;
418
432
Assert . Equal ( "token" , query [ "nextPageToken" ] ) ;
433
+
434
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
435
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
419
436
}
420
437
421
438
[ Fact ]
@@ -451,6 +468,9 @@ public async Task ListUsersReadPage()
451
468
query = this . ExtractQueryParams ( handler . Requests [ 1 ] ) ;
452
469
Assert . Single ( query ) ;
453
470
Assert . Equal ( "3" , query [ "maxResults" ] ) ;
471
+
472
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
473
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
454
474
}
455
475
456
476
[ Fact ]
@@ -496,6 +516,9 @@ public async Task ListUsersByPages()
496
516
{
497
517
Assert . Equal ( $ "user{ i + 1 } ", users [ i ] . Uid ) ;
498
518
}
519
+
520
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
521
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
499
522
}
500
523
501
524
[ Fact ]
@@ -521,6 +544,9 @@ public async Task ListUsersReadLargePageSize()
521
544
Assert . Equal ( 2 , query . Count ) ;
522
545
Assert . Equal ( "7" , query [ "maxResults" ] ) ;
523
546
Assert . Equal ( "token" , query [ "nextPageToken" ] ) ;
547
+
548
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
549
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
524
550
}
525
551
526
552
[ Fact ]
@@ -562,6 +588,9 @@ public async Task ListUsersAsRawResponses()
562
588
Assert . Equal ( 2 , query . Count ) ;
563
589
Assert . Equal ( "1000" , query [ "maxResults" ] ) ;
564
590
Assert . Equal ( "token" , query [ "nextPageToken" ] ) ;
591
+
592
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
593
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
565
594
}
566
595
567
596
[ Fact ]
@@ -698,6 +727,9 @@ public async Task CreateUser()
698
727
Assert . Equal ( 2 , handler . Requests . Count ) ;
699
728
var request = NewtonsoftJsonSerializer . Instance . Deserialize < JObject > ( handler . Requests [ 0 ] . Body ) ;
700
729
Assert . Empty ( request ) ;
730
+
731
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
732
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
701
733
}
702
734
703
735
[ Fact ]
@@ -731,6 +763,9 @@ public async Task CreateUserWithArgs()
731
763
Assert . Equal ( "secret" , request [ "password" ] ) ;
732
764
Assert . Equal ( "+1234567890" , request [ "phoneNumber" ] ) ;
733
765
Assert . Equal ( "https://example.com/user.png" , request [ "photoUrl" ] ) ;
766
+
767
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
768
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
734
769
}
735
770
736
771
[ Fact ]
@@ -759,6 +794,9 @@ public async Task CreateUserWithExplicitDefaults()
759
794
Assert . Equal ( 2 , request . Count ) ;
760
795
Assert . False ( ( bool ) request [ "disabled" ] ) ;
761
796
Assert . False ( ( bool ) request [ "emailVerified" ] ) ;
797
+
798
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
799
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
762
800
}
763
801
764
802
[ Fact ]
@@ -956,6 +994,9 @@ public async Task UpdateUser()
956
994
Assert . True ( ( bool ) claims [ "admin" ] ) ;
957
995
Assert . Equal ( 4L , claims [ "level" ] ) ;
958
996
Assert . Equal ( "gold" , claims [ "package" ] ) ;
997
+
998
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
999
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
959
1000
}
960
1001
961
1002
[ Fact ]
@@ -979,6 +1020,9 @@ public async Task UpdateUserPartial()
979
1020
Assert . Equal ( 2 , request . Count ) ;
980
1021
Assert . Equal ( "user1" , request [ "localId" ] ) ;
981
1022
Assert . True ( ( bool ) request [ "emailVerified" ] ) ;
1023
+
1024
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
1025
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
982
1026
}
983
1027
984
1028
[ Fact ]
@@ -1005,6 +1049,9 @@ public async Task UpdateUserRemoveAttributes()
1005
1049
Assert . Equal (
1006
1050
new JArray ( ) { "DISPLAY_NAME" , "PHOTO_URL" } ,
1007
1051
request [ "deleteAttribute" ] ) ;
1052
+
1053
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
1054
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
1008
1055
}
1009
1056
1010
1057
[ Fact ]
@@ -1030,6 +1077,9 @@ public async Task UpdateUserRemoveProviders()
1030
1077
Assert . Equal (
1031
1078
new JArray ( ) { "phone" } ,
1032
1079
request [ "deleteProvider" ] ) ;
1080
+
1081
+ this . AssertClientVersion ( handler . Requests [ 0 ] . Headers ) ;
1082
+ this . AssertClientVersion ( handler . Requests [ 1 ] . Headers ) ;
1033
1083
}
1034
1084
1035
1085
[ Fact ]
@@ -1053,6 +1103,8 @@ public async Task UpdateUserSetCustomClaims()
1053
1103
Assert . True ( ( bool ) claims [ "admin" ] ) ;
1054
1104
Assert . Equal ( 4L , claims [ "level" ] ) ;
1055
1105
Assert . Equal ( "gold" , claims [ "package" ] ) ;
1106
+
1107
+ this . AssertClientVersion ( handler . LastRequestHeaders ) ;
1056
1108
}
1057
1109
1058
1110
[ Fact ]
@@ -1066,6 +1118,7 @@ public async Task LargeClaimsUnderLimit()
1066
1118
} ;
1067
1119
1068
1120
await auth . SetCustomUserClaimsAsync ( "user1" , customClaims ) ;
1121
+ this . AssertClientVersion ( handler . LastRequestHeaders ) ;
1069
1122
}
1070
1123
1071
1124
[ Fact ]
@@ -1079,6 +1132,8 @@ public async Task EmptyClaims()
1079
1132
var request = NewtonsoftJsonSerializer . Instance . Deserialize < JObject > ( handler . LastRequestBody ) ;
1080
1133
Assert . Equal ( "user1" , request [ "localId" ] ) ;
1081
1134
Assert . Equal ( "{}" , request [ "customAttributes" ] ) ;
1135
+
1136
+ this . AssertClientVersion ( handler . LastRequestHeaders ) ;
1082
1137
}
1083
1138
1084
1139
[ Fact ]
@@ -1092,6 +1147,8 @@ public async Task NullClaims()
1092
1147
var request = NewtonsoftJsonSerializer . Instance . Deserialize < JObject > ( handler . LastRequestBody ) ;
1093
1148
Assert . Equal ( "user1" , request [ "localId" ] ) ;
1094
1149
Assert . Equal ( "{}" , request [ "customAttributes" ] ) ;
1150
+
1151
+ this . AssertClientVersion ( handler . LastRequestHeaders ) ;
1095
1152
}
1096
1153
1097
1154
[ Fact ]
@@ -1354,6 +1411,7 @@ public async Task DeleteUser()
1354
1411
var auth = this . CreateFirebaseAuth ( handler ) ;
1355
1412
1356
1413
await auth . DeleteUserAsync ( "user1" ) ;
1414
+ this . AssertClientVersion ( handler . LastRequestHeaders ) ;
1357
1415
}
1358
1416
1359
1417
[ Fact ]
@@ -1390,5 +1448,12 @@ private IDictionary<string, string> ExtractQueryParams(MockMessageHandler.Incomi
1390
1448
return req . Url . Query . Substring ( 1 ) . Split ( '&' ) . ToDictionary (
1391
1449
entry => entry . Split ( '=' ) [ 0 ] , entry => entry . Split ( '=' ) [ 1 ] ) ;
1392
1450
}
1451
+
1452
+ private void AssertClientVersion ( HttpRequestHeaders header )
1453
+ {
1454
+ Assert . Equal (
1455
+ FirebaseUserManager . ClientVersion ,
1456
+ header . GetValues ( FirebaseUserManager . ClientVersionHeader ) . First ( ) ) ;
1457
+ }
1393
1458
}
1394
1459
}
0 commit comments