Skip to content

Commit 3095334

Browse files
authored
Update behaviour to fail deposit when getting an unexpected risk result (#74)
* Add deposit reversal risk controller * Update behaviour to fail deposit when getting an unexpected risk result
1 parent 50e01e7 commit 3095334

File tree

3 files changed

+26
-1
lines changed

3 files changed

+26
-1
lines changed

innie/src/main/kotlin/xyz/block/bittycity/innie/controllers/DepositRiskController.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class DepositRiskController @Inject constructor(
4040
when (riskResult) {
4141
is RiskEvaluation.ActiveScamWarning -> {
4242
logger.warn { "Unexpected scam result: $riskResult" }
43-
value.transitionTo(Settled, metricsClient)
43+
value.fail(DepositFailureReason.UNEXPECTED_RISK_RESULT, metricsClient)
4444
}
4545
RiskEvaluation.Checked -> value.transitionTo(Settled, metricsClient)
4646
is RiskEvaluation.Blocked -> value.fail(DepositFailureReason.RISK_BLOCKED, metricsClient)

innie/src/main/kotlin/xyz/block/bittycity/innie/models/DepositFailureReason.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@ package xyz.block.bittycity.innie.models
33
enum class DepositFailureReason {
44
INELIGIBLE,
55
RISK_BLOCKED,
6+
UNEXPECTED_RISK_RESULT,
67
UNKNOWN
78
}

innie/src/test/kotlin/xyz/block/bittycity/innie/controllers/DepositRiskControllerTest.kt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import xyz.block.bittycity.common.client.RiskEvaluation
1111
import xyz.block.bittycity.innie.api.DepositDomainController
1212
import xyz.block.bittycity.innie.models.CheckingDepositRisk
1313
import xyz.block.bittycity.innie.models.DepositFailureReason.RISK_BLOCKED
14+
import xyz.block.bittycity.innie.models.DepositFailureReason.UNEXPECTED_RISK_RESULT
1415
import xyz.block.bittycity.innie.models.Settled
1516
import xyz.block.bittycity.innie.models.WaitingForReversal
1617
import xyz.block.bittycity.innie.testing.Arbitrary.amount
@@ -49,6 +50,29 @@ class DepositRiskControllerTest : BittyCityTestCase() {
4950
}
5051
}
5152

53+
@Test
54+
fun `Fail with unexpected risk result`() = runTest {
55+
val deposit = data.seedDeposit(
56+
state = CheckingDepositRisk,
57+
customerId = customerId.next(),
58+
amount = amount.next(),
59+
exchangeRate = exchangeRate.next(),
60+
targetWalletAddress = walletAddress.next(),
61+
blockchainTransactionId = stringToken.next(),
62+
blockchainTransactionOutputIndex = outputIndex.next(),
63+
paymentToken = stringToken.next(),
64+
)
65+
66+
riskClient.nextRiskResult = RiskEvaluation.ActiveScamWarning().success()
67+
68+
subject.execute(deposit, emptyList(), Operation.EXECUTE).shouldBeSuccess()
69+
70+
depositWithToken(deposit.id) should {
71+
it.state shouldBe WaitingForReversal
72+
it.failureReason shouldBe UNEXPECTED_RISK_RESULT
73+
}
74+
}
75+
5276
@Test
5377
fun `Continue after risk check is ok`() = runTest {
5478
val deposit = data.seedDeposit(

0 commit comments

Comments
 (0)