11using System . Security . Claims ;
2+ using System . Text ;
3+ using System . Text . Unicode ;
24
35using Google . Apis . Auth ;
46
911
1012using Moq ;
1113
14+ using Newtonsoft . Json ;
15+
16+ using Nullinside . Api . Common . Auth ;
1217using Nullinside . Api . Common . Twitch ;
1318using Nullinside . Api . Controllers ;
1419using Nullinside . Api . Model ;
1520using Nullinside . Api . Model . Ddl ;
1621using Nullinside . Api . Shared ;
1722using Nullinside . Api . Shared . Json ;
1823
24+ using Org . BouncyCastle . Utilities . Encoders ;
25+
1926namespace Nullinside . Api . Tests . Nullinside . Api . Controllers ;
2027
2128/// <summary>
@@ -74,12 +81,15 @@ public async Task PerformGoogleLoginExisting() {
7481
7582 // We should have been redirected to the successful route.
7683 Assert . That ( obj . Url . StartsWith ( "/user/login?token=" ) , Is . True ) ;
84+ var queryParam = obj . Url [ "/user/login?token=" . Length ..] ;
7785
7886 // No additional users should have been created.
7987 Assert . That ( _db . Users . Count ( ) , Is . EqualTo ( 1 ) ) ;
8088
81- // We should have saved the token in the existing user's database.
82- Assert . That ( obj . Url . EndsWith ( _db . Users . First ( ) . Token ! ) , Is . True ) ;
89+ // We should have saved the token in the existing user's database.
90+ var json = Encoding . UTF8 . GetString ( Convert . FromBase64String ( queryParam ) ) ;
91+ var oauth = JsonConvert . DeserializeObject < OAuthToken > ( json ) ;
92+ Assert . That ( oauth ? . AccessToken ! , Is . EqualTo ( _db . Users . First ( ) . Token ! ) ) ;
8393 }
8494
8595 /// <summary>
@@ -94,12 +104,15 @@ public async Task PerformGoogleLoginNewUser() {
94104
95105 // We should have been redirected to the successful route.
96106 Assert . That ( obj . Url . StartsWith ( "/user/login?token=" ) , Is . True ) ;
107+ var queryParam = obj . Url [ "/user/login?token=" . Length ..] ;
97108
98109 // No additional users should have been created.
99110 Assert . That ( _db . Users . Count ( ) , Is . EqualTo ( 1 ) ) ;
100111
101112 // We should have saved the token in the existing user's database.
102- Assert . That ( obj . Url . EndsWith ( _db . Users . First ( ) . Token ! ) , Is . True ) ;
113+ var json = Encoding . UTF8 . GetString ( Convert . FromBase64String ( queryParam ) ) ;
114+ var oauth = JsonConvert . DeserializeObject < OAuthToken > ( json ) ;
115+ Assert . That ( oauth ? . AccessToken ! , Is . EqualTo ( _db . Users . First ( ) . Token ! ) ) ;
103116 }
104117
105118 /// <summary>
@@ -139,7 +152,7 @@ public async Task GoToErrorOnBadGmailResponse() {
139152 public async Task PerformTwitchLoginExisting ( ) {
140153 // Tells us twitch parsed the code successfully.
141154 _twitchApi . Setup ( a => a . CreateAccessToken ( It . IsAny < string > ( ) , It . IsAny < CancellationToken > ( ) ) )
142- . Returns ( ( ) => Task . FromResult < TwitchAccessToken ? > ( new TwitchAccessToken ( ) ) ) ;
155+ . Returns ( ( ) => Task . FromResult < OAuthToken ? > ( new OAuthToken ( ) ) ) ;
143156
144157 // Gets a matching email address from our database
145158 _twitchApi . Setup ( a => a . GetUserEmail ( It . IsAny < CancellationToken > ( ) ) )
@@ -159,12 +172,15 @@ public async Task PerformTwitchLoginExisting() {
159172
160173 // We should have been redirected to the successful route.
161174 Assert . That ( obj . Url . StartsWith ( "/user/login?token=" ) , Is . True ) ;
175+ var queryParam = obj . Url [ "/user/login?token=" . Length ..] ;
162176
163177 // No additional users should have been created.
164178 Assert . That ( _db . Users . Count ( ) , Is . EqualTo ( 1 ) ) ;
165179
166180 // We should have saved the token in the existing user's database.
167- Assert . That ( obj . Url . EndsWith ( _db . Users . First ( ) . Token ! ) , Is . True ) ;
181+ var json = Encoding . UTF8 . GetString ( Convert . FromBase64String ( queryParam ) ) ;
182+ var oauth = JsonConvert . DeserializeObject < OAuthToken > ( json ) ;
183+ Assert . That ( oauth ? . AccessToken ! , Is . EqualTo ( _db . Users . First ( ) . Token ! ) ) ;
168184 }
169185
170186 /// <summary>
@@ -174,7 +190,7 @@ public async Task PerformTwitchLoginExisting() {
174190 public async Task PerformTwitchLoginNewUser ( ) {
175191 // Tells us twitch parsed the code successfully.
176192 _twitchApi . Setup ( a => a . CreateAccessToken ( It . IsAny < string > ( ) , It . IsAny < CancellationToken > ( ) ) )
177- . Returns ( ( ) => Task . FromResult < TwitchAccessToken ? > ( new TwitchAccessToken ( ) ) ) ;
193+ . Returns ( ( ) => Task . FromResult < OAuthToken ? > ( new OAuthToken ( ) ) ) ;
178194
179195 // Gets a matching email address from our database
180196 _twitchApi . Setup ( a => a . GetUserEmail ( It . IsAny < CancellationToken > ( ) ) )
@@ -186,12 +202,15 @@ public async Task PerformTwitchLoginNewUser() {
186202
187203 // We should have been redirected to the successful route.
188204 Assert . That ( obj . Url . StartsWith ( "/user/login?token=" ) , Is . True ) ;
205+ var queryParam = obj . Url [ "/user/login?token=" . Length ..] ;
189206
190207 // No additional users should have been created.
191208 Assert . That ( _db . Users . Count ( ) , Is . EqualTo ( 1 ) ) ;
192209
193210 // We should have saved the token in the existing user's database.
194- Assert . That ( obj . Url . EndsWith ( _db . Users . First ( ) . Token ! ) , Is . True ) ;
211+ var json = Encoding . UTF8 . GetString ( Convert . FromBase64String ( queryParam ) ) ;
212+ var oauth = JsonConvert . DeserializeObject < OAuthToken > ( json ) ;
213+ Assert . That ( oauth ? . AccessToken ! , Is . EqualTo ( _db . Users . First ( ) . Token ! ) ) ;
195214 }
196215
197216 /// <summary>
@@ -201,7 +220,7 @@ public async Task PerformTwitchLoginNewUser() {
201220 public async Task PerformTwitchLoginBadTwitchResponse ( ) {
202221 // Tells us twitch thinks it was a bad code.
203222 _twitchApi . Setup ( a => a . CreateAccessToken ( It . IsAny < string > ( ) , It . IsAny < CancellationToken > ( ) ) )
204- . Returns ( ( ) => Task . FromResult < TwitchAccessToken ? > ( null ) ) ;
223+ . Returns ( ( ) => Task . FromResult < OAuthToken ? > ( null ) ) ;
205224
206225 // Make the call and ensure it's successful.
207226 var controller = new TestableUserController ( _configuration , _db , _webSocketPersister . Object ) ;
@@ -218,7 +237,7 @@ public async Task PerformTwitchLoginBadTwitchResponse() {
218237 public async Task PerformTwitchLoginWithNoEmailAccount ( ) {
219238 // Tells us twitch parsed the code successfully.
220239 _twitchApi . Setup ( a => a . CreateAccessToken ( It . IsAny < string > ( ) , It . IsAny < CancellationToken > ( ) ) )
221- . Returns ( ( ) => Task . FromResult < TwitchAccessToken ? > ( new TwitchAccessToken ( ) ) ) ;
240+ . Returns ( ( ) => Task . FromResult < OAuthToken ? > ( new OAuthToken ( ) ) ) ;
222241
223242 // Make the call and ensure it's successful.
224243 var controller = new TestableUserController ( _configuration , _db , _webSocketPersister . Object ) ;
@@ -237,7 +256,7 @@ public async Task PerformTwitchLoginDbFailure() {
237256
238257 // Tells us twitch parsed the code successfully.
239258 _twitchApi . Setup ( a => a . CreateAccessToken ( It . IsAny < string > ( ) , It . IsAny < CancellationToken > ( ) ) )
240- . Returns ( ( ) => Task . FromResult < TwitchAccessToken ? > ( new TwitchAccessToken ( ) ) ) ;
259+ . Returns ( ( ) => Task . FromResult < OAuthToken ? > ( new OAuthToken ( ) ) ) ;
241260
242261 // Gets an email address from twitch
243262 _twitchApi . Setup ( a => a . GetUserEmail ( It . IsAny < CancellationToken > ( ) ) )
0 commit comments