2020-06-08 12:03:40 +00:00
{
"title" : "LendingPool: Borrow/repay (variable rate)" ,
"description" : "Test cases for the borrow function, variable mode." ,
"stories" : [
{
"description" : "User 2 deposits 1 DAI to account for rounding errors" ,
"actions" : [
{
"name" : "mint" ,
"args" : {
"reserve" : "DAI" ,
"amount" : "1" ,
"user" : "2"
} ,
"expected" : "success"
} ,
{
"name" : "approve" ,
"args" : {
"reserve" : "DAI" ,
"user" : "2"
} ,
"expected" : "success"
} ,
{
"name" : "deposit" ,
"args" : {
"reserve" : "DAI" ,
"amount" : "1" ,
"user" : "2"
} ,
"expected" : "success"
}
]
} ,
{
2020-08-13 14:58:06 +00:00
"description" : "User 0 deposits 1000 DAI, user 1 deposits 1 WETH as collateral and borrows 100 DAI at variable rate" ,
2020-06-08 12:03:40 +00:00
"actions" : [
{
"name" : "mint" ,
"args" : {
"reserve" : "DAI" ,
"amount" : "1000" ,
"user" : "0"
} ,
"expected" : "success"
} ,
{
"name" : "approve" ,
"args" : {
"reserve" : "DAI" ,
"user" : "0"
} ,
"expected" : "success"
} ,
{
"name" : "deposit" ,
"args" : {
"reserve" : "DAI" ,
"amount" : "1000" ,
"user" : "0"
} ,
"expected" : "success"
} ,
2020-08-13 14:58:06 +00:00
{
"name" : "mint" ,
"args" : {
"reserve" : "WETH" ,
"amount" : "1" ,
"user" : "1"
} ,
"expected" : "success"
} ,
{
"name" : "approve" ,
"args" : {
"reserve" : "WETH" ,
"user" : "1"
} ,
"expected" : "success"
} ,
2020-06-08 12:03:40 +00:00
{
"name" : "deposit" ,
"args" : {
2020-08-13 11:06:23 +00:00
"reserve" : "WETH" ,
2020-06-08 12:03:40 +00:00
"amount" : "1" ,
2020-08-13 14:58:06 +00:00
"user" : "1"
2020-06-08 12:03:40 +00:00
} ,
"expected" : "success"
} ,
{
"name" : "borrow" ,
"args" : {
"reserve" : "DAI" ,
"amount" : "100" ,
"borrowRateMode" : "variable" ,
"user" : "1" ,
"timeTravel" : "365"
} ,
"expected" : "success"
}
]
} ,
{
"description" : "User 1 tries to borrow the rest of the DAI liquidity (revert expected)" ,
"actions" : [
{
"name" : "borrow" ,
"args" : {
"reserve" : "DAI" ,
"amount" : "900" ,
"borrowRateMode" : "variable" ,
"user" : "1"
} ,
"expected" : "revert" ,
"revertMessage" : "There is not enough collateral to cover a new borrow"
}
]
} ,
{
"description" : "User 1 tries to repay 0 DAI (revert expected)" ,
"actions" : [
{
"name" : "repay" ,
"args" : {
"reserve" : "DAI" ,
"amount" : "0" ,
"user" : "1" ,
"onBehalfOf" : "1"
} ,
"expected" : "revert" ,
"revertMessage" : "Amount must be greater than 0"
}
]
} ,
{
2020-07-03 21:20:02 +00:00
"description" : "User 1 repays a small amount of DAI, enough to cover a small part of the interest" ,
2020-06-08 12:03:40 +00:00
"actions" : [
{
"name" : "approve" ,
"args" : {
"reserve" : "DAI" ,
"user" : "1"
} ,
"expected" : "success"
} ,
{
"name" : "repay" ,
"args" : {
"reserve" : "DAI" ,
"amount" : "1.25" ,
"user" : "1" ,
2020-07-03 21:20:02 +00:00
"onBehalfOf" : "1" ,
"borrowRateMode" : "variable"
2020-06-08 12:03:40 +00:00
} ,
"expected" : "success"
}
]
} ,
{
"description" : "User 1 repays the DAI borrow after one year" ,
"actions" : [
{
"name" : "mint" ,
"description" : "Mint 10 DAI to cover the interest" ,
"args" : {
"reserve" : "DAI" ,
"amount" : "10" ,
"user" : "1"
} ,
"expected" : "success"
} ,
{
"name" : "repay" ,
"args" : {
"reserve" : "DAI" ,
"amount" : "-1" ,
"user" : "1" ,
2020-07-03 21:20:02 +00:00
"onBehalfOf" : "1" ,
"borrowRateMode" : "variable"
2020-06-08 12:03:40 +00:00
} ,
"expected" : "success"
}
]
} ,
{
"description" : "User 0 redeems the deposited DAI plus interest" ,
"actions" : [
{
"name" : "redeem" ,
"args" : {
"reserve" : "DAI" ,
"amount" : "-1" ,
"user" : "0"
} ,
"expected" : "success"
}
]
} ,
{
"description" : "User 1 redeems the collateral" ,
"actions" : [
{
"name" : "redeem" ,
"args" : {
2020-08-13 11:06:23 +00:00
"reserve" : "WETH" ,
2020-06-08 12:03:40 +00:00
"amount" : "-1" ,
"user" : "1"
} ,
"expected" : "success"
}
]
} ,
{
2020-08-13 14:58:06 +00:00
"description" : "User 2 deposits a small amount of WETH to account for rounding errors" ,
2020-06-08 12:03:40 +00:00
"actions" : [
2020-08-13 14:58:06 +00:00
{
"name" : "mint" ,
"args" : {
"reserve" : "WETH" ,
"amount" : "1" ,
"user" : "2"
} ,
"expected" : "success"
} ,
{
"name" : "approve" ,
"args" : {
"reserve" : "WETH" ,
"user" : "2"
} ,
"expected" : "success"
} ,
2020-06-08 12:03:40 +00:00
{
"name" : "deposit" ,
"args" : {
2020-08-13 11:06:23 +00:00
"reserve" : "WETH" ,
2020-06-08 12:03:40 +00:00
"amount" : "0.001" ,
"user" : "2" ,
"sendValue" : "0.001"
} ,
"expected" : "success"
}
]
} ,
{
2020-08-13 14:58:06 +00:00
"description" : "User 0 deposits 1 WETH, user 1 deposits 100 LINK as collateral and borrows 0.5 ETH at variable rate" ,
2020-06-08 12:03:40 +00:00
"actions" : [
2020-08-13 14:58:06 +00:00
{
"name" : "mint" ,
"args" : {
"reserve" : "WETH" ,
"amount" : "1" ,
"user" : "0"
} ,
"expected" : "success"
} ,
{
"name" : "approve" ,
"args" : {
"reserve" : "WETH" ,
"user" : "0"
} ,
"expected" : "success"
} ,
2020-06-08 12:03:40 +00:00
{
"name" : "deposit" ,
"args" : {
2020-08-13 11:06:23 +00:00
"reserve" : "WETH" ,
2020-06-08 12:03:40 +00:00
"amount" : "1" ,
2020-08-13 14:58:06 +00:00
"user" : "0"
2020-06-08 12:03:40 +00:00
} ,
"expected" : "success"
} ,
{
"name" : "mint" ,
"args" : {
"reserve" : "LINK" ,
"amount" : "100" ,
"user" : "1"
} ,
"expected" : "success"
} ,
{
"name" : "approve" ,
"args" : {
"reserve" : "LINK" ,
"user" : "1"
} ,
"expected" : "success"
} ,
{
"name" : "deposit" ,
"args" : {
"reserve" : "LINK" ,
"amount" : "100" ,
"user" : "1"
} ,
"expected" : "success"
} ,
{
"name" : "borrow" ,
"args" : {
2020-08-13 11:06:23 +00:00
"reserve" : "WETH" ,
2020-06-08 12:03:40 +00:00
"amount" : "0.5" ,
"borrowRateMode" : "variable" ,
"user" : "1" ,
"timeTravel" : "365"
} ,
"expected" : "success"
}
]
} ,
{
"description" : "User 1 tries to repay 0 ETH" ,
"actions" : [
{
"name" : "repay" ,
"args" : {
2020-08-13 11:06:23 +00:00
"reserve" : "WETH" ,
2020-06-08 12:03:40 +00:00
"amount" : "0" ,
"user" : "1" ,
"onBehalfOf" : "1" ,
2020-06-30 12:09:28 +00:00
"borrowRateMode" : "variable" ,
2020-07-13 08:54:08 +00:00
"sendValue" : "0"
2020-06-08 12:03:40 +00:00
} ,
"expected" : "revert" ,
"revertMessage" : "Amount must be greater than 0"
}
]
} ,
{
2020-08-13 14:58:06 +00:00
"description" : "User 2 tries to repay everything on behalf of user 1 using uint(-1) (revert expected)" ,
2020-06-08 12:03:40 +00:00
"actions" : [
{
"name" : "repay" ,
"args" : {
2020-08-13 11:06:23 +00:00
"reserve" : "WETH" ,
2020-06-08 12:03:40 +00:00
"amount" : "-1" ,
2020-08-13 14:58:06 +00:00
"user" : "2" ,
2020-06-30 12:09:28 +00:00
"borrowRateMode" : "variable" ,
2020-08-13 14:58:06 +00:00
"onBehalfOf" : "1"
2020-06-08 12:03:40 +00:00
} ,
"expected" : "revert" ,
2020-08-13 14:58:06 +00:00
"revertMessage" : "To repay on behalf of an user an explicit amount to repay is needed"
2020-06-08 12:03:40 +00:00
}
]
} ,
{
2020-08-13 14:58:06 +00:00
"description" : "User 3 repays a small amount of WETH on behalf of user 1" ,
2020-06-08 12:03:40 +00:00
"actions" : [
{
2020-08-13 14:58:06 +00:00
"name" : "mint" ,
2020-06-08 12:03:40 +00:00
"args" : {
2020-08-13 11:06:23 +00:00
"reserve" : "WETH" ,
2020-08-13 14:58:06 +00:00
"amount" : "1" ,
"user" : "3"
2020-06-08 12:03:40 +00:00
} ,
2020-08-13 14:58:06 +00:00
"expected" : "success"
} ,
{
"name" : "approve" ,
"args" : {
"reserve" : "WETH" ,
"user" : "3"
} ,
"expected" : "success"
} ,
2020-06-08 12:03:40 +00:00
{
"name" : "repay" ,
"args" : {
2020-08-13 11:06:23 +00:00
"reserve" : "WETH" ,
2020-06-08 12:03:40 +00:00
"amount" : "0.2" ,
"user" : "3" ,
2020-06-30 12:09:28 +00:00
"borrowRateMode" : "variable" ,
2020-08-13 14:58:06 +00:00
"onBehalfOf" : "1"
2020-06-08 12:03:40 +00:00
} ,
"expected" : "success"
}
]
} ,
{
2020-08-13 14:58:06 +00:00
"description" : "User 1 repays the WETH borrow after one year" ,
2020-06-08 12:03:40 +00:00
"actions" : [
2020-08-13 14:58:06 +00:00
{
"name" : "mint" ,
"args" : {
"reserve" : "WETH" ,
"amount" : "1" ,
"user" : "2"
} ,
"expected" : "success"
} ,
{
"name" : "approve" ,
"args" : {
"reserve" : "WETH" ,
"user" : "2"
} ,
"expected" : "success"
} ,
2020-06-08 12:03:40 +00:00
{
"name" : "repay" ,
"args" : {
2020-08-13 11:06:23 +00:00
"reserve" : "WETH" ,
2020-06-08 12:03:40 +00:00
"amount" : "-1" ,
2020-06-30 12:09:28 +00:00
"borrowRateMode" : "variable" ,
2020-06-08 12:03:40 +00:00
"user" : "1" ,
2020-08-13 14:58:06 +00:00
"onBehalfOf" : "1"
2020-06-08 12:03:40 +00:00
} ,
"expected" : "success"
}
]
} ,
{
2020-08-13 14:58:06 +00:00
"description" : "User 0 redeems the deposited WETH plus interest" ,
2020-06-08 12:03:40 +00:00
"actions" : [
{
"name" : "redeem" ,
"args" : {
2020-08-13 11:06:23 +00:00
"reserve" : "WETH" ,
2020-06-08 12:03:40 +00:00
"amount" : "-1" ,
"user" : "0"
} ,
"expected" : "success"
}
]
} ,
{
"description" : "User 1 redeems the collateral" ,
"actions" : [
{
"name" : "redeem" ,
"args" : {
"reserve" : "LINK" ,
"amount" : "-1" ,
"user" : "1"
} ,
"expected" : "success"
}
]
} ,
{
"description" : "User 2 deposits 1 USDC to account for rounding errors" ,
"actions" : [
{
"name" : "mint" ,
"args" : {
"reserve" : "USDC" ,
"amount" : "1" ,
"user" : "2"
} ,
"expected" : "success"
} ,
{
"name" : "approve" ,
"args" : {
"reserve" : "USDC" ,
"user" : "2"
} ,
"expected" : "success"
} ,
{
"name" : "deposit" ,
"args" : {
"reserve" : "USDC" ,
"amount" : "1" ,
"user" : "2"
} ,
"expected" : "success"
}
]
} ,
{
2020-08-13 14:58:06 +00:00
"description" : "User 0 deposits 1000 USDC, user 1 deposits 1 WETH as collateral and borrows 100 USDC at variable rate" ,
2020-06-08 12:03:40 +00:00
"actions" : [
{
"name" : "mint" ,
"args" : {
"reserve" : "USDC" ,
"amount" : "1000" ,
"user" : "0"
} ,
"expected" : "success"
} ,
{
"name" : "approve" ,
"args" : {
"reserve" : "USDC" ,
"user" : "0"
} ,
"expected" : "success"
} ,
{
"name" : "deposit" ,
"args" : {
"reserve" : "USDC" ,
"amount" : "1000" ,
"user" : "0"
} ,
"expected" : "success"
} ,
2020-08-13 14:58:06 +00:00
{
"name" : "mint" ,
"args" : {
"reserve" : "WETH" ,
"amount" : "1" ,
"user" : "1"
} ,
"expected" : "success"
} ,
{
"name" : "approve" ,
"args" : {
"reserve" : "WETH" ,
"user" : "1"
} ,
"expected" : "success"
} ,
2020-06-08 12:03:40 +00:00
{
"name" : "deposit" ,
"args" : {
2020-08-13 11:06:23 +00:00
"reserve" : "WETH" ,
2020-06-08 12:03:40 +00:00
"amount" : "1" ,
2020-08-13 14:58:06 +00:00
"user" : "1"
2020-06-08 12:03:40 +00:00
} ,
"expected" : "success"
} ,
{
"name" : "borrow" ,
"args" : {
"reserve" : "USDC" ,
"amount" : "100" ,
"borrowRateMode" : "variable" ,
"user" : "1" ,
"timeTravel" : "365"
} ,
"expected" : "success"
}
]
} ,
{
"description" : "User 1 tries to borrow the rest of the USDC liquidity (revert expected)" ,
"actions" : [
{
"name" : "borrow" ,
"args" : {
"reserve" : "USDC" ,
"amount" : "900" ,
"borrowRateMode" : "variable" ,
"user" : "1"
} ,
"expected" : "revert" ,
"revertMessage" : "There is not enough collateral to cover a new borrow"
}
]
} ,
{
"description" : "User 1 repays the USDC borrow after one year" ,
"actions" : [
{
"name" : "mint" ,
"description" : "Mint 10 USDC to cover the interest" ,
"args" : {
"reserve" : "USDC" ,
"amount" : "10" ,
"user" : "1"
} ,
"expected" : "success"
} ,
{
"name" : "approve" ,
"args" : {
"reserve" : "USDC" ,
"user" : "1"
} ,
"expected" : "success"
} ,
{
"name" : "repay" ,
"args" : {
"reserve" : "USDC" ,
"amount" : "-1" ,
"user" : "1" ,
2020-07-03 21:20:02 +00:00
"onBehalfOf" : "1" ,
"borrowRateMode" : "variable"
2020-07-13 08:54:08 +00:00
} ,
2020-06-08 12:03:40 +00:00
"expected" : "success"
}
]
} ,
{
"description" : "User 0 redeems the deposited USDC plus interest" ,
"actions" : [
{
"name" : "redeem" ,
"args" : {
"reserve" : "USDC" ,
"amount" : "-1" ,
"user" : "0"
} ,
"expected" : "success"
}
]
} ,
{
"description" : "User 1 redeems the collateral" ,
"actions" : [
{
"name" : "redeem" ,
"args" : {
2020-08-13 11:06:23 +00:00
"reserve" : "WETH" ,
2020-06-08 12:03:40 +00:00
"amount" : "-1" ,
"user" : "1"
} ,
"expected" : "success"
}
]
} ,
{
"description" : "User 1 deposits 1000 DAI, user 3 tries to borrow 1000 DAI without any collateral (revert expected)" ,
"actions" : [
{
"name" : "mint" ,
"args" : {
"reserve" : "DAI" ,
"amount" : "1000" ,
"user" : "1"
} ,
"expected" : "success"
} ,
{
"name" : "approve" ,
"args" : {
"reserve" : "DAI" ,
"user" : "1"
} ,
"expected" : "success"
} ,
{
"name" : "deposit" ,
"args" : {
"reserve" : "DAI" ,
"amount" : "1000" ,
"user" : "1"
} ,
"expected" : "success"
} ,
{
"name" : "borrow" ,
"args" : {
"reserve" : "DAI" ,
"amount" : "1000" ,
"borrowRateMode" : "variable" ,
"user" : "3"
} ,
"expected" : "revert" ,
"revertMessage" : "The collateral balance is 0"
}
]
} ,
{
"description" : "user 3 deposits 0.1 ETH collateral to borrow 100 DAI; 0.1 ETH is not enough to borrow 100 DAI (revert expected)" ,
"actions" : [
2020-08-13 14:58:06 +00:00
{
"name" : "mint" ,
"args" : {
"reserve" : "WETH" ,
"amount" : "0.1" ,
"user" : "1"
} ,
"expected" : "success"
} ,
{
"name" : "approve" ,
"args" : {
"reserve" : "WETH" ,
"user" : "1"
} ,
"expected" : "success"
} ,
2020-06-08 12:03:40 +00:00
{
"name" : "deposit" ,
"args" : {
2020-08-13 11:06:23 +00:00
"reserve" : "WETH" ,
2020-06-08 12:03:40 +00:00
"amount" : "0.1" ,
2020-08-13 14:58:06 +00:00
"user" : "3"
2020-06-08 12:03:40 +00:00
} ,
"expected" : "success"
} ,
{
"name" : "borrow" ,
"args" : {
"reserve" : "DAI" ,
"amount" : "100" ,
"borrowRateMode" : "variable" ,
"user" : "3"
} ,
"expected" : "revert" ,
"revertMessage" : "There is not enough collateral to cover a new borrow"
}
]
} ,
{
"description" : "user 3 redeems the 0.1 ETH" ,
"actions" : [
{
"name" : "redeem" ,
"args" : {
2020-08-13 11:06:23 +00:00
"reserve" : "WETH" ,
2020-06-08 12:03:40 +00:00
"amount" : "-1" ,
"user" : "3"
} ,
"expected" : "success"
}
]
} ,
{
"description" : "User 1 deposits 1000 USDC, user 3 tries to borrow 1000 USDC without any collateral (revert expected)" ,
"actions" : [
{
"name" : "mint" ,
"args" : {
"reserve" : "USDC" ,
"amount" : "1000" ,
"user" : "1"
} ,
"expected" : "success"
} ,
{
"name" : "approve" ,
"args" : {
"reserve" : "USDC" ,
"user" : "1"
} ,
"expected" : "success"
} ,
{
"name" : "deposit" ,
"args" : {
"reserve" : "USDC" ,
"amount" : "1000" ,
"user" : "1"
} ,
"expected" : "success"
} ,
{
"name" : "borrow" ,
"args" : {
"reserve" : "USDC" ,
"amount" : "1000" ,
"borrowRateMode" : "variable" ,
"user" : "3"
} ,
"expected" : "revert" ,
"revertMessage" : "The collateral balance is 0"
}
]
} ,
{
"description" : "user 3 deposits 0.1 ETH collateral to borrow 100 USDC; 0.1 ETH is not enough to borrow 100 USDC (revert expected)" ,
"actions" : [
2020-08-13 14:58:06 +00:00
{
"name" : "mint" ,
"args" : {
"reserve" : "WETH" ,
"amount" : "1" ,
"user" : "3"
} ,
"expected" : "success"
} ,
{
"name" : "approve" ,
"args" : {
"reserve" : "WETH" ,
"user" : "1"
} ,
"expected" : "success"
} ,
2020-06-08 12:03:40 +00:00
{
"name" : "deposit" ,
"args" : {
2020-08-13 11:06:23 +00:00
"reserve" : "WETH" ,
2020-06-08 12:03:40 +00:00
"amount" : "0.1" ,
"user" : "3" ,
"sendValue" : "0.1"
} ,
"expected" : "success"
} ,
{
"name" : "borrow" ,
"args" : {
"reserve" : "USDC" ,
"amount" : "100" ,
"borrowRateMode" : "variable" ,
"user" : "3"
} ,
"expected" : "revert" ,
"revertMessage" : "There is not enough collateral to cover a new borrow"
}
]
} ,
{
"description" : "user 3 redeems the 0.1 ETH" ,
"actions" : [
{
"name" : "redeem" ,
"args" : {
2020-08-13 11:06:23 +00:00
"reserve" : "WETH" ,
2020-06-08 12:03:40 +00:00
"amount" : "-1" ,
"user" : "3"
} ,
"expected" : "success"
}
]
} ,
{
2020-08-13 14:58:06 +00:00
"description" : "User 0 deposits 1000 DAI, user 6 deposits 2 WETH and borrow 100 DAI at variable rate first, then 100 DAI at stable rate, repays everything. User 0 redeems" ,
2020-06-08 12:03:40 +00:00
"actions" : [
{
"name" : "mint" ,
"args" : {
"reserve" : "DAI" ,
"amount" : "1000" ,
"user" : "0"
} ,
"expected" : "success"
} ,
{
"name" : "approve" ,
"args" : {
"reserve" : "DAI" ,
"user" : "0"
} ,
"expected" : "success"
} ,
{
"name" : "deposit" ,
"args" : {
"reserve" : "DAI" ,
"amount" : "1000" ,
"user" : "0"
} ,
"expected" : "success"
} ,
2020-08-13 14:58:06 +00:00
{
"name" : "mint" ,
"args" : {
"reserve" : "WETH" ,
"amount" : "2" ,
"user" : "6"
} ,
"expected" : "success"
} ,
{
"name" : "approve" ,
"args" : {
"reserve" : "WETH" ,
"user" : "6"
} ,
"expected" : "success"
} ,
2020-06-08 12:03:40 +00:00
{
"name" : "deposit" ,
"args" : {
2020-08-13 11:06:23 +00:00
"reserve" : "WETH" ,
2020-06-08 12:03:40 +00:00
"amount" : "2" ,
"user" : "6" ,
"sendValue" : "2"
} ,
"expected" : "success"
} ,
{
"name" : "borrow" ,
"args" : {
"reserve" : "DAI" ,
"amount" : "100" ,
"borrowRateMode" : "variable" ,
"user" : "6" ,
"timeTravel" : "365"
} ,
"expected" : "success"
} ,
{
"name" : "borrow" ,
"args" : {
"reserve" : "DAI" ,
"amount" : "100" ,
"borrowRateMode" : "stable" ,
"user" : "6" ,
"timeTravel" : "365"
} ,
"expected" : "success"
} ,
{
"name" : "mint" ,
"description" : "Mint 50 DAI to cover the interest" ,
"args" : {
"reserve" : "DAI" ,
"amount" : "50" ,
"user" : "6"
} ,
"expected" : "success"
} ,
{
"name" : "approve" ,
"args" : {
"reserve" : "DAI" ,
"user" : "6"
} ,
"expected" : "success"
} ,
{
"name" : "repay" ,
"args" : {
"reserve" : "DAI" ,
"amount" : "-1" ,
"user" : "6" ,
2020-07-03 21:20:02 +00:00
"onBehalfOf" : "6" ,
"borrowRateMode" : "stable"
} ,
"expected" : "success"
} ,
{
"name" : "repay" ,
"args" : {
"reserve" : "DAI" ,
"amount" : "-1" ,
"user" : "6" ,
"onBehalfOf" : "6" ,
"borrowRateMode" : "variable"
2020-06-08 12:03:40 +00:00
} ,
"expected" : "success"
} ,
{
"name" : "redeem" ,
"args" : {
"reserve" : "DAI" ,
"amount" : "-1" ,
"user" : "0"
} ,
"expected" : "success"
}
]
}
]
}