35 lines
1.5 KiB
Rust
35 lines
1.5 KiB
Rust
// file: ks-lib/tests/external_metaplex_token_metadata_executor_api.rs
|
|
// version: 2
|
|
|
|
//! Downstream-style compilation contract for the Metaplex Token Metadata executor.
|
|
|
|
#[test]
|
|
fn external_consumers_inspect_metaplex_executor_capabilities_only_through_crate_root_exports() {
|
|
let executor = ks_lib::ExMetadataMetaplexTokenMetadataExecutor;
|
|
let program_id = ks_lib::MdProgramId(
|
|
ks_program_ids::METADATA_METAPLEX_TOKEN_METADATA_PROGRAM_ID.to_string(),
|
|
);
|
|
assert_eq!(ks_lib::EX_METAPLEX_TOKEN_METADATA_SUPPORTED_OPERATION_CODES.len(), 35);
|
|
assert_eq!(ks_lib::EX_METAPLEX_TOKEN_METADATA_DEPRECATED_OPERATION_CODES.len(), 15);
|
|
for operation_code in ks_lib::EX_METAPLEX_TOKEN_METADATA_SUPPORTED_OPERATION_CODES {
|
|
let capability = ks_lib::ExApiTypedInstructionExecutor::capability(
|
|
&executor,
|
|
&program_id,
|
|
operation_code,
|
|
);
|
|
assert!(capability.is_supported());
|
|
}
|
|
for operation_code in ks_lib::EX_METAPLEX_TOKEN_METADATA_DEPRECATED_OPERATION_CODES {
|
|
assert!(
|
|
ks_lib::EX_METAPLEX_TOKEN_METADATA_SUPPORTED_OPERATION_CODES.contains(operation_code)
|
|
);
|
|
}
|
|
let foreign_program_id = ks_lib::MdProgramId(ks_program_ids::SYSTEM_PROGRAM_ID.to_string());
|
|
let foreign_capability = ks_lib::ExApiTypedInstructionExecutor::capability(
|
|
&executor,
|
|
&foreign_program_id,
|
|
ks_lib::EX_METAPLEX_TOKEN_METADATA_CREATE_OPERATION,
|
|
);
|
|
assert!(!foreign_capability.is_supported());
|
|
}
|