gabriel / muse public
test_mpack_presign.py python
42 lines 1.4 KB
Raw
sha256:c0eba5ad689cec79f4a3fcdc4f5da78556cb4b8cb7b330f944634356c10379ed chore: pivot to nightly channel — bump version to 0.2.0.dev… Sonnet 5 patch 13 days ago
1 """TDD — build_presign_payload: client-side Step 1 of the mpack push protocol.
2
3 PS-1 Given known bytes, mpack_key is "sha256:" + sha256(bytes).hexdigest().
4 PS-2 size_bytes equals len(mpack_bytes).
5 PS-3 Empty bytes produce a valid (non-empty) mpack_key and size_bytes == 0.
6 PS-4 Two calls with identical bytes produce identical payloads (deterministic).
7 PS-5 Two calls with different bytes produce different mpack_keys.
8 """
9 from __future__ import annotations
10
11 from muse.core.mpack import build_presign_payload
12 from muse.core.types import blob_id
13
14
15 def test_ps1_mpack_key_is_sha256_prefixed() -> None:
16 data = b"hello mpack"
17 payload = build_presign_payload(data)
18 assert payload["mpack_key"] == blob_id(data)
19
20
21 def test_ps2_size_bytes_matches_len() -> None:
22 data = b"x" * 1234
23 payload = build_presign_payload(data)
24 assert payload["size_bytes"] == 1234
25
26
27 def test_ps3_empty_bytes() -> None:
28 payload = build_presign_payload(b"")
29 assert payload["mpack_key"].startswith("sha256:")
30 assert len(payload["mpack_key"]) == len("sha256:") + 64
31 assert payload["size_bytes"] == 0
32
33
34 def test_ps4_deterministic() -> None:
35 data = b"same bytes every time"
36 assert build_presign_payload(data) == build_presign_payload(data)
37
38
39 def test_ps5_different_bytes_different_key() -> None:
40 a = build_presign_payload(b"aaaa")
41 b = build_presign_payload(b"bbbb")
42 assert a["mpack_key"] != b["mpack_key"]
File History 10 commits
sha256:c287f599c5429903a139eadf3c5db5d930520e57cb0c3c575d9570e953c3b2d6 chore: bump version to 0.2.0.dev2 — nightly.2 Sonnet 4.6 patch 12 days ago
sha256:8de4334a98c945aace420969d389ad678aa926d4ab4e886b2ac4c4241cb3bf2b revert: keep pyproject.toml in canonical PEP 440 form Sonnet 4.6 patch 15 days ago
sha256:50bb615c573aa4b928fca75b60f82ba2a659910066507cec6a95c412ae22ccb9 docs: add issue docs for push have-negotiation bug (#55) an… Sonnet 4.6 18 days ago
sha256:d90d175cded68aae1d4ffcf4858917854195d0cd8ce1fe73cee4dbc02541cb74 chore: trigger push to surface null-OID paths Sonnet 4.6 24 days ago
sha256:e452ad9a6ace6ccc6d875a35e06caf9da5576a970c1c36133b69a891ce5fefa8 chore: prebuild timing test Sonnet 4.6 34 days ago
sha256:0008ab6695e3e064b3e236b24fd19e538fef6a588eb0d211622f4466d919c0b1 merge: pull staging/dev — advance to 0.2.0rc12 Sonnet 4.6 patch 36 days ago
sha256:9c33d61749fff814c5226d5386aa2af7064c2c02788594a25fdd709358132eea fix: _PROPOSAL_PREFIX_RESOLVE_LIMIT 200 → 100 to match hub … Sonnet 4.6 47 days ago
sha256:36c3cb3e76619d4c30a6d9bf81b5ec4ff148e30dcfed913e3114ca7b43b81c7e fix: rename objects→blobs in push client and all stale test… Sonnet 4.6 patch 50 days ago
sha256:c06a9b9b9fee26c68ea725b44d54b2c0a171301ce9de746d5b656617b4463a9a fix: repair four test failures from post-migration audit Sonnet 4.6 patch 56 days ago
sha256:1900655993c83c4107067375548a7be823e471d2515830842f1a12cba4bd3cdf fix: unified object store migration — idempotent writes, JS… Sonnet 4.6 minor 57 days ago