1
1
using System . Security . Claims ;
2
+ using System . Text ;
3
+ using System . Text . Unicode ;
2
4
3
5
using Google . Apis . Auth ;
4
6
9
11
10
12
using Moq ;
11
13
14
+ using Newtonsoft . Json ;
15
+
16
+ using Nullinside . Api . Common . Auth ;
12
17
using Nullinside . Api . Common . Twitch ;
13
18
using Nullinside . Api . Controllers ;
14
19
using Nullinside . Api . Model ;
15
20
using Nullinside . Api . Model . Ddl ;
16
21
using Nullinside . Api . Shared ;
17
22
using Nullinside . Api . Shared . Json ;
18
23
24
+ using Org . BouncyCastle . Utilities . Encoders ;
25
+
19
26
namespace Nullinside . Api . Tests . Nullinside . Api . Controllers ;
20
27
21
28
/// <summary>
@@ -74,12 +81,15 @@ public async Task PerformGoogleLoginExisting() {
74
81
75
82
// We should have been redirected to the successful route.
76
83
Assert . That ( obj . Url . StartsWith ( "/user/login?token=" ) , Is . True ) ;
84
+ var queryParam = obj . Url [ "/user/login?token=" . Length ..] ;
77
85
78
86
// No additional users should have been created.
79
87
Assert . That ( _db . Users . Count ( ) , Is . EqualTo ( 1 ) ) ;
80
88
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 ! ) ) ;
83
93
}
84
94
85
95
/// <summary>
@@ -94,12 +104,15 @@ public async Task PerformGoogleLoginNewUser() {
94
104
95
105
// We should have been redirected to the successful route.
96
106
Assert . That ( obj . Url . StartsWith ( "/user/login?token=" ) , Is . True ) ;
107
+ var queryParam = obj . Url [ "/user/login?token=" . Length ..] ;
97
108
98
109
// No additional users should have been created.
99
110
Assert . That ( _db . Users . Count ( ) , Is . EqualTo ( 1 ) ) ;
100
111
101
112
// 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 ! ) ) ;
103
116
}
104
117
105
118
/// <summary>
@@ -139,7 +152,7 @@ public async Task GoToErrorOnBadGmailResponse() {
139
152
public async Task PerformTwitchLoginExisting ( ) {
140
153
// Tells us twitch parsed the code successfully.
141
154
_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 ( ) ) ) ;
143
156
144
157
// Gets a matching email address from our database
145
158
_twitchApi . Setup ( a => a . GetUserEmail ( It . IsAny < CancellationToken > ( ) ) )
@@ -159,12 +172,15 @@ public async Task PerformTwitchLoginExisting() {
159
172
160
173
// We should have been redirected to the successful route.
161
174
Assert . That ( obj . Url . StartsWith ( "/user/login?token=" ) , Is . True ) ;
175
+ var queryParam = obj . Url [ "/user/login?token=" . Length ..] ;
162
176
163
177
// No additional users should have been created.
164
178
Assert . That ( _db . Users . Count ( ) , Is . EqualTo ( 1 ) ) ;
165
179
166
180
// 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 ! ) ) ;
168
184
}
169
185
170
186
/// <summary>
@@ -174,7 +190,7 @@ public async Task PerformTwitchLoginExisting() {
174
190
public async Task PerformTwitchLoginNewUser ( ) {
175
191
// Tells us twitch parsed the code successfully.
176
192
_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 ( ) ) ) ;
178
194
179
195
// Gets a matching email address from our database
180
196
_twitchApi . Setup ( a => a . GetUserEmail ( It . IsAny < CancellationToken > ( ) ) )
@@ -186,12 +202,15 @@ public async Task PerformTwitchLoginNewUser() {
186
202
187
203
// We should have been redirected to the successful route.
188
204
Assert . That ( obj . Url . StartsWith ( "/user/login?token=" ) , Is . True ) ;
205
+ var queryParam = obj . Url [ "/user/login?token=" . Length ..] ;
189
206
190
207
// No additional users should have been created.
191
208
Assert . That ( _db . Users . Count ( ) , Is . EqualTo ( 1 ) ) ;
192
209
193
210
// 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 ! ) ) ;
195
214
}
196
215
197
216
/// <summary>
@@ -201,7 +220,7 @@ public async Task PerformTwitchLoginNewUser() {
201
220
public async Task PerformTwitchLoginBadTwitchResponse ( ) {
202
221
// Tells us twitch thinks it was a bad code.
203
222
_twitchApi . Setup ( a => a . CreateAccessToken ( It . IsAny < string > ( ) , It . IsAny < CancellationToken > ( ) ) )
204
- . Returns ( ( ) => Task . FromResult < TwitchAccessToken ? > ( null ) ) ;
223
+ . Returns ( ( ) => Task . FromResult < OAuthToken ? > ( null ) ) ;
205
224
206
225
// Make the call and ensure it's successful.
207
226
var controller = new TestableUserController ( _configuration , _db , _webSocketPersister . Object ) ;
@@ -218,7 +237,7 @@ public async Task PerformTwitchLoginBadTwitchResponse() {
218
237
public async Task PerformTwitchLoginWithNoEmailAccount ( ) {
219
238
// Tells us twitch parsed the code successfully.
220
239
_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 ( ) ) ) ;
222
241
223
242
// Make the call and ensure it's successful.
224
243
var controller = new TestableUserController ( _configuration , _db , _webSocketPersister . Object ) ;
@@ -237,7 +256,7 @@ public async Task PerformTwitchLoginDbFailure() {
237
256
238
257
// Tells us twitch parsed the code successfully.
239
258
_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 ( ) ) ) ;
241
260
242
261
// Gets an email address from twitch
243
262
_twitchApi . Setup ( a => a . GetUserEmail ( It . IsAny < CancellationToken > ( ) ) )
0 commit comments