16
16
using System . Collections . Generic ;
17
17
using Xunit ;
18
18
using Google . Apis . Auth . OAuth2 ;
19
+ using FirebaseAdmin . Tests ;
20
+ using System . Threading . Tasks ;
21
+ using System . Net ;
19
22
20
23
namespace FirebaseAdmin . Auth . Tests
21
24
{
@@ -26,15 +29,8 @@ public class FirebaseUserManagerTest
26
29
private const string mockProjectId = "project1" ;
27
30
28
31
[ Fact ]
29
- public void InvalidUid ( )
32
+ public void InvalidUidForUserRecord ( )
30
33
{
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
-
38
34
Assert . Throws < ArgumentException > ( ( ) => new UserRecord ( null ) ) ;
39
35
Assert . Throws < ArgumentException > ( ( ) => new UserRecord ( "" ) ) ;
40
36
Assert . Throws < ArgumentException > ( ( ) => new UserRecord ( new string ( 'a' , 129 ) ) ) ;
@@ -64,14 +60,103 @@ public void EmptyClaims()
64
60
[ Fact ]
65
61
public void TooLargeClaimsPayload ( )
66
62
{
67
- var customClaims = new Dictionary < string , object > ( ) ;
68
-
69
- for ( var i = 0 ; i < 100 ; ++ i )
63
+ var customClaims = new Dictionary < string , object > ( )
70
64
{
71
- customClaims . Add ( $ "claim { i } " , $ "value { i } " ) ;
72
- }
65
+ { "testClaim" , new string ( 'a' , 1001 ) } ,
66
+ } ;
73
67
74
68
Assert . Throws < ArgumentException > ( ( ) => new UserRecord ( "user1" ) { CustomClaims = customClaims } ) ;
75
69
}
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
+ }
76
161
}
77
162
}
0 commit comments