This repository has been archived by the owner on Jan 22, 2025. It is now read-only.
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add set_account to solana-program-test (#21415)
For writing tests, it is often desirable to create a certain situation that would be tedious, or even impossible to create by sending individual transactions. For example, a common attack vector on Solana is to create a copy of some existing account that stores configuration data, but manipulate the data stored there, and then to call a program and pass in the manipulated account, instead of the real account. If one wants to test this, one option is to write a program that you can call to write arbitrary data into a new account account (and possibly change its owner), then include that program in the test context, and send a transaction to call it. This is extremely tedious, and developers are not going to bother doing it. I myself would rather fork solana-program-test to add this `set_account` method, than to write that program. Having a “god mode” method to just write an account, lowers the barrier to writing comprehensive tests. A second reason for introducing this method, is defense in depth. There may be states of the bank that are not reachable *yet* by only sending transactions, but that you might want to test against either way. For example, right now, the balance of a stake account cannot decrease without going through the stake program. But what if Solana were to introduce slashing in the future, and you want to ensure your program is robust against decreases in stake account balance? Right now there is no way to test this, but by introducing this “god mode” to write accounts, the situation becomes testable.
- Loading branch information