open-standards/smart-byte/smart-byte-rs/crates/smart-byte-atproto/tests/repo_commit.rs
Transaction Science 6ea90afbed ingest wave A4: 3 crates · smart-byte-atproto + op-openbanking + eoc-distributed
Smart Byte (1 crate, 2127 LOC, 35 tests)
  smart-byte-atproto    ATProto (Bluesky federation) adapter.
                        PLC + did:web resolution; XRPC client; CARv1 encode/decode
                        with CIDv1 (dag-cbor + raw, SHA-256); sketch MST with
                        order-independent BLAKE3 root; Repo + UnsignedCommit /
                        SignedCommit (Ed25519 over CBOR); firehose transport
                        trait + in-memory impl; AT URI ↔ smart-byte AID bridge
                        with SAID commitment.

OpenPay (1 crate, 2397 LOC, 44 tests)
  op-openbanking        UK OBIE R/W v3.1.10/3.1.11, Berlin Group NextGenPSD2
                        XS2A v1.3.13, STET PSD2 v1.7, Australia CDR Banking v1.31,
                        FDX v5/v6, SGFinDex shapes. AISP / PISP / PIIS / VRP
                        traits. FAPI 1.0 Advanced (PS256/ES256, mTLS, RFC 8705
                        certificate binding, JWK registration). Operators wire
                        their own JWS signer + HTTP transport — keeps the crate
                        KMS-agnostic.

EOC (1 crate, 2179 LOC, 32 tests)
  eoc-distributed       Distributed-inference scheduling. Worker trait with
                        Capability + Accelerator (CPU/GPU/TPU/NPU/Mixed) +
                        Load.busyness()/projected_micro_joules()/projected_g_co2e().
                        RoundRobin / LeastBusy / LatencyWeighted / JouleWeighted
                        (default) / CarbonWeighted routers. Work-stealing
                        scheduler. vLLM-style continuous batching with KV-block
                        budget. Ray-Serve-style auto-scaler with cooldown.
                        KV-cache-aware sticky-session routing.

Co-Authored-By: Claude Opus 4.7 <[email protected]>
2026-05-24 12:22:09 -04:00

56 lines
2.1 KiB
Rust

//! Build a repo, sign a commit, export to CAR, decode back, verify.
use ed25519_dalek::SigningKey;
use rand::rngs::OsRng;
use smart_byte_atproto::car::{CarFile, Cid};
use smart_byte_atproto::{Repo, SignedCommit};
#[test]
fn sign_then_verify() {
let mut csprng = OsRng;
let key = SigningKey::generate(&mut csprng);
let mut repo = Repo::new("did:plc:repotest0000000000000000");
repo.put_record("app.bsky.feed.post/aaa", Cid::dag_cbor(b"first"))
.unwrap();
repo.put_record("app.bsky.feed.post/bbb", Cid::dag_cbor(b"second"))
.unwrap();
let signed = repo.sign_commit(&key).unwrap();
signed.verify(&key.verifying_key()).unwrap();
assert!(repo.head.is_some());
}
#[test]
fn wrong_key_fails_verify() {
let mut csprng = OsRng;
let key = SigningKey::generate(&mut csprng);
let other = SigningKey::generate(&mut csprng);
let mut repo = Repo::new("did:plc:repotest0000000000000000");
repo.put_record("c/1", Cid::dag_cbor(b"hi")).unwrap();
let signed = repo.sign_commit(&key).unwrap();
assert!(signed.verify(&other.verifying_key()).is_err());
}
#[test]
fn repo_exports_to_car_with_commit_root() {
let mut csprng = OsRng;
let key = SigningKey::generate(&mut csprng);
let mut repo = Repo::new("did:plc:repotest0000000000000000");
let rec_cid = Cid::dag_cbor(b"payload");
repo.put_record("c/1", rec_cid.clone()).unwrap();
let signed = repo.sign_commit(&key).unwrap();
let car = repo
.to_car(&signed, vec![(rec_cid.clone(), b"payload".to_vec())])
.unwrap();
let encoded = car.encode().unwrap();
let decoded = CarFile::decode(&encoded).unwrap();
assert_eq!(decoded.roots.len(), 1);
let commit_cid = signed.cid().unwrap();
assert_eq!(decoded.roots[0], commit_cid);
// commit + payload
assert_eq!(decoded.blocks.len(), 2);
// Re-deserialise the commit and reverify.
let commit_block = decoded.get(&commit_cid).unwrap();
let parsed: SignedCommit =
serde_cbor::from_slice(&commit_block.data).unwrap();
parsed.verify(&key.verifying_key()).unwrap();
}