aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-node/tests
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-node/tests')
-rw-r--r--packages/meshbay-node/tests/test_indexer.py96
-rw-r--r--packages/meshbay-node/tests/test_webrtc_transport.py6
2 files changed, 8 insertions, 94 deletions
diff --git a/packages/meshbay-node/tests/test_indexer.py b/packages/meshbay-node/tests/test_indexer.py
index e97e2ef..c60600f 100644
--- a/packages/meshbay-node/tests/test_indexer.py
+++ b/packages/meshbay-node/tests/test_indexer.py
@@ -42,58 +42,6 @@ def shared_dir(tmp_path):
# ── GroupIndex tests ──────────────────────────────────────────────────────────
-def test_group_index_serialize_deserialize_private(sk_node, gek, shared_dir):
- idx = GroupIndex(group_id="grp-001", sk_node=sk_node, gek=gek)
- from meshbay_common.protocol import IndexEntry
- idx.add_entry(IndexEntry(
- id="abc123", name="video.mkv", path="", size=1024,
- type="video", added_at=int(time.time()), duration=120))
-
- wire = idx.serialize()
- recovered = GroupIndex.deserialize(wire, sk_node=sk_node, gek=gek)
-
- assert recovered.group_id == "grp-001"
- assert recovered.count == 1
- assert recovered.entries[0].name == "video.mkv"
- assert recovered.entries[0].type == "video"
-
-
-def test_group_index_serialize_deserialize_public(sk_node):
- idx = GroupIndex(group_id="pub-001", sk_node=sk_node, gek=None)
- from meshbay_common.protocol import IndexEntry
- idx.add_entry(IndexEntry(
- id="xyz789", name="readme.txt", path="", size=42,
- type="document", added_at=int(time.time())))
-
- wire = idx.serialize()
- recovered = GroupIndex.deserialize(wire, sk_node=sk_node, gek=None)
- assert recovered.count == 1
- assert recovered.entries[0].id == "xyz789"
-
-
-def test_group_index_wrong_gek_rejected(sk_node, gek):
- idx = GroupIndex(group_id="grp-002", sk_node=sk_node, gek=gek)
- from meshbay_common.protocol import IndexEntry
- idx.add_entry(IndexEntry(id="a", name="f.mp3", path="", size=1,
- type="audio", added_at=0))
- wire = idx.serialize()
-
- wrong_gek = generate_gek()
- with pytest.raises(Exception): # InvalidTag from AEAD
- GroupIndex.deserialize(wire, sk_node=sk_node, gek=wrong_gek)
-
-
-def test_group_index_tampered_rejected(sk_node, gek):
- idx = GroupIndex(group_id="grp-003", sk_node=sk_node, gek=gek)
- from meshbay_common.protocol import IndexEntry
- idx.add_entry(IndexEntry(id="b", name="f.mp4", path="", size=1,
- type="video", added_at=0))
- wire = bytearray(idx.serialize())
- wire[-5] ^= 0xFF # flip bytes at the end
- with pytest.raises(Exception):
- GroupIndex.deserialize(bytes(wire), sk_node=sk_node, gek=gek)
-
-
def test_group_index_diff(sk_node, gek):
from meshbay_common.protocol import IndexEntry
v1 = GroupIndex(group_id="g", sk_node=sk_node, gek=gek, version=1)
@@ -229,16 +177,6 @@ async def test_on_change_callback(shared_dir, sk_node, gek):
assert len(changes) >= 1, "on_change should have been called"
-@pytest.mark.asyncio
-async def test_index_roundtrip_after_scan(shared_dir, sk_node, gek):
- indexer = DirectoryIndexer(roots=one_root(shared_dir), group_id="g", sk_node=sk_node, gek=gek)
- await indexer.initial_scan()
-
- wire = indexer.index.serialize()
- recovered = GroupIndex.deserialize(wire, sk_node=sk_node, gek=gek)
- assert recovered.count == indexer.index.count
-
-
# ── Cache-aware scanning ───────────────────────────────────────────────────────
@pytest.fixture
@@ -796,35 +734,13 @@ def test_partial_hash_is_deterministic(tmp_path):
assert e1.id == e2.id
-def test_group_index_roundtrip_preserves_hash_version(sk_node, gek):
- from meshbay_common.protocol import IndexEntry
- idx = GroupIndex(group_id="hv-test", sk_node=sk_node, gek=gek)
- idx.add_entry(IndexEntry(
- id="aaa", name="small.mp4", path="root", size=1024,
- type="video", added_at=100, hash_version=1))
- idx.add_entry(IndexEntry(
- id="bbb", name="big.mkv", path="root", size=50_000_000,
- type="video", added_at=200, hash_version=2))
-
- wire = idx.serialize()
- recovered = GroupIndex.deserialize(wire, sk_node=sk_node, gek=gek)
-
- by_id = {e.id: e for e in recovered.entries}
- assert by_id["aaa"].hash_version == 1
- assert by_id["bbb"].hash_version == 2
-
-
-def test_deserialize_without_hash_version_defaults_to_1(sk_node, gek):
- """Entries serialized by old code (no hash_version field) must deserialize
- as hash_version=1."""
+def test_an_entry_without_hash_version_defaults_to_1():
+ """An entry built without the field (written before it existed) reads as a
+ full-read hash."""
from meshbay_common.protocol import IndexEntry
- idx = GroupIndex(group_id="compat", sk_node=sk_node, gek=gek)
- idx.add_entry(IndexEntry(
- id="old", name="f.mp4", path="root", size=1024,
- type="video", added_at=100))
- wire = idx.serialize()
- recovered = GroupIndex.deserialize(wire, sk_node=sk_node, gek=gek)
- assert recovered.entries[0].hash_version == 1
+ e = IndexEntry(id="old", name="f.mp4", path="root", size=1024,
+ type="video", added_at=100)
+ assert e.hash_version == 1
def test_index_entry_wire_includes_hash_version():
diff --git a/packages/meshbay-node/tests/test_webrtc_transport.py b/packages/meshbay-node/tests/test_webrtc_transport.py
index 990b1da..4542817 100644
--- a/packages/meshbay-node/tests/test_webrtc_transport.py
+++ b/packages/meshbay-node/tests/test_webrtc_transport.py
@@ -38,9 +38,7 @@ from meshbay_common.adminop import (
from meshbay_common.crypto import (
generate_gek,
pk_to_b64,
- unwrap_gek,
unwrap_gek_aes,
- wrap_gek,
wrap_gek_aes,
)
from meshbay_common.groupbox import PURPOSE_ACK, PURPOSE_INDEX, unseal
@@ -1570,7 +1568,7 @@ async def test_gek_bundle_fetch_during_handshake(sk_node, sk_hub, gek, shared_di
await bundle_store.open()
# Pre-populate a bundle for user-001 in group "g"
- bundle = wrap_gek(gek, pk_x_raw)
+ bundle = wrap_gek_aes(gek, pk_x_raw)
await bundle_store.store("g", "user-001",
bundle["pk_eph_b64"], bundle["nonce_b64"],
bundle["wrapped_b64"])
@@ -1631,7 +1629,7 @@ async def test_gek_bundle_fetch_during_handshake(sk_node, sk_hub, gek, shared_di
assert bundle_resp["found"] is True
# Step 3: Unwrap GEK and compute HMAC proof
- recovered_gek = unwrap_gek(bundle_resp, sk_x_raw, pk_x_raw)
+ recovered_gek = unwrap_gek_aes(bundle_resp, sk_x_raw, pk_x_raw)
assert recovered_gek == gek
nonce_s = base64.b64decode(msg["nonce"])