-
Notifications
You must be signed in to change notification settings - Fork 1
Payment Driver ‐ Test Scenarios
Kamil Koczurek edited this page Jul 27, 2023
·
18 revisions
- All tests are run with multi transactions on or off (with exceptions). Check status at the end.
- Most tests execute with implied preconditions -- enough tokens and gas to cover all transactions, and low gas price.
- Status is intentionally left as TBD until the API is designed.
Test Number | Preconditions | Description | Steps | Expected Result | Associated Payment Driver Status |
---|---|---|---|---|---|
1 | - | Single token transfer | transfer tokens from account A to account B
|
A and B balance changes accordingly |
TBD |
2 | - | Multiple token transfers from A to B
|
do n times: transfer tokens from A to B
|
A and B` balance changes accordingly |
TBD |
3 | - | Token transfer to different accounts w/o duplicates | do n times: transfer tokens from A to Bn
|
A and B{1..n} balances change accordingly |
TBD |
4 | - | Multiple token transfers to multiple accounts w/ duplicates | do n times: transfer tokens from A to Br(n) where r(n) is not bijective |
A and all Br(n) balances change accordingly |
TBD |
5 | insufficient gas for transaction | Single transaction when no gas on account | transfer tokens from A to B
|
Driver detects insufficient gas for the transaction | TBD |
6 | insufficient token for transaction | Single transaction when no token on account | transfer tokens from A to B
|
Driver detects insufficient token for transaction | TBD |
7 | missing private key in config | Single transaction that you can not sign | transfer tokens from A to B
|
Driver detects that the key is missing, A and B balances do not change |
TBD |
8 | misconfigured chain id | Single transaction | transfer tokens from A to B
|
Driver detects invalid / missing chain id, A and B balances do not change |
TBD |
9 | - | Transaction to null address | transfer tokens from A to null address |
Driver detects invalid transaction, A and B balances do not change |
TBD |
10 | Blockchain in high gas state. | Single transaction with gas limit set low, after deadline | transfer tokens from A to B
|
Driver detects stuck transaction, A and B balances do not change |
TBD |
11 | high gas | Stuck transaction retry | Transfer tokens from A to B -> transaction is stuck due to low gas -> transaction is cancelled -> transaction is retried |
The second transaction succeeds, A and B balance changes accordingly |
TBD |
12 | gas price is manipulated as part of the test | Stuck transaction unstucks during retry | Transfer tokens from A to B -> transaction is stuck due to low gas -> transaction is cancelled (-> blockchain accepts the old transaction) -> new transaction is sent with higher gas |
Driver detects the second transaction fails because the previous one passed and reckognizes that the situation is OK, A and B balance changes accordingly |
TBD |
13 | gas price is manipulated as part of the test | Stuck transaction's retry is stuck as well, old transaction passes during second retry | Transfer tokens from A to B -> transaction is stuck due to low gas -> transaction is cancelled (-> gas price increased) -> new transaction is sent with higher gas (-> gas falls and old transaction is accepted) -> new transaction is sent with higher gas |
Driver detects the third transaction fails because the previous one passed and reckognizes that the situation is OK, A and B balance changes accordingly |
TBD |
14 | different setup: two instances of the payment driver executing conflicting transactions from one account | Single transaction w/ wrong nonce | Both instances: transfer from A to B
|
One instance succeeds, the other detects that the transaction failed due to wrong nonce. A and B balance changes accordingly |
TBD |
15 | - | Load tests (for example 100000 transactions to be processed) | the same as test (4) but with large n
|
A and B{1..n} balances change accordingly |
TBD |
TBD | TBD | TBD | TBD | TBD | TBD |
This tests can be preformed in different configurations (for example payments generated during the run)
f