Skip to content

fix(cli): use correct pubkey source for CVM replicate env encryption#227

Open
Leechael wants to merge 13 commits intomainfrom
fix/replicate-env-encrypt-pubkey
Open

fix(cli): use correct pubkey source for CVM replicate env encryption#227
Leechael wants to merge 13 commits intomainfrom
fix/replicate-env-encrypt-pubkey

Conversation

@Leechael
Copy link
Copy Markdown
Collaborator

@Leechael Leechael commented Apr 2, 2026

Summary

  • The phala cvms replicate -e command used getCvmComposeConfig which calls /cvms/{id}/compose_file — an endpoint that does not return env_pubkey, causing undefined is not an object (evaluating 'hex.startsWith').
  • Switch to safeGetCvmInfo + getEncryptPubkey, matching the approach used by phala env encrypt.
  • Remove unused getCvmComposeConfig and CvmComposeConfigResponse.

Test plan

  • Run phala cvms replicate -e /tmp/env.test <app_id> with a centralized KMS CVM
  • Run phala cvms replicate -e /tmp/env.test <app_id> with a decentralized (on-chain) KMS CVM
  • Verify phala env encrypt still works as before

The replicate command was using getCvmComposeConfig which calls
/cvms/{id}/compose_file — an endpoint that does not return env_pubkey.
This caused "undefined is not an object" when encrypting env vars.

Switch to safeGetCvmInfo + getEncryptPubkey, matching the approach
used by `phala env encrypt`. Remove the unused getCvmComposeConfig
helper and CvmComposeConfigResponse type.
@Leechael Leechael force-pushed the fix/replicate-env-encrypt-pubkey branch from f514e3a to 2b3b98b Compare April 2, 2026 14:38
? `${CLOUD_URL}/${workspace.slug}/apps/${replica.app_id}/instances/${vmUuid}`
: replica.app_url || "-";
const lines = [
`Source CVM ID: ${context.cvmId.id}`,

This comment was marked as outdated.

Leechael added 2 commits April 3, 2026 12:52
- Add --compose-hash, --prepare-only, --commit, --token, --transaction-hash options
- Rename --teepod-id to --node-id with name resolution support
- Handle 465 responses for on-chain KMS prepare flow
- Add commit command hints to prepare-only output
- Use instance-level /cvms/{vm_uuid}/replicas endpoint
- Show Team (from source CVM workspace) and App URL in replica output
- Keep CVM UUID dashes intact (don't strip hyphens)
- Show KMS type in output
- Add 0x prefix to compose hash, app id, device id in prepare output
- Preserve ResourceError from safeGetCvmInfo so error codes (e.g.
  ERR-03-003, ERR-03-009) and suggestions are displayed
"Private key is required for on-chain replica approval. Pass --private-key or set PRIVATE_KEY.",
);
}
return privateKey as `0x${string}`;

This comment was marked as outdated.

Leechael added 5 commits April 3, 2026 19:00
When compose hash or device is not registered on-chain, display what
needs registration before demanding --private-key. If no private key
is provided, show prepare output and actionable error message instead
of a generic "private key required" error.
When app_id matches multiple CVMs (ERR-03-010) and --compose-hash is
provided, fallback to listing CVMs and filtering by compose_hash to
find the specific source instance.
Replace full CVM list with GET /apps/{appId}/cvms to resolve app_id
ambiguity. Show available compose hashes (deduplicated) when no match.
Comment on lines +337 to +347
...new Set(
appCvmsResult.data.map((c) => c.compose_hash).filter(Boolean),
),
];
throw new Error(
`No CVM instance with compose_hash ${input.composeHash} found for app ${rawId}. ` +
`Available compose hashes: ${available.length > 0 ? available.join(", ") : "none"}`,
);
} else {
throw cvmResult.error;
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: When identifying a CVM by --compose-hash, if the single matched CVM lacks a vm_uuid, a misleading 'multiple CVMs found' error is thrown.
Severity: MEDIUM

Suggested Fix

Add a specific check for the case where matched.length === 1 but matched[0].vm_uuid is falsy. In this new branch, throw a clear error message indicating that the CVM matched by the compose hash is missing its vm_uuid and cannot be used as a source for replication.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.

Location: cli/src/commands/cvms/replicate/index.ts#L327-L347

Potential issue: When disambiguating a CVM using `--compose-hash`, the logic checks if
`matched.length === 1 && matched[0].vm_uuid`. If exactly one CVM matches the hash but
its `vm_uuid` is null or undefined (a valid state according to the API schema), this
condition fails. The code then incorrectly falls through to a final `else` block, which
re-throws an `ERR-03-010` error, originally intended for when multiple CVMs match an
identifier. This results in a misleading error message telling the user about an
ambiguous identifier, when the actual issue is that the uniquely matched CVM is
incomplete.

JS SDK:
- CvmKmsInfoV20260121Schema: add chain_id → chain transform (parity
  with KmsInfoSchema used by 2025-10-28 API)
- addDevice/addComposeHash: pre-check contract owner before submitting
  tx, give clear error if sender is not owner
- dstackAppAbi: add OwnableUnauthorizedAccount and OwnableInvalidOwner
  error definitions for proper error decoding

CLI:
- Use sourceCvm.kms_info.chain (from SDK transform) instead of manual
  chain_id mapping
- Use safeGetAppCvms for app_id disambiguation instead of full CVM list
- Remove debug logging
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 3, 2026

📋 Check Results

✨ JS SDK - Code Formatting

Show format check results
✓ No formatting issues found

🔍 JS SDK - TypeScript Type Check

Show type check output
$ tsc --noEmit

🧪 JS SDK - Test Results

Show test output
$ vitest --run --exclude '**/*.e2e.test.ts'

�[7m�[1m�[36m RUN �[39m�[22m�[27m �[36mv1.6.1�[39m �[90m/home/runner/work/phala-cloud/phala-cloud/js�[39m

 �[32m✓�[39m src/client.test.ts �[2m (�[22m�[2m45 tests�[22m�[2m)�[22m�[90m 44�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/blockchains/deploy_app_auth.test.ts �[2m (�[22m�[2m27 tests�[22m�[2m)�[22m�[90m 38�[2mms�[22m�[39m
 �[33m❯�[39m src/actions/blockchains/add_compose_hash.test.ts �[2m (�[22m�[2m34 tests�[22m �[2m|�[22m �[31m23 failed�[39m�[2m)�[22m�[90m 157�[2mms�[22m�[39m
�[31m   �[33m❯�[31m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mStandard Version�[2m > �[22mshould add compose hash successfully with default parameters�[39m
�[31m     → contractOwner.toLowerCase is not a function�[39m
�[31m   �[33m❯�[31m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mStandard Version�[2m > �[22mshould handle custom timeout�[39m
�[31m     → contractOwner.toLowerCase is not a function�[39m
�[31m   �[33m❯�[31m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mStandard Version�[2m > �[22mshould handle abort signal�[39m
�[31m     → expected [Function] to throw error including 'AbortError' but got 'contractOwner.toLowerCase is not a fu…'�[39m
�[31m   �[33m❯�[31m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mStandard Version�[2m > �[22mshould use custom schema when provided�[39m
�[31m     → contractOwner.toLowerCase is not a function�[39m
�[31m   �[33m❯�[31m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mStandard Version�[2m > �[22mshould return raw data when schema is false�[39m
�[31m     → contractOwner.toLowerCase is not a function�[39m
�[31m   �[33m❯�[31m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mStandard Version�[2m > �[22mshould work with wallet client authentication�[39m
�[31m     → contractOwner.toLowerCase is not a function�[39m
�[31m   �[33m❯�[31m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mStandard Version�[2m > �[22mshould work with both clients provided�[39m
�[31m     → contractOwner.toLowerCase is not a function�[39m
�[31m   �[33m❯�[31m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mStandard Version�[2m > �[22mshould throw when transaction fails�[39m
�[31m     → expected [Function] to throw error including 'Transaction failed: contract call rev…' but got 'contractOwner.toLowerCase is not a fu…'�[39m
�[31m   �[33m❯�[31m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mStandard Version�[2m > �[22mshould throw when wallet client throws error�[39m
�[31m     → expected [Function] to throw error including 'Insufficient funds for transaction' but got 'contractOwner.toLowerCase is not a fu…'�[39m
�[31m   �[33m❯�[31m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mStandard Version�[2m > �[22mshould handle validation errors�[39m
�[31m     → expected TypeError: contractOwner.toLowerCase is n… to deeply equal Error: Validation error { status: 422 }�[39m
�[31m   �[33m❯�[31m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mStandard Version�[2m > �[22mshould skip prerequisite checks when configured�[39m
�[31m     → contractOwner.toLowerCase is not a function�[39m
�[31m   �[33m❯�[31m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mStandard Version�[2m > �[22mshould use retry mechanism when enabled�[39m
�[31m     → contractOwner.toLowerCase is not a function�[39m
�[31m   �[33m❯�[31m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mStandard Version�[2m > �[22mshould handle progress callbacks�[39m
�[31m     → contractOwner.toLowerCase is not a function�[39m
�[31m   �[33m❯�[31m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mSafe Version�[2m > �[22mshould return success result when operation succeeds�[39m
�[31m     → expected false to be true // Object.is equality�[39m
�[31m   �[33m❯�[31m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mSafe Version�[2m > �[22mshould work with custom schema�[39m
�[31m     → expected false to be true // Object.is equality�[39m
�[31m   �[33m❯�[31m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mSafe Version�[2m > �[22mshould return raw data when schema is false�[39m
�[31m     → expected false to be true // Object.is equality�[39m
�[31m   �[33m❯�[31m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mSafe Version�[2m > �[22mshould work without parameters�[39m
�[31m     → expected false to be true // Object.is equality�[39m
�[31m   �[33m❯�[31m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mSafe Version�[2m > �[22mshould work with empty parameters object�[39m
�[31m     → expected false to be true // Object.is equality�[39m
�[31m   �[33m❯�[31m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mSchema Flexibility�[2m > �[22mshould allow extra fields in transaction receipt for forward compatibility�[39m
�[31m     → contractOwner.toLowerCase is not a function�[39m
�[31m   �[33m❯�[31m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mSchema Flexibility�[2m > �[22mshould handle ComposeHashAdded event when present�[39m
�[31m     → contractOwner.toLowerCase is not a function�[39m
�[31m   �[33m❯�[31m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mType Inference�[2m > �[22mshould infer correct types for default schema�[39m
�[31m     → contractOwner.toLowerCase is not a function�[39m
�[31m   �[33m❯�[31m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mType Inference�[2m > �[22mshould infer correct types for custom schema�[39m
�[31m     → contractOwner.toLowerCase is not a function�[39m
�[31m   �[33m❯�[31m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mType Inference�[2m > �[22mshould infer unknown type when schema is false�[39m
�[31m     → contractOwner.toLowerCase is not a function�[39m
 �[32m✓�[39m src/utils/define-action.test.ts �[2m (�[22m�[2m24 tests�[22m�[2m)�[22m�[90m 22�[2mms�[22m�[39m
 �[32m✓�[39m src/utils/define-action.type.test.ts �[2m (�[22m�[2m20 tests�[22m�[2m)�[22m�[90m 34�[2mms�[22m�[39m
 �[32m✓�[39m src/types/cvm_id.test.ts �[2m (�[22m�[2m53 tests�[22m�[2m)�[22m�[90m 19�[2mms�[22m�[39m
 �[32m✓�[39m src/utils/errors.test.ts �[2m (�[22m�[2m28 tests�[22m�[2m)�[22m�[90m 23�[2mms�[22m�[39m
 �[32m✓�[39m src/utils/hostname.test.ts �[2m (�[22m�[2m53 tests�[22m�[2m)�[22m�[90m 25�[2mms�[22m�[39m
 �[32m✓�[39m src/parse_dotenv.test.ts �[2m (�[22m�[2m71 tests�[22m�[2m)�[22m�[90m 26�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/provision_cvm_compose_file_update.test.ts �[2m (�[22m�[2m29 tests�[22m�[2m)�[22m�[90m 34�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/get_current_user.test.ts �[2m (�[22m�[2m14 tests�[22m�[2m)�[22m�[90m 15�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/commit_cvm_compose_file_update.test.ts �[2m (�[22m�[2m12 tests�[22m�[2m)�[22m�[90m 16�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/watch_cvm_state.test.ts �[2m (�[22m�[2m6 tests�[22m�[2m)�[22m�[90m 55�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/get_cvm_info.test.ts �[2m (�[22m�[2m11 tests�[22m�[2m)�[22m�[90m 21�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/get_cvm_compose_file.test.ts �[2m (�[22m�[2m10 tests�[22m�[2m)�[22m�[90m 23�[2mms�[22m�[39m
 �[32m✓�[39m src/version-inference.type.test.ts �[2m (�[22m�[2m17 tests�[22m�[2m)�[22m�[90m 61�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/provision_cvm.test.ts �[2m (�[22m�[2m14 tests�[22m�[2m)�[22m�[90m 18�[2mms�[22m�[39m
 �[32m✓�[39m src/client.extend.type.test.ts �[2m (�[22m�[2m8 tests�[22m�[2m)�[22m�[90m 7�[2mms�[22m�[39m
 �[32m✓�[39m src/version-inference.runtime.test.ts �[2m (�[22m�[2m9 tests�[22m�[2m)�[22m�[90m 9�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/get_cvm_list.test.ts �[2m (�[22m�[2m6 tests�[22m�[2m)�[22m�[90m 20�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/kms/get_app_env_encrypt_pubkey.test.ts �[2m (�[22m�[2m9 tests�[22m�[2m)�[22m�[90m 25�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/patch_cvm.test.ts �[2m (�[22m�[2m10 tests�[22m�[2m)�[22m�[90m 20�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/commit_cvm_provision.test.ts �[2m (�[22m�[2m7 tests�[22m�[2m)�[22m�[90m 15�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/kms/get_kms_list.test.ts �[2m (�[22m�[2m8 tests�[22m�[2m)�[22m�[90m 19�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/kms/get_kms_info.test.ts �[2m (�[22m�[2m8 tests�[22m�[2m)�[22m�[90m 27�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/get_cvm_stats.test.ts �[2m (�[22m�[2m8 tests�[22m�[2m)�[22m�[90m 15�[2mms�[22m�[39m
 �[32m✓�[39m src/utils/verify-webhook.test.ts �[2m (�[22m�[2m11 tests�[22m�[2m)�[22m�[90m 11�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/confirm_cvm_patch.test.ts �[2m (�[22m�[2m9 tests�[22m�[2m)�[22m�[90m 17�[2mms�[22m�[39m
 �[32m✓�[39m src/client.extend.test.ts �[2m (�[22m�[2m6 tests�[22m�[2m)�[22m�[90m 12�[2mms�[22m�[39m
 �[32m✓�[39m src/utils/validate-parameters.test.ts �[2m (�[22m�[2m9 tests�[22m�[2m)�[22m�[90m 6�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/ssh_keys/create_ssh_key.test.ts �[2m (�[22m�[2m9 tests�[22m�[2m)�[22m�[90m 15�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/get_available_nodes.test.ts �[2m (�[22m�[2m6 tests�[22m�[2m)�[22m�[90m 22�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/shutdown_cvm.test.ts �[2m (�[22m�[2m8 tests�[22m�[2m)�[22m�[90m 16�[2mms�[22m�[39m
 �[32m✓�[39m src/types/app_compose.test.ts �[2m (�[22m�[2m9 tests�[22m�[2m)�[22m�[90m 12�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/restart_cvm.test.ts �[2m (�[22m�[2m8 tests�[22m�[2m)�[22m�[90m 15�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/start_cvm.test.ts �[2m (�[22m�[2m8 tests�[22m�[2m)�[22m�[90m 16�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/stop_cvm.test.ts �[2m (�[22m�[2m8 tests�[22m�[2m)�[22m�[90m 18�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/get_cvm_containers_stats.test.ts �[2m (�[22m�[2m6 tests�[22m�[2m)�[22m�[90m 19�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/ssh_keys/delete_ssh_key.test.ts �[2m (�[22m�[2m8 tests�[22m�[2m)�[22m�[90m 14�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/ssh_keys/sync_github_ssh_keys.test.ts �[2m (�[22m�[2m6 tests�[22m�[2m)�[22m�[90m 19�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/delete_cvm.test.ts �[2m (�[22m�[2m8 tests�[22m�[2m)�[22m�[90m 14�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/get_cvm_state.test.ts �[2m (�[22m�[2m4 tests�[22m�[2m)�[22m�[90m 10�[2mms�[22m�[39m
 �[32m✓�[39m src/utils/as-hex.test.ts �[2m (�[22m�[2m9 tests�[22m�[2m)�[22m�[90m 11�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/refresh_cvm_instance_ids.test.ts �[2m (�[22m�[2m2 tests�[22m�[2m)�[22m�[90m 7�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/refresh_cvm_instance_id.test.ts �[2m (�[22m�[2m2 tests�[22m�[2m)�[22m�[90m 7�[2mms�[22m�[39m

�[31m⎯⎯⎯⎯⎯⎯�[1m�[7m Failed Tests 23 �[27m�[22m⎯⎯⎯⎯⎯⎯⎯�[39m

�[31m�[1m�[7m FAIL �[27m�[22m�[39m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mStandard Version�[2m > �[22mshould add compose hash successfully with default parameters
�[31m�[1mTypeError�[22m: contractOwner.toLowerCase is not a function�[39m
�[36m �[2m❯�[22m Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:�[2m515:21�[22m�[39m
    �[90m513| �[39m    functionName�[33m:�[39m �[32m"owner"�[39m�[33m,�[39m
    �[90m514| �[39m  })) �[35mas�[39m �[33mAddress�[39m�[33m;�[39m
    �[90m515| �[39m  �[35mif�[39m (contractOwner�[33m.�[39m�[34mtoLowerCase�[39m() �[33m!==�[39m address�[33m.�[39m�[34mtoLowerCase�[39m()) {
    �[90m   | �[39m                    �[31m^�[39m
    �[90m516| �[39m    �[35mthrow�[39m �[35mnew�[39m �[33mError�[39m(
    �[90m517| �[39m      �[32m`Sender �[39m�[36m${�[39maddress�[36m}�[39m�[32m is not the owner of contract �[39m�[36m${�[39mappAuthAddress…
�[90m �[2m❯�[22m src/actions/blockchains/add_compose_hash.test.ts:�[2m165:22�[22m�[39m


::error file=/home/runner/work/phala-cloud/phala-cloud/js/src/actions/blockchains/add_compose_hash.ts,title=src/actions/blockchains/add_compose_hash.test.ts > addComposeHash > Standard Version > should add compose hash successfully with default parameters,line=515,column=21::TypeError: contractOwner.toLowerCase is not a function%0A ❯ Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:515:21%0A ❯ src/actions/blockchains/add_compose_hash.test.ts:165:22%0A%0A
�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/23]⎯�[22m�[39m


::error file=/home/runner/work/phala-cloud/phala-cloud/js/src/actions/blockchains/add_compose_hash.ts,title=src/actions/blockchains/add_compose_hash.test.ts > addComposeHash > Standard Version > should handle custom timeout,line=515,column=21::TypeError: contractOwner.toLowerCase is not a function%0A ❯ Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:515:21%0A ❯ src/actions/blockchains/add_compose_hash.test.ts:199:7%0A%0A
�[31m�[1m�[7m FAIL �[27m�[22m�[39m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mStandard Version�[2m > �[22mshould handle custom timeout
�[31m�[1mTypeError�[22m: contractOwner.toLowerCase is not a function�[39m
�[36m �[2m❯�[22m Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:�[2m515:21�[22m�[39m
    �[90m513| �[39m    functionName�[33m:�[39m �[32m"owner"�[39m�[33m,�[39m
    �[90m514| �[39m  })) �[35mas�[39m �[33mAddress�[39m�[33m;�[39m
    �[90m515| �[39m  �[35mif�[39m (contractOwner�[33m.�[39m�[34mtoLowerCase�[39m() �[33m!==�[39m address�[33m.�[39m�[34mtoLowerCase�[39m()) {
    �[90m   | �[39m                    �[31m^�[39m
    �[90m516| �[39m    �[35mthrow�[39m �[35mnew�[39m �[33mError�[39m(
    �[90m517| �[39m      �[32m`Sender �[39m�[36m${�[39maddress�[36m}�[39m�[32m is not the owner of contract �[39m�[36m${�[39mappAuthAddress…
�[90m �[2m❯�[22m src/actions/blockchains/add_compose_hash.test.ts:�[2m199:7�[22m�[39m


::error file=/home/runner/work/phala-cloud/phala-cloud/js/src/actions/blockchains/add_compose_hash.test.ts,title=src/actions/blockchains/add_compose_hash.test.ts > addComposeHash > Standard Version > should handle abort signal,line=224,column=7::AssertionError: expected [Function] to throw error including 'AbortError' but got 'contractOwner.toLowerCase is not a fu…'%0A%0A- Expected%0A+ Received%0A%0A- AbortError%0A+ contractOwner.toLowerCase is not a function%0A%0A ❯ src/actions/blockchains/add_compose_hash.test.ts:224:7%0A%0A
�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/23]⎯�[22m�[39m

�[31m�[1m�[7m FAIL �[27m�[22m�[39m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mStandard Version�[2m > �[22mshould handle abort signal
�[31m�[1mAssertionError�[22m: expected [Function] to throw error including 'AbortError' but got 'contractOwner.toLowerCase is not a fu…'�[39m

- Expected
+ Received

- AbortError
+ contractOwner.toLowerCase is not a function

�[36m �[2m❯�[22m src/actions/blockchains/add_compose_hash.test.ts:�[2m224:7�[22m�[39m
    �[90m222| �[39m      })�[33m;�[39m
    �[90m223| �[39m
    �[90m224| �[39m      �[35mawait�[39m �[34mexpect�[39m(�[34maddComposeHash�[39m(request))�[33m.�[39mrejects�[33m.�[39m�[34mtoThrow�[39m(�[32m"AbortErro�[39m…
    �[90m   | �[39m      �[31m^�[39m
    �[90m225| �[39m    })�[33m;�[39m
    �[90m226| �[39m


::error file=/home/runner/work/phala-cloud/phala-cloud/js/src/actions/blockchains/add_compose_hash.ts,title=src/actions/blockchains/add_compose_hash.test.ts > addComposeHash > Standard Version > should use custom schema when provided,line=515,column=21::TypeError: contractOwner.toLowerCase is not a function%0A ❯ Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:515:21%0A ❯ src/actions/blockchains/add_compose_hash.test.ts:254:22%0A%0A
�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/23]⎯�[22m�[39m


::error file=/home/runner/work/phala-cloud/phala-cloud/js/src/actions/blockchains/add_compose_hash.ts,title=src/actions/blockchains/add_compose_hash.test.ts > addComposeHash > Standard Version > should return raw data when schema is false,line=515,column=21::TypeError: contractOwner.toLowerCase is not a function%0A ❯ Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:515:21%0A ❯ src/actions/blockchains/add_compose_hash.test.ts:263:22%0A%0A
�[31m�[1m�[7m FAIL �[27m�[22m�[39m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mStandard Version�[2m > �[22mshould use custom schema when provided
�[31m�[1mTypeError�[22m: contractOwner.toLowerCase is not a function�[39m
�[36m �[2m❯�[22m Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:�[2m515:21�[22m�[39m
    �[90m513| �[39m    functionName�[33m:�[39m �[32m"owner"�[39m�[33m,�[39m
    �[90m514| �[39m  })) �[35mas�[39m �[33mAddress�[39m�[33m;�[39m
    �[90m515| �[39m  �[35mif�[39m (contractOwner�[33m.�[39m�[34mtoLowerCase�[39m() �[33m!==�[39m address�[33m.�[39m�[34mtoLowerCase�[39m()) {
    �[90m   | �[39m                    �[31m^�[39m
    �[90m516| �[39m    �[35mthrow�[39m �[35mnew�[39m �[33mError�[39m(
    �[90m517| �[39m      �[32m`Sender �[39m�[36m${�[39maddress�[36m}�[39m�[32m is not the owner of contract �[39m�[36m${�[39mappAuthAddress…
�[90m �[2m❯�[22m src/actions/blockchains/add_compose_hash.test.ts:�[2m254:22�[22m�[39m


::error file=/home/runner/work/phala-cloud/phala-cloud/js/src/actions/blockchains/add_compose_hash.ts,title=src/actions/blockchains/add_compose_hash.test.ts > addComposeHash > Standard Version > should work with wallet client authentication,line=515,column=21::TypeError: contractOwner.toLowerCase is not a function%0A ❯ Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:515:21%0A ❯ src/actions/blockchains/add_compose_hash.test.ts:292:22%0A%0A
�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/23]⎯�[22m�[39m

�[31m�[1m�[7m FAIL �[27m�[22m�[39m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mStandard Version�[2m > �[22mshould return raw data when schema is false
�[31m�[1mTypeError�[22m: contractOwner.toLowerCase is not a function�[39m
�[36m �[2m❯�[22m Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:�[2m515:21�[22m�[39m
    �[90m513| �[39m    functionName�[33m:�[39m �[32m"owner"�[39m�[33m,�[39m
    �[90m514| �[39m  })) �[35mas�[39m �[33mAddress�[39m�[33m;�[39m
    �[90m515| �[39m  �[35mif�[39m (contractOwner�[33m.�[39m�[34mtoLowerCase�[39m() �[33m!==�[39m address�[33m.�[39m�[34mtoLowerCase�[39m()) {
    �[90m   | �[39m                    �[31m^�[39m
    �[90m516| �[39m    �[35mthrow�[39m �[35mnew�[39m �[33mError�[39m(
    �[90m517| �[39m      �[32m`Sender �[39m�[36m${�[39maddress�[36m}�[39m�[32m is not the owner of contract �[39m�[36m${�[39mappAuthAddress…
�[90m �[2m❯�[22m src/actions/blockchains/add_compose_hash.test.ts:�[2m263:22�[22m�[39m


::error file=/home/runner/work/phala-cloud/phala-cloud/js/src/actions/blockchains/add_compose_hash.ts,title=src/actions/blockchains/add_compose_hash.test.ts > addComposeHash > Standard Version > should work with both clients provided,line=515,column=21::TypeError: contractOwner.toLowerCase is not a function%0A ❯ Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:515:21%0A ❯ src/actions/blockchains/add_compose_hash.test.ts:313:22%0A%0A
�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[5/23]⎯�[22m�[39m


::error file=/home/runner/work/phala-cloud/phala-cloud/js/src/actions/blockchains/add_compose_hash.test.ts,title=src/actions/blockchains/add_compose_hash.test.ts > addComposeHash > Standard Version > should throw when transaction fails,line=326,column=7::AssertionError: expected [Function] to throw error including 'Transaction failed: contract call rev…' but got 'contractOwner.toLowerCase is not a fu…'%0A%0A- Expected%0A+ Received%0A%0A- Transaction failed: contract call reverted%0A+ contractOwner.toLowerCase is not a function%0A%0A ❯ src/actions/blockchains/add_compose_hash.test.ts:326:7%0A%0A
�[31m�[1m�[7m FAIL �[27m�[22m�[39m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mStandard Version�[2m > �[22mshould work with wallet client authentication
�[31m�[1mTypeError�[22m: contractOwner.toLowerCase is not a function�[39m
�[36m �[2m❯�[22m Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:�[2m515:21�[22m�[39m
    �[90m513| �[39m    functionName�[33m:�[39m �[32m"owner"�[39m�[33m,�[39m
    �[90m514| �[39m  })) �[35mas�[39m �[33mAddress�[39m�[33m;�[39m
    �[90m515| �[39m  �[35mif�[39m (contractOwner�[33m.�[39m�[34mtoLowerCase�[39m() �[33m!==�[39m address�[33m.�[39m�[34mtoLowerCase�[39m()) {
    �[90m   | �[39m                    �[31m^�[39m
    �[90m516| �[39m    �[35mthrow�[39m �[35mnew�[39m �[33mError�[39m(
    �[90m517| �[39m      �[32m`Sender �[39m�[36m${�[39maddress�[36m}�[39m�[32m is not the owner of contract �[39m�[36m${�[39mappAuthAddress…
�[90m �[2m❯�[22m src/actions/blockchains/add_compose_hash.test.ts:�[2m292:22�[22m�[39m


::error file=/home/runner/work/phala-cloud/phala-cloud/js/src/actions/blockchains/add_compose_hash.test.ts,title=src/actions/blockchains/add_compose_hash.test.ts > addComposeHash > Standard Version > should throw when wallet client throws error,line=346,column=7::AssertionError: expected [Function] to throw error including 'Insufficient funds for transaction' but got 'contractOwner.toLowerCase is not a fu…'%0A%0A- Expected%0A+ Received%0A%0A- Insufficient funds for transaction%0A+ contractOwner.toLowerCase is not a function%0A%0A ❯ src/actions/blockchains/add_compose_hash.test.ts:346:7%0A%0A
�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[6/23]⎯�[22m�[39m

�[31m�[1m�[7m FAIL �[27m�[22m�[39m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mStandard Version�[2m > �[22mshould work with both clients provided
�[31m�[1mTypeError�[22m: contractOwner.toLowerCase is not a function�[39m
�[36m �[2m❯�[22m Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:�[2m515:21�[22m�[39m
    �[90m513| �[39m    functionName�[33m:�[39m �[32m"owner"�[39m�[33m,�[39m
    �[90m514| �[39m  })) �[35mas�[39m �[33mAddress�[39m�[33m;�[39m
    �[90m515| �[39m  �[35mif�[39m (contractOwner�[33m.�[39m�[34mtoLowerCase�[39m() �[33m!==�[39m address�[33m.�[39m�[34mtoLowerCase�[39m()) {
    �[90m   | �[39m                    �[31m^�[39m
    �[90m516| �[39m    �[35mthrow�[39m �[35mnew�[39m �[33mError�[39m(
    �[90m517| �[39m      �[32m`Sender �[39m�[36m${�[39maddress�[36m}�[39m�[32m is not the owner of contract �[39m�[36m${�[39mappAuthAddress…
�[90m �[2m❯�[22m src/actions/blockchains/add_compose_hash.test.ts:�[2m313:22�[22m�[39m


::error file=/home/runner/work/phala-cloud/phala-cloud/js/src/actions/blockchains/add_compose_hash.test.ts,title=src/actions/blockchains/add_compose_hash.test.ts > addComposeHash > Standard Version > should handle validation errors,line=356,column=7::AssertionError: expected TypeError: contractOwner.toLowerCase is n… to deeply equal Error: Validation error { status: 422 }%0A%0A- Expected%0A+ Received%0A%0A- [Error: Validation error]%0A+ [TypeError: contractOwner.toLowerCase is not a function]%0A%0A ❯ src/actions/blockchains/add_compose_hash.test.ts:356:7%0A%0A
�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[7/23]⎯�[22m�[39m


::error file=/home/runner/work/phala-cloud/phala-cloud/js/src/actions/blockchains/add_compose_hash.ts,title=src/actions/blockchains/add_compose_hash.test.ts > addComposeHash > Standard Version > should skip prerequisite checks when configured,line=515,column=21::TypeError: contractOwner.toLowerCase is not a function%0A ❯ Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:515:21%0A ❯ src/actions/blockchains/add_compose_hash.test.ts:395:7%0A%0A
�[31m�[1m�[7m FAIL �[27m�[22m�[39m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mStandard Version�[2m > �[22mshould throw when transaction fails
�[31m�[1mAssertionError�[22m: expected [Function] to throw error including 'Transaction failed: contract call rev…' but got 'contractOwner.toLowerCase is not a fu…'�[39m

- Expected
+ Received

- Transaction failed: contract call reverted
+ contractOwner.toLowerCase is not a function

�[36m �[2m❯�[22m src/actions/blockchains/add_compose_hash.test.ts:�[2m326:7�[22m�[39m
    �[90m324| �[39m      )�[33m;�[39m
    �[90m325| �[39m
    �[90m326| �[39m      �[35mawait�[39m �[34mexpect�[39m(�[34maddComposeHash�[39m(validRequest))�[33m.�[39mrejects�[33m.�[39m�[34mtoThrow�[39m(
    �[90m   | �[39m      �[31m^�[39m
    �[90m327| �[39m        �[32m"Transaction failed: contract call reverted"�[39m�[33m,�[39m
    �[90m328| �[39m      )�[33m;�[39m


::error file=/home/runner/work/phala-cloud/phala-cloud/js/src/actions/blockchains/add_compose_hash.ts,title=src/actions/blockchains/add_compose_hash.test.ts > addComposeHash > Standard Version > should use retry mechanism when enabled,line=515,column=21::TypeError: contractOwner.toLowerCase is not a function%0A ❯ Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:515:21%0A ❯ src/actions/blockchains/add_compose_hash.test.ts:406:7%0A%0A
�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[8/23]⎯�[22m�[39m

�[31m�[1m�[7m FAIL �[27m�[22m�[39m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mStandard Version�[2m > �[22mshould throw when wallet client throws error
�[31m�[1mAssertionError�[22m: expected [Function] to throw error including 'Insufficient funds for transaction' but got 'contractOwner.toLowerCase is not a fu…'�[39m

- Expected
+ Received

- Insufficient funds for transaction
+ contractOwner.toLowerCase is not a function

�[36m �[2m❯�[22m src/actions/blockchains/add_compose_hash.test.ts:�[2m346:7�[22m�[39m
    �[90m344| �[39m      })�[33m;�[39m
    �[90m345| �[39m
    �[90m346| �[39m      �[35mawait�[39m �[34mexpect�[39m(�[34maddComposeHash�[39m(validRequest))�[33m.�[39mrejects�[33m.�[39m�[34mtoThrow�[39m(
    �[90m   | �[39m      �[31m^�[39m
    �[90m347| �[39m        �[32m"Insufficient funds for transaction"�[39m�[33m,�[39m
    �[90m348| �[39m      )�[33m;�[39m


::error file=/home/runner/work/phala-cloud/phala-cloud/js/src/actions/blockchains/add_compose_hash.ts,title=src/actions/blockchains/add_compose_hash.test.ts > addComposeHash > Standard Version > should handle progress callbacks,line=515,column=21::TypeError: contractOwner.toLowerCase is not a function%0A ❯ Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:515:21%0A ❯ src/actions/blockchains/add_compose_hash.test.ts:428:7%0A%0A
�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[9/23]⎯�[22m�[39m


::error file=/home/runner/work/phala-cloud/phala-cloud/js/src/actions/blockchains/add_compose_hash.test.ts,title=src/actions/blockchains/add_compose_hash.test.ts > addComposeHash > Safe Version > should return success result when operation succeeds,line=487,column=30::AssertionError: expected false to be true // Object.is equality%0A%0A- Expected%0A+ Received%0A%0A- true%0A+ false%0A%0A ❯ src/actions/blockchains/add_compose_hash.test.ts:487:30%0A%0A
�[31m�[1m�[7m FAIL �[27m�[22m�[39m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mStandard Version�[2m > �[22mshould handle validation errors
�[31m�[1mAssertionError�[22m: expected TypeError: contractOwner.toLowerCase is n… to deeply equal Error: Validation error { status: 422 }�[39m

- Expected
+ Received

- [Error: Validation error]
+ [TypeError: contractOwner.toLowerCase is not a function]

�[36m �[2m❯�[22m src/actions/blockchains/add_compose_hash.test.ts:�[2m356:7�[22m�[39m
    �[90m354| �[39m      mockTransactionTracker�[33m.�[39mexecute�[33m.�[39m�[34mmockRejectedValue�[39m(error)�[33m;�[39m
    �[90m355| �[39m
    �[90m356| �[39m      �[35mawait�[39m �[34mexpect�[39m(�[34maddComposeHash�[39m(validRequest))�[33m.�[39mrejects�[33m.�[39m�[34mtoEqual�[39m(error…
    �[90m   | �[39m      �[31m^�[39m
    �[90m357| �[39m    })�[33m;�[39m
    �[90m358| �[39m


::error file=/home/runner/work/phala-cloud/phala-cloud/js/src/actions/blockchains/add_compose_hash.test.ts,title=src/actions/blockchains/add_compose_hash.test.ts > addComposeHash > Safe Version > should work with custom schema,line=536,column=30::AssertionError: expected false to be true // Object.is equality%0A%0A- Expected%0A+ Received%0A%0A- true%0A+ false%0A%0A ❯ src/actions/blockchains/add_compose_hash.test.ts:536:30%0A%0A
�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[10/23]⎯�[22m�[39m

�[31m�[1m�[7m FAIL �[27m�[22m�[39m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mStandard Version�[2m > �[22mshould skip prerequisite checks when configured
�[31m�[1mTypeError�[22m: contractOwner.toLowerCase is not a function�[39m
�[36m �[2m❯�[22m Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:�[2m515:21�[22m�[39m
    �[90m513| �[39m    functionName�[33m:�[39m �[32m"owner"�[39m�[33m,�[39m
    �[90m514| �[39m  })) �[35mas�[39m �[33mAddress�[39m�[33m;�[39m
    �[90m515| �[39m  �[35mif�[39m (contractOwner�[33m.�[39m�[34mtoLowerCase�[39m() �[33m!==�[39m address�[33m.�[39m�[34mtoLowerCase�[39m()) {
    �[90m   | �[39m                    �[31m^�[39m
    �[90m516| �[39m    �[35mthrow�[39m �[35mnew�[39m �[33mError�[39m(
    �[90m517| �[39m      �[32m`Sender �[39m�[36m${�[39maddress�[36m}�[39m�[32m is not the owner of contract �[39m�[36m${�[39mappAuthAddress…
�[90m �[2m❯�[22m src/actions/blockchains/add_compose_hash.test.ts:�[2m395:7�[22m�[39m


::error file=/home/runner/work/phala-cloud/phala-cloud/js/src/actions/blockchains/add_compose_hash.test.ts,title=src/actions/blockchains/add_compose_hash.test.ts > addComposeHash > Safe Version > should return raw data when schema is false,line=548,column=30::AssertionError: expected false to be true // Object.is equality%0A%0A- Expected%0A+ Received%0A%0A- true%0A+ false%0A%0A ❯ src/actions/blockchains/add_compose_hash.test.ts:548:30%0A%0A
�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[11/23]⎯�[22m�[39m


::error file=/home/runner/work/phala-cloud/phala-cloud/js/src/actions/blockchains/add_compose_hash.test.ts,title=src/actions/blockchains/add_compose_hash.test.ts > addComposeHash > Safe Version > should work without parameters,line=564,column=30::AssertionError: expected false to be true // Object.is equality%0A%0A- Expected%0A+ Received%0A%0A- true%0A+ false%0A%0A ❯ src/actions/blockchains/add_compose_hash.test.ts:564:30%0A%0A
�[31m�[1m�[7m FAIL �[27m�[22m�[39m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mStandard Version�[2m > �[22mshould use retry mechanism when enabled
�[31m�[1mTypeError�[22m: contractOwner.toLowerCase is not a function�[39m
�[36m �[2m❯�[22m Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:�[2m515:21�[22m�[39m
    �[90m513| �[39m    functionName�[33m:�[39m �[32m"owner"�[39m�[33m,�[39m
    �[90m514| �[39m  })) �[35mas�[39m �[33mAddress�[39m�[33m;�[39m
    �[90m515| �[39m  �[35mif�[39m (contractOwner�[33m.�[39m�[34mtoLowerCase�[39m() �[33m!==�[39m address�[33m.�[39m�[34mtoLowerCase�[39m()) {
    �[90m   | �[39m                    �[31m^�[39m
    �[90m516| �[39m    �[35mthrow�[39m �[35mnew�[39m �[33mError�[39m(
    �[90m517| �[39m      �[32m`Sender �[39m�[36m${�[39maddress�[36m}�[39m�[32m is not the owner of contract �[39m�[36m${�[39mappAuthAddress…
�[90m �[2m❯�[22m src/actions/blockchains/add_compose_hash.test.ts:�[2m406:7�[22m�[39m


::error file=/home/runner/work/phala-cloud/phala-cloud/js/src/actions/blockchains/add_compose_hash.test.ts,title=src/actions/blockchains/add_compose_hash.test.ts > addComposeHash > Safe Version > should work with empty parameters object,line=570,column=30::AssertionError: expected false to be true // Object.is equality%0A%0A- Expected%0A+ Received%0A%0A- true%0A+ false%0A%0A ❯ src/actions/blockchains/add_compose_hash.test.ts:570:30%0A%0A
�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[12/23]⎯�[22m�[39m

�[31m�[1m�[7m FAIL �[27m�[22m�[39m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mStandard Version�[2m > �[22mshould handle progress callbacks
�[31m�[1mTypeError�[22m: contractOwner.toLowerCase is not a function�[39m
�[36m �[2m❯�[22m Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:�[2m515:21�[22m�[39m
    �[90m513| �[39m    functionName�[33m:�[39m �[32m"owner"�[39m�[33m,�[39m
    �[90m514| �[39m  })) �[35mas�[39m �[33mAddress�[39m�[33m;�[39m
    �[90m515| �[39m  �[35mif�[39m (contractOwner�[33m.�[39m�[34mtoLowerCase�[39m() �[33m!==�[39m address�[33m.�[39m�[34mtoLowerCase�[39m()) {
    �[90m   | �[39m                    �[31m^�[39m
    �[90m516| �[39m    �[35mthrow�[39m �[35mnew�[39m �[33mError�[39m(
    �[90m517| �[39m      �[32m`Sender �[39m�[36m${�[39maddress�[36m}�[39m�[32m is not the owner of contract �[39m�[36m${�[39mappAuthAddress…
�[90m �[2m❯�[22m src/actions/blockchains/add_compose_hash.test.ts:�[2m428:7�[22m�[39m


::error file=/home/runner/work/phala-cloud/phala-cloud/js/src/actions/blockchains/add_compose_hash.ts,title=src/actions/blockchains/add_compose_hash.test.ts > addComposeHash > Schema Flexibility > should allow extra fields in transaction receipt for forward compatibility,line=515,column=21::TypeError: contractOwner.toLowerCase is not a function%0A ❯ Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:515:21%0A ❯ src/actions/blockchains/add_compose_hash.test.ts:590:22%0A%0A
�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[13/23]⎯�[22m�[39m


::error file=/home/runner/work/phala-cloud/phala-cloud/js/src/actions/blockchains/add_compose_hash.ts,title=src/actions/blockchains/add_compose_hash.test.ts > addComposeHash > Schema Flexibility > should handle ComposeHashAdded event when present,line=515,column=21::TypeError: contractOwner.toLowerCase is not a function%0A ❯ Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:515:21%0A ❯ src/actions/blockchains/add_compose_hash.test.ts:615:22%0A%0A
�[31m�[1m�[7m FAIL �[27m�[22m�[39m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mSafe Version�[2m > �[22mshould return success result when operation succeeds
�[31m�[1mAssertionError�[22m: expected false to be true // Object.is equality�[39m

- Expected
+ Received

- true
+ false

�[36m �[2m❯�[22m src/actions/blockchains/add_compose_hash.test.ts:�[2m487:30�[22m�[39m
    �[90m485| �[39m      �[35mconst�[39m result �[33m=�[39m �[35mawait�[39m �[34msafeAddComposeHash�[39m(validRequest)�[33m;�[39m
    �[90m486| �[39m
    �[90m487| �[39m      �[34mexpect�[39m(result�[33m.�[39msuccess)�[33m.�[39m�[34mtoBe�[39m(�[35mtrue�[39m)�[33m;�[39m
    �[90m   | �[39m                             �[31m^�[39m
    �[90m488| �[39m      �[35mif�[39m (result�[33m.�[39msuccess) {
    �[90m489| �[39m        �[34mexpect�[39m(result�[33m.�[39mdata)�[33m.�[39m�[34mtoEqual�[39m({


::error file=/home/runner/work/phala-cloud/phala-cloud/js/src/actions/blockchains/add_compose_hash.ts,title=src/actions/blockchains/add_compose_hash.test.ts > addComposeHash > Type Inference > should infer correct types for default schema,line=515,column=21::TypeError: contractOwner.toLowerCase is not a function%0A ❯ Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:515:21%0A ❯ src/actions/blockchains/add_compose_hash.test.ts:634:22%0A%0A
�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[14/23]⎯�[22m�[39m

�[31m�[1m�[7m FAIL �[27m�[22m�[39m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mSafe Version�[2m > �[22mshould work with custom schema
�[31m�[1mAssertionError�[22m: expected false to be true // Object.is equality�[39m

- Expected
+ Received

- true
+ false

�[36m �[2m❯�[22m src/actions/blockchains/add_compose_hash.test.ts:�[2m536:30�[22m�[39m
    �[90m534| �[39m      �[35mconst�[39m result �[33m=�[39m �[35mawait�[39m �[34msafeAddComposeHash�[39m(validRequest�[33m,�[39m { schema�[33m:�[39m …
    �[90m535| �[39m
    �[90m536| �[39m      �[34mexpect�[39m(result�[33m.�[39msuccess)�[33m.�[39m�[34mtoBe�[39m(�[35mtrue�[39m)�[33m;�[39m
    �[90m   | �[39m                             �[31m^�[39m
    �[90m537| �[39m      �[35mif�[39m (result�[33m.�[39msuccess) {
    �[90m538| �[39m        �[34mexpect�[39m(result�[33m.�[39mdata)�[33m.�[39m�[34mtoEqual�[39m({


::error file=/home/runner/work/phala-cloud/phala-cloud/js/src/actions/blockchains/add_compose_hash.ts,title=src/actions/blockchains/add_compose_hash.test.ts > addComposeHash > Type Inference > should infer correct types for custom schema,line=515,column=21::TypeError: contractOwner.toLowerCase is not a function%0A ❯ Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:515:21%0A ❯ src/actions/blockchains/add_compose_hash.test.ts:652:22%0A%0A
�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[15/23]⎯�[22m�[39m


::error file=/home/runner/work/phala-cloud/phala-cloud/js/src/actions/blockchains/add_compose_hash.ts,title=src/actions/blockchains/add_compose_hash.test.ts > addComposeHash > Type Inference > should infer unknown type when schema is false,line=515,column=21::TypeError: contractOwner.toLowerCase is not a function%0A ❯ Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:515:21%0A ❯ src/actions/blockchains/add_compose_hash.test.ts:662:22%0A%0A
�[31m�[1m�[7m FAIL �[27m�[22m�[39m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mSafe Version�[2m > �[22mshould return raw data when schema is false
�[31m�[1mAssertionError�[22m: expected false to be true // Object.is equality�[39m

- Expected
+ Received

- true
+ false

�[36m �[2m❯�[22m src/actions/blockchains/add_compose_hash.test.ts:�[2m548:30�[22m�[39m
    �[90m546| �[39m      �[35mconst�[39m result �[33m=�[39m �[35mawait�[39m �[34msafeAddComposeHash�[39m(validRequest�[33m,�[39m { schema�[33m:�[39m …
    �[90m547| �[39m
    �[90m548| �[39m      �[34mexpect�[39m(result�[33m.�[39msuccess)�[33m.�[39m�[34mtoBe�[39m(�[35mtrue�[39m)�[33m;�[39m
    �[90m   | �[39m                             �[31m^�[39m
    �[90m549| �[39m      �[35mif�[39m (result�[33m.�[39msuccess) {
    �[90m550| �[39m        �[34mexpect�[39m(result�[33m.�[39mdata)�[33m.�[39m�[34mtoEqual�[39m({

�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[16/23]⎯�[22m�[39m

�[31m�[1m�[7m FAIL �[27m�[22m�[39m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mSafe Version�[2m > �[22mshould work without parameters
�[31m�[1mAssertionError�[22m: expected false to be true // Object.is equality�[39m

- Expected
+ Received

- true
+ false

�[36m �[2m❯�[22m src/actions/blockchains/add_compose_hash.test.ts:�[2m564:30�[22m�[39m
    �[90m562| �[39m      �[35mconst�[39m result �[33m=�[39m �[35mawait�[39m �[34msafeAddComposeHash�[39m(validRequest)�[33m;�[39m
    �[90m563| �[39m
    �[90m564| �[39m      �[34mexpect�[39m(result�[33m.�[39msuccess)�[33m.�[39m�[34mtoBe�[39m(�[35mtrue�[39m)�[33m;�[39m
    �[90m   | �[39m                             �[31m^�[39m
    �[90m565| �[39m    })�[33m;�[39m
    �[90m566| �[39m

�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[17/23]⎯�[22m�[39m

�[31m�[1m�[7m FAIL �[27m�[22m�[39m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mSafe Version�[2m > �[22mshould work with empty parameters object
�[31m�[1mAssertionError�[22m: expected false to be true // Object.is equality�[39m

- Expected
+ Received

- true
+ false

�[36m �[2m❯�[22m src/actions/blockchains/add_compose_hash.test.ts:�[2m570:30�[22m�[39m
    �[90m568| �[39m      �[35mconst�[39m result �[33m=�[39m �[35mawait�[39m �[34msafeAddComposeHash�[39m(validRequest�[33m,�[39m {})�[33m;�[39m
    �[90m569| �[39m
    �[90m570| �[39m      �[34mexpect�[39m(result�[33m.�[39msuccess)�[33m.�[39m�[34mtoBe�[39m(�[35mtrue�[39m)�[33m;�[39m
    �[90m   | �[39m                             �[31m^�[39m
    �[90m571| �[39m    })�[33m;�[39m
    �[90m572| �[39m  })�[33m;�[39m

�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[18/23]⎯�[22m�[39m

�[31m�[1m�[7m FAIL �[27m�[22m�[39m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mSchema Flexibility�[2m > �[22mshould allow extra fields in transaction receipt for forward compatibility
�[31m�[1mTypeError�[22m: contractOwner.toLowerCase is not a function�[39m
�[36m �[2m❯�[22m Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:�[2m515:21�[22m�[39m
    �[90m513| �[39m    functionName�[33m:�[39m �[32m"owner"�[39m�[33m,�[39m
    �[90m514| �[39m  })) �[35mas�[39m �[33mAddress�[39m�[33m;�[39m
    �[90m515| �[39m  �[35mif�[39m (contractOwner�[33m.�[39m�[34mtoLowerCase�[39m() �[33m!==�[39m address�[33m.�[39m�[34mtoLowerCase�[39m()) {
    �[90m   | �[39m                    �[31m^�[39m
    �[90m516| �[39m    �[35mthrow�[39m �[35mnew�[39m �[33mError�[39m(
    �[90m517| �[39m      �[32m`Sender �[39m�[36m${�[39maddress�[36m}�[39m�[32m is not the owner of contract �[39m�[36m${�[39mappAuthAddress…
�[90m �[2m❯�[22m src/actions/blockchains/add_compose_hash.test.ts:�[2m590:22�[22m�[39m

�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[19/23]⎯�[22m�[39m

�[31m�[1m�[7m FAIL �[27m�[22m�[39m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mSchema Flexibility�[2m > �[22mshould handle ComposeHashAdded event when present
�[31m�[1mTypeError�[22m: contractOwner.toLowerCase is not a function�[39m
�[36m �[2m❯�[22m Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:�[2m515:21�[22m�[39m
    �[90m513| �[39m    functionName�[33m:�[39m �[32m"owner"�[39m�[33m,�[39m
    �[90m514| �[39m  })) �[35mas�[39m �[33mAddress�[39m�[33m;�[39m
    �[90m515| �[39m  �[35mif�[39m (contractOwner�[33m.�[39m�[34mtoLowerCase�[39m() �[33m!==�[39m address�[33m.�[39m�[34mtoLowerCase�[39m()) {
    �[90m   | �[39m                    �[31m^�[39m
    �[90m516| �[39m    �[35mthrow�[39m �[35mnew�[39m �[33mError�[39m(
    �[90m517| �[39m      �[32m`Sender �[39m�[36m${�[39maddress�[36m}�[39m�[32m is not the owner of contract �[39m�[36m${�[39mappAuthAddress…
�[90m �[2m❯�[22m src/actions/blockchains/add_compose_hash.test.ts:�[2m615:22�[22m�[39m

�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[20/23]⎯�[22m�[39m

�[31m�[1m�[7m FAIL �[27m�[22m�[39m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mType Inference�[2m > �[22mshould infer correct types for default schema
�[31m�[1mTypeError�[22m: contractOwner.toLowerCase is not a function�[39m
�[36m �[2m❯�[22m Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:�[2m515:21�[22m�[39m
    �[90m513| �[39m    functionName�[33m:�[39m �[32m"owner"�[39m�[33m,�[39m
    �[90m514| �[39m  })) �[35mas�[39m �[33mAddress�[39m�[33m;�[39m
    �[90m515| �[39m  �[35mif�[39m (contractOwner�[33m.�[39m�[34mtoLowerCase�[39m() �[33m!==�[39m address�[33m.�[39m�[34mtoLowerCase�[39m()) {
    �[90m   | �[39m                    �[31m^�[39m
    �[90m516| �[39m    �[35mthrow�[39m �[35mnew�[39m �[33mError�[39m(
    �[90m517| �[39m      �[32m`Sender �[39m�[36m${�[39maddress�[36m}�[39m�[32m is not the owner of contract �[39m�[36m${�[39mappAuthAddress…
�[90m �[2m❯�[22m src/actions/blockchains/add_compose_hash.test.ts:�[2m634:22�[22m�[39m

�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[21/23]⎯�[22m�[39m

�[31m�[1m�[7m FAIL �[27m�[22m�[39m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mType Inference�[2m > �[22mshould infer correct types for custom schema
�[31m�[1mTypeError�[22m: contractOwner.toLowerCase is not a function�[39m
�[36m �[2m❯�[22m Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:�[2m515:21�[22m�[39m
    �[90m513| �[39m    functionName�[33m:�[39m �[32m"owner"�[39m�[33m,�[39m
    �[90m514| �[39m  })) �[35mas�[39m �[33mAddress�[39m�[33m;�[39m
    �[90m515| �[39m  �[35mif�[39m (contractOwner�[33m.�[39m�[34mtoLowerCase�[39m() �[33m!==�[39m address�[33m.�[39m�[34mtoLowerCase�[39m()) {
    �[90m   | �[39m                    �[31m^�[39m
    �[90m516| �[39m    �[35mthrow�[39m �[35mnew�[39m �[33mError�[39m(
    �[90m517| �[39m      �[32m`Sender �[39m�[36m${�[39maddress�[36m}�[39m�[32m is not the owner of contract �[39m�[36m${�[39mappAuthAddress…
�[90m �[2m❯�[22m src/actions/blockchains/add_compose_hash.test.ts:�[2m652:22�[22m�[39m

�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[22/23]⎯�[22m�[39m

�[31m�[1m�[7m FAIL �[27m�[22m�[39m src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22maddComposeHash�[2m > �[22mType Inference�[2m > �[22mshould infer unknown type when schema is false
�[31m�[1mTypeError�[22m: contractOwner.toLowerCase is not a function�[39m
�[36m �[2m❯�[22m Module.addComposeHash src/actions/blockchains/add_compose_hash.ts:�[2m515:21�[22m�[39m
    �[90m513| �[39m    functionName�[33m:�[39m �[32m"owner"�[39m�[33m,�[39m
    �[90m514| �[39m  })) �[35mas�[39m �[33mAddress�[39m�[33m;�[39m
    �[90m515| �[39m  �[35mif�[39m (contractOwner�[33m.�[39m�[34mtoLowerCase�[39m() �[33m!==�[39m address�[33m.�[39m�[34mtoLowerCase�[39m()) {
    �[90m   | �[39m                    �[31m^�[39m
    �[90m516| �[39m    �[35mthrow�[39m �[35mnew�[39m �[33mError�[39m(
    �[90m517| �[39m      �[32m`Sender �[39m�[36m${�[39maddress�[36m}�[39m�[32m is not the owner of contract �[39m�[36m${�[39mappAuthAddress…
�[90m �[2m❯�[22m src/actions/blockchains/add_compose_hash.test.ts:�[2m662:22�[22m�[39m

�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[23/23]⎯�[22m�[39m

�[2m Test Files �[22m �[1m�[31m1 failed�[39m�[22m�[2m | �[22m�[1m�[32m44 passed�[39m�[22m�[90m (45)�[39m
�[2m      Tests �[22m �[1m�[31m23 failed�[39m�[22m�[2m | �[22m�[1m�[32m654 passed�[39m�[22m�[90m (677)�[39m
�[2m   Start at �[22m 18:18:49
�[2m   Duration �[22m 8.82s�[2m (transform 1.24s, setup 6ms, collect 11.19s, tests 1.05s, environment 13ms, prepare 5.63s)�[22m

error: script "test" exited with code 1

📝 JS SDK - Lint Check

Show lint results
✓ No linting issues found

🌐 JS SDK - Browser Compatibility

Show browser test results

🌐 Browser Compatibility Report

Browser compatibility tests completed across:

  • ✓ Chromium
  • ✓ Firefox
  • ✓ WebKit (Safari)

The SDK has been verified to work in modern browser environments.


Check run: https://github.com/Phala-Network/phala-cloud/actions/runs/23957011962

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