Files
descro/programs/descro_ext_resolvers/tests/test_register.rs
2026-05-26 21:33:32 +02:00

134 lines
3.3 KiB
Rust

mod common;
use common::*;
use descro_ext_resolvers::{AcceptancePolicy, ResolverType};
use solana_keypair::Keypair;
use solana_signer::Signer;
#[test]
fn registers_entry_with_correct_state() {
let (mut svm, authority) = setup();
send(
&mut svm,
ix_register(
&authority.pubkey(),
ResolverType::CentralAuthority,
AcceptancePolicy::Open,
"Acme Resolvers",
"Fast and fair dispute resolution",
100, // 1%
authority.pubkey(),
"ipfs://QmTest",
),
&authority,
);
let entry = read_entry(&svm, &authority.pubkey());
assert_eq!(entry.authority, authority.pubkey());
assert_eq!(entry.resolver_type, ResolverType::CentralAuthority);
assert_eq!(entry.acceptance_policy, AcceptancePolicy::Open);
assert_eq!(entry.name, "Acme Resolvers");
assert_eq!(entry.fee_bps, 100);
assert_eq!(entry.total_resolved, 0);
assert_eq!(entry.ruled_for_buyer, 0);
assert_eq!(entry.ruled_for_seller, 0);
}
#[test]
fn duplicate_register_fails() {
let (mut svm, authority) = setup();
send(
&mut svm,
ix_register(
&authority.pubkey(),
ResolverType::CentralAuthority,
AcceptancePolicy::Open,
"Acme",
"",
0,
authority.pubkey(),
"",
),
&authority,
);
assert!(!try_send(
&mut svm,
ix_register(
&authority.pubkey(),
ResolverType::CentralAuthority,
AcceptancePolicy::Open,
"Acme Again",
"",
0,
authority.pubkey(),
"",
),
&authority,
));
}
#[test]
fn register_empty_name_fails() {
let (mut svm, authority) = setup();
assert!(!try_send(
&mut svm,
ix_register(
&authority.pubkey(),
ResolverType::CentralAuthority,
AcceptancePolicy::Open,
"",
"",
0,
authority.pubkey(),
"",
),
&authority,
));
}
#[test]
fn register_invalid_fee_bps_fails() {
let (mut svm, authority) = setup();
assert!(!try_send(
&mut svm,
ix_register(
&authority.pubkey(),
ResolverType::CentralAuthority,
AcceptancePolicy::Open,
"Acme",
"",
10_001, // > 100%
authority.pubkey(),
"",
),
&authority,
));
}
#[test]
fn different_authorities_have_separate_entries() {
let (mut svm, auth1) = setup();
let auth2 = Keypair::new();
svm.airdrop(&auth2.pubkey(), 10_000_000_000).unwrap();
send(
&mut svm,
ix_register(&auth1.pubkey(), ResolverType::CentralAuthority, AcceptancePolicy::Open, "Auth1", "", 0, auth1.pubkey(), ""),
&auth1,
);
send(
&mut svm,
ix_register(&auth2.pubkey(), ResolverType::JuryDAO, AcceptancePolicy::Open, "Auth2", "", 50, auth2.pubkey(), ""),
&auth2,
);
let e1 = read_entry(&svm, &auth1.pubkey());
let e2 = read_entry(&svm, &auth2.pubkey());
assert_eq!(e1.name, "Auth1");
assert_eq!(e2.name, "Auth2");
assert_ne!(resolver_entry_pda(&auth1.pubkey()), resolver_entry_pda(&auth2.pubkey()));
}