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
namefield 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 |