diff options
Diffstat (limited to 'packages/meshbay-node/tests/test_webrtc_transport.py')
| -rw-r--r-- | packages/meshbay-node/tests/test_webrtc_transport.py | 25 |
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. |