SHOWING: First 60
.write("tulip.png", [0; 555])
.write("meow.wav", [0; 2048])
.write(
"batch.yaml",
format!("parent: {parent_id}\nmode: shared-output\ninscriptions:\n- file: inscription.txt\n- file: tulip.png\n- file: meow.wav\n")
)
.rpc_server(&rpc_server)
.run_and_deserialize_output::<Inscribe>();
rpc_server.mine_blocks(1);
let ord_server = TestServer::spawn_with_args(&rpc_server, &[]);
ord_server.assert_response_regex(
format!("/inscription/{}", output.inscriptions[0].id),
r".*<dt>parent</dt>\s*<dd>.*</dd>.*",
);
ord_server.assert_response_regex(
format!("/inscription/{}", output.inscriptions[1].id),
r".*<dt>parent</dt>\s*<dd>.*</dd>.*",
);
let request = TestServer::spawn_with_args(&rpc_server, &[])
.request(format!("/content/{}", output.inscriptions[2].id));
assert_eq!(request.status(), 200);
assert_eq!(request.headers().get("content-type").unwrap(), "audio/wav");
}
#[test]
fn batch_inscribe_respects_dry_run_flag() {
let rpc_server = test_bitcoincore_rpc::spawn();
#45,161,326textuse {super::*, ord::subcommand::wallet::outputs::Output};
#[test]
fn outputs() {
let rpc_server = test_bitcoincore_rpc::spawn();
create_wallet(&rpc_server);
let coinbase_tx = &rpc_server.mine_blocks_with_subsidy(1, 1_000_000)[0].txdata[0];
let outpoint = OutPoint::new(coinbase_tx.txid(), 0);
let amount = coinbase_tx.output[0].value;
let output = CommandBuilder::new("wallet outputs")
.rpc_server(&rpc_server)
.run_and_deserialize_output::<Vec<Output>>();
assert_eq!(output[0].output, outpoint);
assert_eq!(output[0].amount, amount);
}
#[test]
fn outputs_includes_locked_outputs() {
let rpc_server = test_bitcoincore_rpc::spawn();
create_wallet(&rpc_server);
let coinbase_tx = &rpc_server.mine_blocks_with_subsidy(1, 1_000_000)[0].txdata[0];
let outpoint = OutPoint::new(coinbase_tx.txid(), 0);
let amount = coinbase_tx.output[0].value;
rpc_server.lock(outpoint);
let output = CommandBuilder::new("wallet outputs")
.rpc_server(&rpc_server)
.run_and_deserialize_output::<Vec<Output>>();#45,159,675text &rpc_server.descriptors()[1],
r"tr\(\[[[:xdigit:]]{8}/86'/0'/0'\]xprv[[:alnum:]]*/1/\*\)#[[:alnum:]]{8}"
);
}
#[test]
fn wallet_creates_correct_test_network_taproot_descriptor() {
let rpc_server = test_bitcoincore_rpc::builder()
.network(Network::Signet)
.build();
CommandBuilder::new("--chain signet wallet create")
.rpc_server(&rpc_server)
.run_and_deserialize_output::<Output>();
assert_eq!(rpc_server.descriptors().len(), 2);
assert_regex_match!(
&rpc_server.descriptors()[0],
r"tr\(\[[[:xdigit:]]{8}/86'/1'/0'\]tprv[[:alnum:]]*/0/\*\)#[[:alnum:]]{8}"
);
assert_regex_match!(
&rpc_server.descriptors()[1],
r"tr\(\[[[:xdigit:]]{8}/86'/1'/0'\]tprv[[:alnum:]]*/1/\*\)#[[:alnum:]]{8}"
);
}
#[test]
fn detect_wrong_descriptors() {
let rpc_server = test_bitcoincore_rpc::spawn();
CommandBuilder::new("wallet create")
.rpc_server(&rpc_server)
.run_and_deserialize_output::<Output>();
rpc_server.import_descriptor("wpkh([aslfjk])#a23ad2l".to_string());
#45,054,503text )
.rpc_server(&rpc_server)
.run_and_deserialize_output::<Output>();
let tx = &rpc_server.mempool()[0];
let mut fee = 0;
for input in &tx.input {
fee += rpc_server
.get_utxo_amount(&input.previous_output)
.unwrap()
.to_sat();
}
for output in &tx.output {
fee -= output.value;
}
let fee_rate = fee as f64 / tx.vsize() as f64;
assert!(f64::abs(fee_rate - 13.3) < 0.1);
assert_eq!(
output.transaction,
"0000000000000000000000000000000000000000000000000000000000000000"
.parse()
.unwrap()
);
assert_eq!(
rpc_server.sent(),
&[Sent {
amount: 1.0,
address: "bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4"
.parse::<Address<NetworkUnchecked>>()
.unwrap()
.assume_checked(),
locked: Vec::new(),
}]
);
}
#[test]
fn send_btc_locks_inscriptions() {
let rpc_server = test_bitcoincore_rpc::spawn();
create_wallet(&rpc_server);
rpc_server.mine_blocks(1);
let (_, reveal) = inscribe(&rpc_server);
let output =
#45,022,468text