Skip to content

Commit 3dd020c

Browse files
committed
add test for pausable extension and confidential mint and burn
1 parent ca08984 commit 3dd020c

File tree

1 file changed

+134
-0
lines changed

1 file changed

+134
-0
lines changed

clients/rust-legacy/tests/confidential_mint_burn.rs

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1209,3 +1209,137 @@ async fn confidential_mint_burn_with_option(option: ConfidentialTransferOption)
12091209
0,
12101210
);
12111211
}
1212+
1213+
#[tokio::test]
1214+
async fn pause_confidential_mint_burn() {
1215+
let pausable_authority = Keypair::new();
1216+
1217+
let confidential_transfer_authority = Keypair::new();
1218+
let auto_approve_new_accounts = true;
1219+
let auditor_elgamal_keypair = ElGamalKeypair::new_rand();
1220+
let auditor_elgamal_pubkey = (*auditor_elgamal_keypair.pubkey()).into();
1221+
1222+
let supply_elgamal_keypair = ElGamalKeypair::new_rand();
1223+
let supply_elgamal_pubkey = (*supply_elgamal_keypair.pubkey()).into();
1224+
let supply_aes_key = AeKey::new_rand();
1225+
let decryptable_supply = supply_aes_key.encrypt(0).into();
1226+
1227+
let mut context = TestContext::new().await;
1228+
context
1229+
.init_token_with_mint(vec![
1230+
ExtensionInitializationParams::ConfidentialTransferMint {
1231+
authority: Some(confidential_transfer_authority.pubkey()),
1232+
auto_approve_new_accounts,
1233+
auditor_elgamal_pubkey: Some(auditor_elgamal_pubkey),
1234+
},
1235+
ExtensionInitializationParams::ConfidentialMintBurn {
1236+
supply_elgamal_pubkey,
1237+
decryptable_supply,
1238+
},
1239+
ExtensionInitializationParams::PausableConfig {
1240+
authority: pausable_authority.pubkey(),
1241+
},
1242+
])
1243+
.await
1244+
.unwrap();
1245+
1246+
let TokenContext {
1247+
token,
1248+
mint_authority,
1249+
alice,
1250+
..
1251+
} = context.token_context.unwrap();
1252+
1253+
let alice_meta = ConfidentialTokenAccountMeta::new(&token, &alice).await;
1254+
1255+
token
1256+
.confidential_transfer_mint(
1257+
&mint_authority.pubkey(),
1258+
&alice_meta.token_account,
1259+
None,
1260+
None,
1261+
None,
1262+
120,
1263+
&supply_elgamal_keypair,
1264+
alice_meta.elgamal_keypair.pubkey(),
1265+
Some(auditor_elgamal_keypair.pubkey()),
1266+
&supply_aes_key,
1267+
None,
1268+
&[&mint_authority],
1269+
)
1270+
.await
1271+
.unwrap();
1272+
1273+
token
1274+
.confidential_transfer_apply_pending_balance(
1275+
&alice_meta.token_account,
1276+
&alice.pubkey(),
1277+
None,
1278+
alice_meta.elgamal_keypair.secret(),
1279+
&alice_meta.aes_key,
1280+
&[&alice],
1281+
)
1282+
.await
1283+
.unwrap();
1284+
1285+
token
1286+
.pause(&pausable_authority.pubkey(), &[&pausable_authority])
1287+
.await
1288+
.unwrap();
1289+
1290+
let error = token
1291+
.confidential_transfer_mint(
1292+
&mint_authority.pubkey(),
1293+
&alice_meta.token_account,
1294+
None,
1295+
None,
1296+
None,
1297+
10,
1298+
&supply_elgamal_keypair,
1299+
alice_meta.elgamal_keypair.pubkey(),
1300+
Some(auditor_elgamal_keypair.pubkey()),
1301+
&supply_aes_key,
1302+
None,
1303+
&[&mint_authority],
1304+
)
1305+
.await
1306+
.unwrap_err();
1307+
1308+
assert_eq!(
1309+
error,
1310+
TokenClientError::Client(Box::new(TransportError::TransactionError(
1311+
TransactionError::InstructionError(
1312+
0,
1313+
InstructionError::Custom(TokenError::MintPaused as u32)
1314+
)
1315+
)))
1316+
);
1317+
1318+
let error = token
1319+
.confidential_transfer_burn(
1320+
&alice.pubkey(),
1321+
&alice_meta.token_account,
1322+
None,
1323+
None,
1324+
None,
1325+
10,
1326+
&alice_meta.elgamal_keypair,
1327+
supply_elgamal_keypair.pubkey(),
1328+
Some(auditor_elgamal_keypair.pubkey()),
1329+
&alice_meta.aes_key,
1330+
None,
1331+
&[&alice],
1332+
)
1333+
.await
1334+
.unwrap_err();
1335+
1336+
assert_eq!(
1337+
error,
1338+
TokenClientError::Client(Box::new(TransportError::TransactionError(
1339+
TransactionError::InstructionError(
1340+
0,
1341+
InstructionError::Custom(TokenError::MintPaused as u32)
1342+
)
1343+
)))
1344+
);
1345+
}

0 commit comments

Comments
 (0)