Context & Problem Statement
The InvoiceToken contract in contracts/invoice-token/src/lib.rs exposes over 30 public entry points (SEP-41 token operations, allowances, administrative setters, batch minting, and pause controls). When invoked on an uninitialized contract instance, every functional method must reject with Error::NotInit without panicking or modifying state.
This issue adds a single comprehensive test suite test_uninitialized_methods_rejected in contracts/invoice-token/src/test.rs that systematically exercises every public entry point on a freshly deployed, uninitialized contract instance.
Architectural Motivation & Technical Requirements
- In
contracts/invoice-token/src/test.rs:
- Instantiate a clean
InvoiceTokenClient without invoking initialize().
- Assert that calling each of the following returns
Error::NotInit:
- Read methods:
name, symbol, decimals, total_supply, balance, balance_batch, allowance, get_nonce, invoice_id, transfer_locked, paused.
- Write methods:
transfer, transfer_from, approve, extend_allowance, revoke_approval, burn, burn_from, mint, mint_batch, set_transfer_locked, set_minter, set_decimals, set_paused.
- Verify that no storage keys are written during failed invocations.
Acceptance Criteria
Target Branch: dev
Estimated Effort: 1–4 hours | Delivery: 1–2 days
Difficulty: Easy
Context & Problem Statement
The
InvoiceTokencontract incontracts/invoice-token/src/lib.rsexposes over 30 public entry points (SEP-41 token operations, allowances, administrative setters, batch minting, and pause controls). When invoked on an uninitialized contract instance, every functional method must reject withError::NotInitwithout panicking or modifying state.This issue adds a single comprehensive test suite
test_uninitialized_methods_rejectedincontracts/invoice-token/src/test.rsthat systematically exercises every public entry point on a freshly deployed, uninitialized contract instance.Architectural Motivation & Technical Requirements
contracts/invoice-token/src/test.rs:InvoiceTokenClientwithout invokinginitialize().Error::NotInit:name,symbol,decimals,total_supply,balance,balance_batch,allowance,get_nonce,invoice_id,transfer_locked,paused.transfer,transfer_from,approve,extend_allowance,revoke_approval,burn,burn_from,mint,mint_batch,set_transfer_locked,set_minter,set_decimals,set_paused.Acceptance Criteria
Error::NotInit(or exact contract error code).cargo test -p invoice-tokenpasses cleanly.Target Branch:
devEstimated Effort: 1–4 hours | Delivery: 1–2 days
Difficulty: Easy