Skip to content

test(drive): add comprehensive tests for verify module#3233

Merged
QuantumExplorer merged 2 commits into
v3.1-devfrom
test/drive/state-transition-action-coverage-2
Mar 12, 2026
Merged

test(drive): add comprehensive tests for verify module#3233
QuantumExplorer merged 2 commits into
v3.1-devfrom
test/drive/state-transition-action-coverage-2

Conversation

@QuantumExplorer

Copy link
Copy Markdown
Member

Issue being fixed or feature implemented

Improve test coverage for packages/rs-drive/src/verify/ to reach 95%+. The verify module had minimal test coverage despite containing ~12,900 lines of proof verification logic.

What was done?

Added 156 tests across 112 files in the verify directory:

Phase 1: Version-dispatch tests (72 tests)

  • Tests the UnknownVersionMismatch error branch for all ~55 version-dispatch mod.rs files
  • Covers: identity (16), tokens (14), voting (7), system (7), group (5), shielded (9), address_funds (6), contract (3), document (3), single_document (2), state_transition (1)

Phase 2: Prove-then-verify roundtrip tests (84 tests)

  • Full roundtrip tests: setup Drive, insert data, prove, verify, assert
  • Identity: nonce, contract nonce, revision, balance+revision, full identity, keys, non-unique key hash (12 tests)
  • Contract: verify contract, contract history, contract serialization (6 tests)
  • System: elements, epoch infos, finalized epoch infos, upgrade state, upgrade vote status (10 tests)
  • Tokens: balance, info, status, direct selling price(s), pre-programmed distributions, perpetual distribution last paid time (14 tests)
  • Document: proof, proof keep serialized, start at document (4 tests)
  • Single document: proof, proof keep serialized (4 tests)
  • Group: action signers total power, active action infos (3 tests)
  • Shielded: pool state, nullifiers, anchors, most recent anchor, recent nullifier changes, compacted nullifier changes (14 tests)
  • Address funds: address info, recent balance changes, compacted balance changes (7 tests)
  • State transition: token transition path queries (4 tests)

How Has This Been Tested?

cargo test -p drive --lib verify
# test result: ok. 156 passed; 0 failed; 0 ignored

All tests run in ~2.6 seconds.

Breaking Changes

None.

Checklist:

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated relevant unit/integration/functional/e2e tests
  • I have added "!" to the title and described breaking changes in the corresponding section if my code contains any
  • I have made corresponding changes to the documentation if needed

For repository code-owners and collaborators only

  • I have assigned this pull request to a milestone

Add 156 tests covering the verify directory:
- 72 version-dispatch tests for UnknownVersionMismatch error branches
- 84 prove-then-verify roundtrip tests for v0 implementations

Categories covered: identity, contract, tokens, voting, system,
group, shielded, address_funds, document, single_document, and
state_transition.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Mar 12, 2026

Copy link
Copy Markdown
Contributor

Warning

Rate limit exceeded

@QuantumExplorer has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 21 minutes and 24 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 7a1b471c-a690-4b07-aa2d-8ef2511e2f36

📥 Commits

Reviewing files that changed from the base of the PR and between fabf990 and bc24c16.

📒 Files selected for processing (112)
  • packages/rs-drive/src/verify/address_funds/verify_address_funds_branch_query/mod.rs
  • packages/rs-drive/src/verify/address_funds/verify_address_funds_trunk_query/mod.rs
  • packages/rs-drive/src/verify/address_funds/verify_address_info/mod.rs
  • packages/rs-drive/src/verify/address_funds/verify_address_info/v0/mod.rs
  • packages/rs-drive/src/verify/address_funds/verify_addresses_infos/mod.rs
  • packages/rs-drive/src/verify/address_funds/verify_compacted_address_balance_changes/mod.rs
  • packages/rs-drive/src/verify/address_funds/verify_compacted_address_balance_changes/v0/mod.rs
  • packages/rs-drive/src/verify/address_funds/verify_recent_address_balance_changes/mod.rs
  • packages/rs-drive/src/verify/address_funds/verify_recent_address_balance_changes/v0/mod.rs
  • packages/rs-drive/src/verify/contract/verify_contract/mod.rs
  • packages/rs-drive/src/verify/contract/verify_contract/v0/mod.rs
  • packages/rs-drive/src/verify/contract/verify_contract_history/mod.rs
  • packages/rs-drive/src/verify/contract/verify_contract_history/v0/mod.rs
  • packages/rs-drive/src/verify/contract/verify_contract_return_serialization/mod.rs
  • packages/rs-drive/src/verify/contract/verify_contract_return_serialization/v0/mod.rs
  • packages/rs-drive/src/verify/document/verify_proof/mod.rs
  • packages/rs-drive/src/verify/document/verify_proof/v0/mod.rs
  • packages/rs-drive/src/verify/document/verify_proof_keep_serialized/mod.rs
  • packages/rs-drive/src/verify/document/verify_proof_keep_serialized/v0/mod.rs
  • packages/rs-drive/src/verify/document/verify_start_at_document_in_proof/mod.rs
  • packages/rs-drive/src/verify/document/verify_start_at_document_in_proof/v0/mod.rs
  • packages/rs-drive/src/verify/group/verify_action_signers/mod.rs
  • packages/rs-drive/src/verify/group/verify_action_signers_total_power/mod.rs
  • packages/rs-drive/src/verify/group/verify_action_signers_total_power/v0/mod.rs
  • packages/rs-drive/src/verify/group/verify_active_action_infos/mod.rs
  • packages/rs-drive/src/verify/group/verify_active_action_infos/v0/mod.rs
  • packages/rs-drive/src/verify/group/verify_group_info/mod.rs
  • packages/rs-drive/src/verify/group/verify_group_infos_in_contract/mod.rs
  • packages/rs-drive/src/verify/identity/verify_full_identities_by_public_key_hashes/mod.rs
  • packages/rs-drive/src/verify/identity/verify_full_identity_by_identity_id/mod.rs
  • packages/rs-drive/src/verify/identity/verify_full_identity_by_identity_id/v0/mod.rs
  • packages/rs-drive/src/verify/identity/verify_full_identity_by_non_unique_public_key_hash/mod.rs
  • packages/rs-drive/src/verify/identity/verify_full_identity_by_non_unique_public_key_hash/v0/mod.rs
  • packages/rs-drive/src/verify/identity/verify_full_identity_by_unique_public_key_hash/mod.rs
  • packages/rs-drive/src/verify/identity/verify_identities_contract_keys/mod.rs
  • packages/rs-drive/src/verify/identity/verify_identity_balance_and_revision_for_identity_id/v0/mod.rs
  • packages/rs-drive/src/verify/identity/verify_identity_balance_for_identity_id/mod.rs
  • packages/rs-drive/src/verify/identity/verify_identity_balance_revision_and_addresses_from_inputs/mod.rs
  • packages/rs-drive/src/verify/identity/verify_identity_balances_for_identity_ids/mod.rs
  • packages/rs-drive/src/verify/identity/verify_identity_contract_nonce/mod.rs
  • packages/rs-drive/src/verify/identity/verify_identity_contract_nonce/v0/mod.rs
  • packages/rs-drive/src/verify/identity/verify_identity_id_by_non_unique_public_key_hash/mod.rs
  • packages/rs-drive/src/verify/identity/verify_identity_id_by_non_unique_public_key_hash/v0/mod.rs
  • packages/rs-drive/src/verify/identity/verify_identity_id_by_unique_public_key_hash/mod.rs
  • packages/rs-drive/src/verify/identity/verify_identity_ids_by_unique_public_key_hashes/mod.rs
  • packages/rs-drive/src/verify/identity/verify_identity_keys_by_identity_id/mod.rs
  • packages/rs-drive/src/verify/identity/verify_identity_keys_by_identity_id/v0/mod.rs
  • packages/rs-drive/src/verify/identity/verify_identity_nonce/mod.rs
  • packages/rs-drive/src/verify/identity/verify_identity_nonce/v0/mod.rs
  • packages/rs-drive/src/verify/identity/verify_identity_revision_for_identity_id/mod.rs
  • packages/rs-drive/src/verify/identity/verify_identity_revision_for_identity_id/v0/mod.rs
  • packages/rs-drive/src/verify/shielded/verify_compacted_nullifier_changes/mod.rs
  • packages/rs-drive/src/verify/shielded/verify_compacted_nullifier_changes/v0/mod.rs
  • packages/rs-drive/src/verify/shielded/verify_most_recent_shielded_anchor/mod.rs
  • packages/rs-drive/src/verify/shielded/verify_most_recent_shielded_anchor/v0/mod.rs
  • packages/rs-drive/src/verify/shielded/verify_nullifiers_branch_query/mod.rs
  • packages/rs-drive/src/verify/shielded/verify_nullifiers_trunk_query/mod.rs
  • packages/rs-drive/src/verify/shielded/verify_recent_nullifier_changes/mod.rs
  • packages/rs-drive/src/verify/shielded/verify_recent_nullifier_changes/v0/mod.rs
  • packages/rs-drive/src/verify/shielded/verify_shielded_anchors/mod.rs
  • packages/rs-drive/src/verify/shielded/verify_shielded_anchors/v0/mod.rs
  • packages/rs-drive/src/verify/shielded/verify_shielded_encrypted_notes/mod.rs
  • packages/rs-drive/src/verify/shielded/verify_shielded_nullifiers/mod.rs
  • packages/rs-drive/src/verify/shielded/verify_shielded_nullifiers/v0/mod.rs
  • packages/rs-drive/src/verify/shielded/verify_shielded_pool_state/mod.rs
  • packages/rs-drive/src/verify/shielded/verify_shielded_pool_state/v0/mod.rs
  • packages/rs-drive/src/verify/single_document/verify_proof/mod.rs
  • packages/rs-drive/src/verify/single_document/verify_proof/v0/mod.rs
  • packages/rs-drive/src/verify/single_document/verify_proof_keep_serialized/mod.rs
  • packages/rs-drive/src/verify/single_document/verify_proof_keep_serialized/v0/mod.rs
  • packages/rs-drive/src/verify/state_transition/state_transition_execution_path_queries/token_transition.rs
  • packages/rs-drive/src/verify/state_transition/verify_state_transition_was_executed_with_proof/mod.rs
  • packages/rs-drive/src/verify/system/verify_elements/mod.rs
  • packages/rs-drive/src/verify/system/verify_elements/v0/mod.rs
  • packages/rs-drive/src/verify/system/verify_epoch_infos/mod.rs
  • packages/rs-drive/src/verify/system/verify_epoch_infos/v0/mod.rs
  • packages/rs-drive/src/verify/system/verify_epoch_proposers/mod.rs
  • packages/rs-drive/src/verify/system/verify_finalized_epoch_infos/mod.rs
  • packages/rs-drive/src/verify/system/verify_finalized_epoch_infos/v0/mod.rs
  • packages/rs-drive/src/verify/system/verify_total_credits_in_system/mod.rs
  • packages/rs-drive/src/verify/system/verify_upgrade_state/mod.rs
  • packages/rs-drive/src/verify/system/verify_upgrade_state/v0/mod.rs
  • packages/rs-drive/src/verify/system/verify_upgrade_vote_status/mod.rs
  • packages/rs-drive/src/verify/system/verify_upgrade_vote_status/v0/mod.rs
  • packages/rs-drive/src/verify/tokens/verify_token_balance_for_identity_id/mod.rs
  • packages/rs-drive/src/verify/tokens/verify_token_balance_for_identity_id/v0/mod.rs
  • packages/rs-drive/src/verify/tokens/verify_token_balances_for_identity_id/mod.rs
  • packages/rs-drive/src/verify/tokens/verify_token_balances_for_identity_ids/mod.rs
  • packages/rs-drive/src/verify/tokens/verify_token_contract_info/mod.rs
  • packages/rs-drive/src/verify/tokens/verify_token_direct_selling_price/mod.rs
  • packages/rs-drive/src/verify/tokens/verify_token_direct_selling_price/v0/mod.rs
  • packages/rs-drive/src/verify/tokens/verify_token_direct_selling_prices/mod.rs
  • packages/rs-drive/src/verify/tokens/verify_token_direct_selling_prices/v0/mod.rs
  • packages/rs-drive/src/verify/tokens/verify_token_info_for_identity_id/mod.rs
  • packages/rs-drive/src/verify/tokens/verify_token_info_for_identity_id/v0/mod.rs
  • packages/rs-drive/src/verify/tokens/verify_token_infos_for_identity_id/mod.rs
  • packages/rs-drive/src/verify/tokens/verify_token_infos_for_identity_ids/mod.rs
  • packages/rs-drive/src/verify/tokens/verify_token_perpetual_distribution_last_paid_time/mod.rs
  • packages/rs-drive/src/verify/tokens/verify_token_perpetual_distribution_last_paid_time/v0/mod.rs
  • packages/rs-drive/src/verify/tokens/verify_token_pre_programmed_distributions/mod.rs
  • packages/rs-drive/src/verify/tokens/verify_token_pre_programmed_distributions/v0/mod.rs
  • packages/rs-drive/src/verify/tokens/verify_token_status/mod.rs
  • packages/rs-drive/src/verify/tokens/verify_token_status/v0/mod.rs
  • packages/rs-drive/src/verify/tokens/verify_token_statuses/mod.rs
  • packages/rs-drive/src/verify/tokens/verify_token_total_supply_and_aggregated_identity_balance/mod.rs
  • packages/rs-drive/src/verify/voting/verify_contests_proof/mod.rs
  • packages/rs-drive/src/verify/voting/verify_identity_votes_given_proof/mod.rs
  • packages/rs-drive/src/verify/voting/verify_masternode_vote/mod.rs
  • packages/rs-drive/src/verify/voting/verify_specialized_balance/mod.rs
  • packages/rs-drive/src/verify/voting/verify_vote_poll_vote_state_proof/mod.rs
  • packages/rs-drive/src/verify/voting/verify_vote_poll_votes_proof/mod.rs
  • packages/rs-drive/src/verify/voting/verify_vote_polls_end_date_query/mod.rs
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch test/drive/state-transition-action-coverage-2
📝 Coding Plan for PR comments
  • Generate coding plan

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions Bot added this to the v3.1.0 milestone Mar 12, 2026
@codecov

codecov Bot commented Mar 12, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 97.98984% with 91 lines in your changes missing coverage. Please review.
✅ Project coverage is 63.69%. Comparing base (512db4b) to head (bc24c16).
⚠️ Report is 10 commits behind head on v3.1-dev.

Files with missing lines Patch % Lines
...elded/verify_compacted_nullifier_changes/v0/mod.rs 92.85% 4 Missing ⚠️
.../verify/contract/verify_contract_history/v0/mod.rs 96.96% 3 Missing ⚠️
...shielded/verify_compacted_nullifier_changes/mod.rs 80.00% 3 Missing ⚠️
...elded/verify_most_recent_shielded_anchor/v0/mod.rs 96.66% 3 Missing ⚠️
...fy/shielded/verify_recent_nullifier_changes/mod.rs 80.00% 3 Missing ⚠️
...e/src/verify/system/verify_upgrade_state/v0/mod.rs 94.91% 3 Missing ⚠️
...ess_funds/verify_address_funds_branch_query/mod.rs 86.66% 2 Missing ⚠️
...ress_funds/verify_address_funds_trunk_query/mod.rs 85.71% 2 Missing ⚠️
...rc/verify/address_funds/verify_address_info/mod.rs 86.66% 2 Missing ⚠️
...verify/address_funds/verify_addresses_infos/mod.rs 88.88% 2 Missing ⚠️
... and 37 more
Additional details and impacted files
@@              Coverage Diff              @@
##           v3.1-dev    #3233       +/-   ##
=============================================
+ Coverage     50.39%   63.69%   +13.29%     
=============================================
  Files          3089     1979     -1110     
  Lines        219104   169340    -49764     
=============================================
- Hits         110426   107860     -2566     
+ Misses       108678    61480    -47198     
Components Coverage Δ
dpp ∅ <ø> (∅)
drive 56.45% <73.33%> (+13.94%) ⬆️
drive-abci 78.18% <50.00%> (-1.06%) ⬇️
sdk 32.13% <ø> (ø)
dapi-client ∅ <ø> (∅)
platform-version ∅ <ø> (∅)
platform-value ∅ <ø> (∅)
platform-wallet ∅ <ø> (∅)
drive-proof-verifier ∅ <ø> (∅)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions

github-actions Bot commented Mar 12, 2026

Copy link
Copy Markdown
Contributor

✅ DashSDKFFI.xcframework built for this PR.

SwiftPM (host the zip at a stable URL, then use):

.binaryTarget(
  name: "DashSDKFFI",
  url: "https://your.cdn.example/DashSDKFFI.xcframework.zip",
  checksum: "c1533fef6ca721ba32b2ac657b9b421dc01aa58bdb84a968dd25db033da93953"
)

Xcode manual integration:

  • Download 'DashSDKFFI.xcframework' artifact from the run link above.
  • Drag it into your app target (Frameworks, Libraries & Embedded Content) and set Embed & Sign.
  • If using the Swift wrapper package, point its binaryTarget to the xcframework location or add the package and place the xcframework at the expected path.

@QuantumExplorer

Copy link
Copy Markdown
Member Author

@CodeRabbit review

@coderabbitai

coderabbitai Bot commented Mar 12, 2026

Copy link
Copy Markdown
Contributor
✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@QuantumExplorer QuantumExplorer merged commit 0d10ecd into v3.1-dev Mar 12, 2026
49 of 51 checks passed
@QuantumExplorer QuantumExplorer deleted the test/drive/state-transition-action-coverage-2 branch March 12, 2026 15:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant