Account Management
Overview​
Flow accounts are not derived from a private key. This creates an issues for testing, since you need to create actors in a specific order to use their addresses properly.
To reduce this friction, getAccountAddress
, allows you to access a specific address using an alias. This way you can think about actual actors -- for example Alice
and Bob
-- without needing to know their Flow addresses.
It also helps you to write tests in a sequential or non-sequential way. Calling this method for the first time will create a new account and return the address. Calling it a second time with the same alias again will return the Flow address for that account, without creating new account.
Private Key Management​
Universal private key​
By default, accounts created and consumed by the Flow JS Testing library will use a universal private key for signing transactions. Generally, this alleviates the burden of any low-level key management and streamlines the process of testing cadence code.
Custom private keys​
However, under some circumstances the user may wish to create accounts (see: createAccount
) or sign for accounts (see: sendTransaction
) using custom private keys (i.e. private key value, hashing algorithm, signing algorithm, etc.) - this functionality is facilitated by the aforementioned methods.
getAccountAddress
​
Resolves name alias to a Flow address (0x
prefixed) under the following conditions:
- If an account with a specific name has not been previously accessed, the framework will create a new one and then store it under the provided alias.
- Next time when you call this method, it will grab exactly the same account. This allows you to create several accounts up-front and then use them throughout your code, without worrying that accounts match or trying to store and manage specific addresses.
Arguments​
Name | Type | Description |
---|---|---|
alias | string | The alias to reference or create. |
Returns​
Type | Description |
---|---|
Address | 0x prefixed address of aliased account |
Usage​
_10import {getAccountAddress} from "@onflow/flow-js-testing"_10_10const main = async () => {_10 const Alice = await getAccountAddress("Alice")_10 console.log({Alice})_10}_10_10main()
createAccount({name, keys})
​
In some cases, you may wish to manually create an account with a particular set of private keys
Options​
Pass in the following as a single object with the following keys.
Key | Type | Required | Description |
---|---|---|---|
name | string | No | human-readable name to be associated with created account (will be used for address lookup within getAccountAddress) |
keys | [KeyObject or PublicKey] | No | An array of KeyObjects or PublicKeys to be added to the account upon creation (defaults to the universal private key) |
📣 if
name
field not provided, the account address will not be cached and you will be unable to look it up usinggetAccountAddress
.
Returns​
Type | Description |
---|---|
Address | 0x prefixed address of created account |