Skip to content

test(invoice-token): comprehensive test matrix validating Error::NotInit across all public entry points #381

Description

@chizzy192

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

  • All 30+ public methods tested on uninitialized instance.
  • Every invocation asserts Error::NotInit (or exact contract error code).
  • cargo test -p invoice-token passes cleanly.

Target Branch: dev
Estimated Effort: 1–4 hours | Delivery: 1–2 days
Difficulty: Easy

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions