aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-node/tests/test_webrtc_transport.py
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-node/tests/test_webrtc_transport.py')
-rw-r--r--packages/meshbay-node/tests/test_webrtc_transport.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/packages/meshbay-node/tests/test_webrtc_transport.py b/packages/meshbay-node/tests/test_webrtc_transport.py
index 159ba63..a4c7f61 100644
--- a/packages/meshbay-node/tests/test_webrtc_transport.py
+++ b/packages/meshbay-node/tests/test_webrtc_transport.py
@@ -1105,6 +1105,23 @@ def x25519_keypair():
return sk_raw, pk_raw
+class _InviteHub:
+ """Just enough hub for `ops.create_invite`: a live session, and a member
+ registration that records what it was asked to do."""
+
+ class _S:
+ user_id = "node-user"
+
+ _session = _S()
+
+ def __init__(self):
+ self.added = []
+
+ async def add_group_member(self, group_id, username):
+ self.added.append((group_id, username))
+ return {"status": "stored"}
+
+
@pytest.mark.asyncio
async def test_invite_then_join_delivers_the_gek(sk_node, sk_hub, gek, shared_dir,
tmp_path, x25519_keypair):
@@ -1134,9 +1151,17 @@ async def test_invite_then_join_delivers_the_gek(sk_node, sk_hub, gek, shared_di
transport._ctx["groups"] = {
TEST_GROUP: {"gek": gek, "roots": shared_dir, "index": indexer.index},
}
+ # `create_invite` registers the invitee as a hub member *before* writing the
+ # invite, and fails the whole operation if it cannot: `/v1/groups/mine`
+ # joins `GroupMember`, so someone never registered does not see the group
+ # and could never redeem the code. Without a hub here the operation is
+ # correctly refused — this test used to have none, and passed only because
+ # the registration failure was swallowed and the unredeemable code returned
+ # anyway.
transport._ctx["daemon_state"] = {
"roster": roster,
"groups_ctx": transport._ctx["groups"],
+ "hub": _InviteHub(),
}
# A paired operator, as `meshbay-node operator pair` would have left it.