magic-domain-program 0.3.0

Domain registration program for Ephemeral Rollups
Documentation
use borsh::BorshDeserialize;
use common::TestEnv;
use mdp::state::{
    features::{Feature, FeaturesSet},
    record::ErRecord,
};
use solana_sdk::{account::Account, signer::Signer};

pub mod common;

#[tokio::test]
async fn test_registration() {
    let TestEnv {
        mut banks,
        identity,
        record,
        ..
    } = common::setup().await;
    let addr = record.addr().to_owned();
    let pda = record.pda().0;

    let result = common::register(&mut banks, record, &identity).await;

    assert_ok!(result, "error processing register transaction {}");

    let result = banks.get_account(pda).await;

    let acc = assert_ok!(result, "error querying registration PDA from banks {}");
    assert!(matches!(acc, Some(Account { owner: mdp::ID, .. })));
    let acc = acc.unwrap();
    let result = ErRecord::try_from_slice(&acc.data);
    let record = assert_ok!(result, "error querying registration PDA from banks {}");
    assert_eq!(*record.identity(), identity.pubkey());
    assert_eq!(
        *record.features(),
        FeaturesSet::default().activate(Feature::Randomness)
    );
    assert_eq!(record.addr(), addr);
}