1616using System . Collections . Generic ;
1717using Xunit ;
1818using Google . Apis . Auth . OAuth2 ;
19+ using FirebaseAdmin . Tests ;
20+ using System . Threading . Tasks ;
21+ using System . Net ;
1922
2023namespace FirebaseAdmin . Auth . Tests
2124{
@@ -26,15 +29,8 @@ public class FirebaseUserManagerTest
2629 private const string mockProjectId = "project1" ;
2730
2831 [ Fact ]
29- public void InvalidUid ( )
32+ public void InvalidUidForUserRecord ( )
3033 {
31- var app = FirebaseApp . Create ( new AppOptions ( ) { Credential = mockCredential , ProjectId = mockProjectId } ) ;
32- var userManager = FirebaseUserManager . Create ( app ) ;
33- var customClaims = new Dictionary < string , object > ( )
34- {
35- { "admin" , true }
36- } ;
37-
3834 Assert . Throws < ArgumentException > ( ( ) => new UserRecord ( null ) ) ;
3935 Assert . Throws < ArgumentException > ( ( ) => new UserRecord ( "" ) ) ;
4036 Assert . Throws < ArgumentException > ( ( ) => new UserRecord ( new string ( 'a' , 129 ) ) ) ;
@@ -64,14 +60,103 @@ public void EmptyClaims()
6460 [ Fact ]
6561 public void TooLargeClaimsPayload ( )
6662 {
67- var customClaims = new Dictionary < string , object > ( ) ;
68-
69- for ( var i = 0 ; i < 100 ; ++ i )
63+ var customClaims = new Dictionary < string , object > ( )
7064 {
71- customClaims . Add ( $ "claim { i } " , $ "value { i } " ) ;
72- }
65+ { "testClaim" , new string ( 'a' , 1001 ) } ,
66+ } ;
7367
7468 Assert . Throws < ArgumentException > ( ( ) => new UserRecord ( "user1" ) { CustomClaims = customClaims } ) ;
7569 }
70+
71+ [ Fact ]
72+ public async Task UpdateUser ( )
73+ {
74+ var handler = new MockMessageHandler ( )
75+ {
76+ Response = new UserRecord ( "user1" )
77+ } ;
78+ var factory = new MockHttpClientFactory ( handler ) ;
79+ var userManager = new FirebaseUserManager (
80+ new FirebaseUserManagerArgs
81+ {
82+ Credential = mockCredential ,
83+ ProjectId = mockProjectId ,
84+ ClientFactory = factory
85+ } ) ;
86+ var customClaims = new Dictionary < string , object > ( ) {
87+ { "admin" , true } ,
88+ } ;
89+
90+ await userManager . UpdateUserAsync ( new UserRecord ( "user1" ) { CustomClaims = customClaims } ) ;
91+ }
92+
93+ [ Fact ]
94+ public async Task UpdateUserIncorrectResponseObject ( )
95+ {
96+ var handler = new MockMessageHandler ( )
97+ {
98+ Response = new object ( )
99+ } ;
100+ var factory = new MockHttpClientFactory ( handler ) ;
101+ var userManager = new FirebaseUserManager (
102+ new FirebaseUserManagerArgs
103+ {
104+ Credential = mockCredential ,
105+ ProjectId = mockProjectId ,
106+ ClientFactory = factory
107+ } ) ;
108+ var customClaims = new Dictionary < string , object > ( ) {
109+ { "admin" , true } ,
110+ } ;
111+
112+ await Assert . ThrowsAsync < FirebaseException > (
113+ async ( ) => await userManager . UpdateUserAsync ( new UserRecord ( "user1" ) { CustomClaims = customClaims } ) ) ;
114+ }
115+
116+ [ Fact ]
117+ public async Task UpdateUserIncorrectResponseUid ( )
118+ {
119+ var handler = new MockMessageHandler ( )
120+ {
121+ Response = new UserRecord ( "testuser" )
122+ } ;
123+ var factory = new MockHttpClientFactory ( handler ) ;
124+ var userManager = new FirebaseUserManager (
125+ new FirebaseUserManagerArgs
126+ {
127+ Credential = mockCredential ,
128+ ProjectId = mockProjectId ,
129+ ClientFactory = factory
130+ } ) ;
131+ var customClaims = new Dictionary < string , object > ( ) {
132+ { "admin" , true } ,
133+ } ;
134+
135+ await Assert . ThrowsAsync < FirebaseException > (
136+ async ( ) => await userManager . UpdateUserAsync ( new UserRecord ( "user1" ) { CustomClaims = customClaims } ) ) ;
137+ }
138+
139+ [ Fact ]
140+ public async Task UpdateUserHttpError ( )
141+ {
142+ var handler = new MockMessageHandler ( )
143+ {
144+ StatusCode = HttpStatusCode . InternalServerError
145+ } ;
146+ var factory = new MockHttpClientFactory ( handler ) ;
147+ var userManager = new FirebaseUserManager (
148+ new FirebaseUserManagerArgs
149+ {
150+ Credential = mockCredential ,
151+ ProjectId = mockProjectId ,
152+ ClientFactory = factory
153+ } ) ;
154+ var customClaims = new Dictionary < string , object > ( ) {
155+ { "admin" , true } ,
156+ } ;
157+
158+ await Assert . ThrowsAsync < FirebaseException > (
159+ async ( ) => await userManager . UpdateUserAsync ( new UserRecord ( "user1" ) { CustomClaims = customClaims } ) ) ;
160+ }
76161 }
77162}
0 commit comments