1
1
package com.faforever.userservice.backend.account
2
2
3
+ import com.faforever.userservice.backend.account.RecoveryService.ParsingResult
3
4
import com.faforever.userservice.backend.domain.User
4
5
import com.faforever.userservice.backend.domain.UserRepository
5
6
import com.faforever.userservice.backend.email.EmailService
@@ -16,10 +17,9 @@ import jakarta.inject.Inject
16
17
import org.hamcrest.MatcherAssert.assertThat
17
18
import org.hamcrest.Matchers.containsString
18
19
import org.hamcrest.Matchers.equalTo
19
- import org.hamcrest.Matchers.nullValue
20
+ import org.hamcrest.Matchers.instanceOf
20
21
import org.hamcrest.Matchers.startsWith
21
22
import org.junit.jupiter.api.Test
22
- import org.junit.jupiter.api.assertThrows
23
23
import org.mockito.kotlin.any
24
24
import org.mockito.kotlin.eq
25
25
import org.mockito.kotlin.verify
@@ -113,69 +113,64 @@ class RecoveryServiceTest {
113
113
@Test
114
114
fun testParseRecoveryHttpRequestWithEmptyParameters () {
115
115
// Execute
116
- assertThrows<InvalidRecoveryException > {
117
- recoveryService.parseRecoveryHttpRequest(emptyMap())
118
- }
116
+ val result = recoveryService.parseRecoveryHttpRequest(emptyMap())
119
117
120
118
// Verify
119
+ assertThat(result, instanceOf(ParsingResult .Invalid ::class .java))
120
+
121
121
verify(metricHelper).incrementPasswordResetViaEmailFailedCounter()
122
122
}
123
123
124
124
@Test
125
125
fun testParseRecoveryHttpRequestWithUnknownSteamId () {
126
126
// Prepare
127
- val parameters = mapOf (" some " to listOf (" fake " , " values " ))
127
+ val parameters = mapOf (" token " to listOf (" STEAM " ))
128
128
129
129
whenever(steamService.parseSteamIdFromRequestParameters(parameters))
130
- .thenReturn(" someSteamId" )
130
+ .thenReturn(SteamService . ParsingResult . ExtractedId ( " someSteamId" ) )
131
131
whenever(steamService.findUserBySteamId(" someSteamId" ))
132
132
.thenReturn(null )
133
133
134
134
// Execute
135
- val (type, user) = recoveryService.parseRecoveryHttpRequest(parameters)
135
+ val result = recoveryService.parseRecoveryHttpRequest(parameters) as ParsingResult . ValidNoUser
136
136
137
137
// Verify
138
- assertThat(type, equalTo(RecoveryService .Type .STEAM ))
139
- assertThat(user, nullValue())
140
-
138
+ assertThat(result.type, equalTo(RecoveryService .Type .STEAM ))
141
139
verify(metricHelper).incrementPasswordResetViaSteamFailedCounter()
142
140
}
143
141
144
142
@Test
145
143
fun testParseRecoveryHttpRequestWithKnownSteamId () {
146
144
// Prepare
147
- val parameters = mapOf (" some " to listOf (" fake " , " values " ))
145
+ val parameters = mapOf (" token " to listOf (" STEAM " ))
148
146
val testUser = buildTestUser()
149
147
150
148
whenever(steamService.parseSteamIdFromRequestParameters(parameters))
151
- .thenReturn(" someSteamId" )
149
+ .thenReturn(SteamService . ParsingResult . ExtractedId ( " someSteamId" ) )
152
150
whenever(steamService.findUserBySteamId(" someSteamId" ))
153
151
.thenReturn(testUser)
154
152
155
153
// Execute
156
- val (type, user) = recoveryService.parseRecoveryHttpRequest(parameters)
154
+ val result = recoveryService.parseRecoveryHttpRequest(parameters) as ParsingResult . ExtractedUser
157
155
158
156
// Verify
159
- assertThat(type, equalTo(RecoveryService .Type .STEAM ))
160
- assertThat(user, equalTo(testUser))
157
+ assertThat(result. type, equalTo(RecoveryService .Type .STEAM ))
158
+ assertThat(result. user, equalTo(testUser))
161
159
}
162
160
163
161
@Test
164
162
fun testParseRecoveryHttpRequestWithInvalidTokenClaims () {
165
163
// Prepare
166
164
val parameters = mapOf (" token" to listOf (" tokenValue" ))
167
165
168
- whenever(steamService.parseSteamIdFromRequestParameters(parameters))
169
- .thenReturn(null )
170
166
whenever(fafTokenService.getTokenClaims(PASSWORD_RESET , " tokenValue" ))
171
167
.thenThrow(RuntimeException (" invalid token claim" ))
172
168
173
169
// Execute
174
- assertThrows<InvalidRecoveryException > {
175
- recoveryService.parseRecoveryHttpRequest(parameters)
176
- }
170
+ val result = recoveryService.parseRecoveryHttpRequest(parameters)
177
171
178
172
// Verify
173
+ assertThat(result, instanceOf(ParsingResult .Invalid ::class .java))
179
174
verify(metricHelper).incrementPasswordResetViaEmailFailedCounter()
180
175
}
181
176
@@ -185,16 +180,15 @@ class RecoveryServiceTest {
185
180
val parameters = mapOf (" token" to listOf (" tokenValue" ))
186
181
187
182
whenever(steamService.parseSteamIdFromRequestParameters(parameters))
188
- .thenReturn(null )
183
+ .thenReturn(SteamService . ParsingResult . NoSteamIdPresent )
189
184
whenever(fafTokenService.getTokenClaims(PASSWORD_RESET , " tokenValue" ))
190
185
.thenReturn(emptyMap())
191
186
192
187
// Execute
193
- assertThrows<InvalidRecoveryException > {
194
- recoveryService.parseRecoveryHttpRequest(parameters)
195
- }
188
+ val result = recoveryService.parseRecoveryHttpRequest(parameters)
196
189
197
190
// Verify
191
+ assertThat(result, instanceOf(ParsingResult .Invalid ::class .java))
198
192
verify(metricHelper).incrementPasswordResetViaEmailFailedCounter()
199
193
}
200
194
@@ -203,18 +197,16 @@ class RecoveryServiceTest {
203
197
// Prepare
204
198
val parameters = mapOf (" token" to listOf (" tokenValue" ))
205
199
206
- whenever(steamService.parseSteamIdFromRequestParameters(parameters))
207
- .thenReturn(null )
208
200
whenever(fafTokenService.getTokenClaims(PASSWORD_RESET , " tokenValue" ))
209
201
.thenReturn(mapOf (" id" to " 12345" ))
210
202
whenever(userRepository.findById(12345 )).thenReturn(null )
211
203
212
204
// Execute
213
- assertThrows<InvalidRecoveryException > {
214
- recoveryService.parseRecoveryHttpRequest(parameters)
215
- }
205
+ val result = recoveryService.parseRecoveryHttpRequest(parameters)
216
206
217
207
// Verify
208
+ assertThat(result, instanceOf(ParsingResult .Invalid ::class .java))
209
+
218
210
verify(metricHelper).incrementPasswordResetViaEmailFailedCounter()
219
211
}
220
212
@@ -231,11 +223,11 @@ class RecoveryServiceTest {
231
223
whenever(userRepository.findById(12345 )).thenReturn(testUser)
232
224
233
225
// Execute
234
- val (type, user) = recoveryService.parseRecoveryHttpRequest(parameters)
226
+ val result = recoveryService.parseRecoveryHttpRequest(parameters) as ParsingResult . ExtractedUser
235
227
236
228
// Verify
237
- assertThat(type, equalTo(RecoveryService .Type .EMAIL ))
238
- assertThat(user, equalTo(testUser))
229
+ assertThat(result. type, equalTo(RecoveryService .Type .EMAIL ))
230
+ assertThat(result. user, equalTo(testUser))
239
231
}
240
232
241
233
@Test
0 commit comments