134 lines
3.3 KiB
Rust
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()));
|
|
}
|