// 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()); }