@@ -122,22 +122,101 @@ await Assert.ThrowsAsync<FirebaseException>(
122
122
async ( ) => await FirebaseAuth . DefaultInstance . SetCustomUserClaimsAsync ( "mock-uid" , customClaims ) ) ;
123
123
}
124
124
125
+ [ Fact ]
126
+ public async Task CreateUserWithParams ( )
127
+ {
128
+ var randomUser = RandomUser . Create ( ) ;
129
+ var args = new UserRecordArgs ( )
130
+ {
131
+ Uid = randomUser . Uid ,
132
+ Email = randomUser . Email ,
133
+ PhoneNumber = randomUser . PhoneNumber ,
134
+ DisplayName = "Random User" ,
135
+ PhotoUrl = "https://example.com/photo.png" ,
136
+ EmailVerified = true ,
137
+ Password = "password" ,
138
+ } ;
139
+
140
+ var user = await FirebaseAuth . DefaultInstance . CreateUserAsync ( args ) ;
141
+
142
+ try
143
+ {
144
+ Assert . Equal ( randomUser . Uid , user . Uid ) ;
145
+ Assert . Equal ( randomUser . Email , user . Email ) ;
146
+ Assert . Equal ( randomUser . PhoneNumber , user . PhoneNumber ) ;
147
+ Assert . Equal ( args . DisplayName , user . DisplayName ) ;
148
+ Assert . Equal ( args . PhotoUrl , user . PhotoUrl ) ;
149
+ Assert . True ( user . EmailVerified ) ;
150
+ Assert . False ( user . Disabled ) ;
151
+
152
+ // Cannot recreate the same user.
153
+ await Assert . ThrowsAsync < FirebaseException > (
154
+ async ( ) => await FirebaseAuth . DefaultInstance . CreateUserAsync ( args ) ) ;
155
+ }
156
+ finally
157
+ {
158
+ await FirebaseAuth . DefaultInstance . DeleteUserAsync ( user . Uid ) ;
159
+ }
160
+ }
161
+
125
162
[ Fact ]
126
163
public async Task UserLifecycle ( )
127
164
{
128
- var rand = new Random ( ) ;
129
- var uid = $ "user{ rand . Next ( ) } ";
130
- var customToken = await FirebaseAuth . DefaultInstance . CreateCustomTokenAsync ( uid ) ;
131
- var idToken = await SignInWithCustomTokenAsync ( customToken ) ;
165
+ // Create user
166
+ var user = await FirebaseAuth . DefaultInstance . CreateUserAsync ( new UserRecordArgs ( ) ) ;
167
+ var uid = user . Uid ;
168
+ Assert . Null ( user . Email ) ;
169
+ Assert . Null ( user . PhoneNumber ) ;
170
+ Assert . Null ( user . DisplayName ) ;
171
+ Assert . Null ( user . PhotoUrl ) ;
172
+ Assert . False ( user . EmailVerified ) ;
173
+ Assert . False ( user . Disabled ) ;
174
+ Assert . NotNull ( user . UserMetaData . CreationTimestamp ) ;
175
+ Assert . Null ( user . UserMetaData . LastSignInTimestamp ) ;
176
+ Assert . Empty ( user . ProviderData ) ;
177
+ Assert . Empty ( user . CustomClaims ) ;
132
178
133
- var user = await FirebaseAuth . DefaultInstance . GetUserAsync ( uid ) ;
179
+ // Get user by ID
180
+ user = await FirebaseAuth . DefaultInstance . GetUserAsync ( uid ) ;
134
181
Assert . Equal ( uid , user . Uid ) ;
182
+ Assert . Null ( user . Email ) ;
183
+ Assert . Null ( user . PhoneNumber ) ;
184
+ Assert . Null ( user . DisplayName ) ;
185
+ Assert . Null ( user . PhotoUrl ) ;
186
+ Assert . False ( user . EmailVerified ) ;
187
+ Assert . False ( user . Disabled ) ;
188
+ Assert . NotNull ( user . UserMetaData . CreationTimestamp ) ;
189
+ Assert . Null ( user . UserMetaData . LastSignInTimestamp ) ;
190
+ Assert . Empty ( user . ProviderData ) ;
191
+ Assert . Empty ( user . CustomClaims ) ;
135
192
193
+ // Delete user
136
194
await FirebaseAuth . DefaultInstance . DeleteUserAsync ( uid ) ;
137
195
await Assert . ThrowsAsync < FirebaseException > (
138
196
async ( ) => await FirebaseAuth . DefaultInstance . GetUserAsync ( uid ) ) ;
139
197
}
140
198
199
+ [ Fact ]
200
+ public async Task GetUserNonExistingUid ( )
201
+ {
202
+ await Assert . ThrowsAsync < FirebaseException > (
203
+ async ( ) => await FirebaseAuth . DefaultInstance . GetUserAsync ( "non.existing" ) ) ;
204
+ }
205
+
206
+ [ Fact ]
207
+ public async Task GetUserNonExistingEmail ( )
208
+ {
209
+ await Assert . ThrowsAsync < FirebaseException > (
210
+ async ( ) => await FirebaseAuth . DefaultInstance . GetUserByEmailAsync ( "[email protected] " ) ) ;
211
+ }
212
+
213
+ [ Fact ]
214
+ public async Task DeleteUserNonExistingUid ( )
215
+ {
216
+ await Assert . ThrowsAsync < FirebaseException > (
217
+ async ( ) => await FirebaseAuth . DefaultInstance . DeleteUserAsync ( "non.existing" ) ) ;
218
+ }
219
+
141
220
private static async Task < string > SignInWithCustomTokenAsync ( string customToken )
142
221
{
143
222
var rb = new Google . Apis . Requests . RequestBuilder ( )
@@ -179,4 +258,33 @@ internal class SignInResponse
179
258
[ Newtonsoft . Json . JsonProperty ( "idToken" ) ]
180
259
public string IdToken { get ; set ; }
181
260
}
261
+
262
+ internal class RandomUser
263
+ {
264
+ internal string Uid { get ; private set ; }
265
+
266
+ internal string Email { get ; private set ; }
267
+
268
+ internal string PhoneNumber { get ; private set ; }
269
+
270
+ internal static RandomUser Create ( )
271
+ {
272
+ var uid = Guid . NewGuid ( ) . ToString ( ) . Replace ( "-" , string . Empty ) ;
273
+ var email = $ "test{ uid . Substring ( 0 , 12 ) } @example.{ uid . Substring ( 12 ) } .com";
274
+
275
+ var phone = "+1" ;
276
+ var rand = new Random ( ) ;
277
+ for ( int i = 0 ; i < 10 ; i ++ )
278
+ {
279
+ phone += rand . Next ( 10 ) ;
280
+ }
281
+
282
+ return new RandomUser ( )
283
+ {
284
+ Uid = uid ,
285
+ Email = email ,
286
+ PhoneNumber = phone ,
287
+ } ;
288
+ }
289
+ }
182
290
}
0 commit comments