pub struct MockTransactionBuilder<'chain> { /* private fields */ }testing only.Expand description
A builder for a MockTransaction that is coupled to a concrete MockChain.
It is the public entry point for executing a transaction against a chain and is created through
MockChain::build_transaction. Input notes are added explicitly through
Self::authenticated_input_note and Self::unauthenticated_input_note. The transaction
inputs are only resolved against the chain in Self::build, once all input notes are known,
by calling MockChain::get_transaction_inputs.
§Examples
let mut builder = MockChain::builder();
let sender = builder.add_existing_mock_account(Auth::IncrNonce)?;
let account = builder.add_existing_mock_account(Auth::IncrNonce)?;
let note = builder.add_p2id_note(
sender.id(),
account.id(),
&[FungibleAsset::mock(100)],
NoteType::Public,
)?;
let chain = builder.build()?;
let executed = chain
.build_transaction(account.id())
.authenticated_input_note(note.id())
.build()?
.execute()
.await?;
assert_eq!(executed.input_notes().num_notes(), 1);Implementations§
Source§impl<'chain> MockTransactionBuilder<'chain>
impl<'chain> MockTransactionBuilder<'chain>
Sourcepub fn authenticated_input_note(
self,
note_id: NoteId,
) -> MockTransactionBuilder<'chain>
pub fn authenticated_input_note( self, note_id: NoteId, ) -> MockTransactionBuilder<'chain>
Adds an authenticated input note that the transaction consumes.
The note must already be committed to the chain so that its inclusion proof can be resolved
in Self::build.
Sourcepub fn authenticated_input_notes(
self,
note_ids: impl IntoIterator<Item = NoteId>,
) -> MockTransactionBuilder<'chain>
pub fn authenticated_input_notes( self, note_ids: impl IntoIterator<Item = NoteId>, ) -> MockTransactionBuilder<'chain>
Adds multiple authenticated input notes that the transaction consumes.
This is the iterator equivalent of Self::authenticated_input_note.
Sourcepub fn unauthenticated_input_note(
self,
note: Note,
) -> MockTransactionBuilder<'chain>
pub fn unauthenticated_input_note( self, note: Note, ) -> MockTransactionBuilder<'chain>
Adds an unauthenticated input note that the transaction consumes.
Contrary to Self::authenticated_input_note, the note does not need to be committed to
the chain.
Sourcepub fn unauthenticated_input_notes(
self,
notes: impl IntoIterator<Item = Note>,
) -> MockTransactionBuilder<'chain>
pub fn unauthenticated_input_notes( self, notes: impl IntoIterator<Item = Note>, ) -> MockTransactionBuilder<'chain>
Adds multiple unauthenticated input notes that the transaction consumes.
This is the iterator equivalent of Self::unauthenticated_input_note.
Sourcepub fn reference_block(
self,
reference_block: impl Into<BlockNumber>,
) -> MockTransactionBuilder<'chain>
pub fn reference_block( self, reference_block: impl Into<BlockNumber>, ) -> MockTransactionBuilder<'chain>
Sets the block the transaction executes against.
By default the transaction is built against the chain’s latest block. Use this to execute against an earlier block instead, e.g. to test block-height-dependent script logic such as timelocks or note expiration. All input notes must have been created at or before this block.
Sourcepub fn authenticator(
self,
authenticator: Option<BasicAuthenticator>,
) -> MockTransactionBuilder<'chain>
pub fn authenticator( self, authenticator: Option<BasicAuthenticator>, ) -> MockTransactionBuilder<'chain>
Set the authenticator for the transaction (if needed).
Sourcepub fn extend_advice_inputs(
self,
advice_inputs: AdviceInputs,
) -> MockTransactionBuilder<'chain>
pub fn extend_advice_inputs( self, advice_inputs: AdviceInputs, ) -> MockTransactionBuilder<'chain>
Extends the advice inputs with the provided AdviceInputs instance.
Sourcepub fn add_advice_map_entry(
self,
key: Word,
value: Vec<Felt>,
) -> MockTransactionBuilder<'chain>
pub fn add_advice_map_entry( self, key: Word, value: Vec<Felt>, ) -> MockTransactionBuilder<'chain>
Inserts a single key-value pair into the advice inputs map.
To add multiple entries, call this repeatedly or use Self::extend_advice_inputs.
Sourcepub fn foreign_accounts(
self,
inputs: impl IntoIterator<Item = (Account, AccountWitness)>,
) -> MockTransactionBuilder<'chain>
pub fn foreign_accounts( self, inputs: impl IntoIterator<Item = (Account, AccountWitness)>, ) -> MockTransactionBuilder<'chain>
Sets foreign account inputs that are used by the transaction.
Sourcepub fn tx_script(
self,
tx_script: TransactionScript,
) -> MockTransactionBuilder<'chain>
pub fn tx_script( self, tx_script: TransactionScript, ) -> MockTransactionBuilder<'chain>
Sets the desired transaction script.
Sourcepub fn tx_script_args(
self,
tx_script_args: Word,
) -> MockTransactionBuilder<'chain>
pub fn tx_script_args( self, tx_script_args: Word, ) -> MockTransactionBuilder<'chain>
Sets the transaction script arguments.
Sourcepub fn send_notes_script(
self,
script: &SendNotesTransactionScript,
) -> MockTransactionBuilder<'chain>
pub fn send_notes_script( self, script: &SendNotesTransactionScript, ) -> MockTransactionBuilder<'chain>
Sets the transaction script and script arguments required to execute the provided
SendNotesTransactionScript.
The script’s advice map entries are embedded in its MAST forest, so they load with the script and need not be set here.
Sourcepub fn auth_args(self, auth_args: Word) -> MockTransactionBuilder<'chain>
pub fn auth_args(self, auth_args: Word) -> MockTransactionBuilder<'chain>
Sets the desired auth arguments.
Sourcepub fn extend_note_args(
self,
note_args: BTreeMap<NoteId, Word>,
) -> MockTransactionBuilder<'chain>
pub fn extend_note_args( self, note_args: BTreeMap<NoteId, Word>, ) -> MockTransactionBuilder<'chain>
Extends the note arguments map with the provided one.
Sourcepub fn expected_output_note(
self,
output_note: RawOutputNote,
) -> MockTransactionBuilder<'chain>
pub fn expected_output_note( self, output_note: RawOutputNote, ) -> MockTransactionBuilder<'chain>
Adds a single expected output note.
A RawOutputNote::Partial note is ignored, since it does not carry the recipient details
required to reconstruct the note.
Sourcepub fn expected_output_notes(
self,
output_notes: Vec<RawOutputNote>,
) -> MockTransactionBuilder<'chain>
pub fn expected_output_notes( self, output_notes: Vec<RawOutputNote>, ) -> MockTransactionBuilder<'chain>
Extends the expected output notes.
This is the iterator equivalent of Self::expected_output_note.
Sourcepub fn add_signature(
self,
pub_key: PublicKeyCommitment,
message: Word,
signature: Signature,
) -> MockTransactionBuilder<'chain>
pub fn add_signature( self, pub_key: PublicKeyCommitment, message: Word, signature: Signature, ) -> MockTransactionBuilder<'chain>
Adds a new signature for the message and the public key.
Sourcepub fn add_note_script(
self,
script: NoteScript,
) -> MockTransactionBuilder<'chain>
pub fn add_note_script( self, script: NoteScript, ) -> MockTransactionBuilder<'chain>
Adds a note script to the mock transaction for testing.
Sourcepub fn with_source_manager(
self,
source_manager: Arc<dyn SourceManagerSync>,
) -> MockTransactionBuilder<'chain>
pub fn with_source_manager( self, source_manager: Arc<dyn SourceManagerSync>, ) -> MockTransactionBuilder<'chain>
Sets the SourceManagerSync on the MockTransaction that will be built.
This source manager should contain the sources of all involved scripts and account code in order to provide better error messages if an error occurs.
Sourcepub fn build(self) -> Result<MockTransaction, Error>
pub fn build(self) -> Result<MockTransaction, Error>
Builds the MockTransaction.
The configured account and input notes are resolved into TransactionInputs against the
Self::reference_block (defaulting to the chain’s latest block) through
MockChain::get_transaction_inputs, and the remaining configuration is assembled into the
MockTransaction.
Trait Implementations§
Source§impl<'chain> Clone for MockTransactionBuilder<'chain>
impl<'chain> Clone for MockTransactionBuilder<'chain>
Source§fn clone(&self) -> MockTransactionBuilder<'chain>
fn clone(&self) -> MockTransactionBuilder<'chain>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl<'chain> !RefUnwindSafe for MockTransactionBuilder<'chain>
impl<'chain> !UnwindSafe for MockTransactionBuilder<'chain>
impl<'chain> Freeze for MockTransactionBuilder<'chain>
impl<'chain> Send for MockTransactionBuilder<'chain>
impl<'chain> Sync for MockTransactionBuilder<'chain>
impl<'chain> Unpin for MockTransactionBuilder<'chain>
impl<'chain> UnsafeUnpin for MockTransactionBuilder<'chain>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::RequestSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more