@towns-protocol/sdk 0.0.226 → 0.0.227

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,12 +4,15 @@
4
4
  import { createTownWithRequirements, expectUserCanJoin, expectUserCanJoinChannel, getXchainConfigForTesting, linkWallets, waitFor, } from '../../testUtils';
5
5
  import { NoopRuleData } from '@towns-protocol/web3';
6
6
  import { makeUserStreamId } from '../../../id';
7
- import { MembershipOp } from '@towns-protocol/proto';
7
+ import { MembershipOp, MembershipReason } from '@towns-protocol/proto';
8
8
  import { ethers } from 'ethers';
9
- const SHORT_MEMBERSHIP_DURATION = 10; // seconds
10
- const WAIT_TIME = SHORT_MEMBERSHIP_DURATION * 1_000 + 1_000;
9
+ const SHORT_MEMBERSHIP_DURATION = 20; // seconds
10
+ const WAIT_TIME = SHORT_MEMBERSHIP_DURATION * 1_000 + 500;
11
+ // this test is long because it has to wait for the membership to expire in real time
12
+ // but the membership duration has to be long enough such that other actions/assertions can be made
13
+ // it tests both node entitlement checks for expired memberships, as well as client entitlement checks via space dapp
11
14
  describe('membershipRenewals', () => {
12
- test('expired membership is not allowed to join', async () => {
15
+ test.concurrent('expired membership is not allowed to join', async () => {
13
16
  const { spaceId, channelId, alice, bob, aliceSpaceDapp, aliceProvider, alicesWallet } = await createTownWithRequirements({
14
17
  everyone: true,
15
18
  users: [],
@@ -20,18 +23,18 @@ describe('membershipRenewals', () => {
20
23
  // wait for membership to expire
21
24
  await new Promise((resolve) => setTimeout(resolve, WAIT_TIME));
22
25
  await alice.leaveStream(spaceId);
23
- // space dapp does not check expiration, so we'll still get an entitled wallet
26
+ const aliceWallets = await aliceSpaceDapp.getLinkedWallets(alicesWallet.address);
27
+ const membershipStatus = await aliceSpaceDapp.getMembershipStatus(spaceId, aliceWallets);
28
+ expect(membershipStatus.isMember).toBe(true);
29
+ expect(membershipStatus.isExpired).toBe(true);
24
30
  const entitledWallet = await aliceSpaceDapp.getEntitledWalletForJoiningSpace(spaceId, alicesWallet.address, getXchainConfigForTesting());
25
- expect(entitledWallet).toBeDefined();
26
- // same here
27
- const hasMembership = await aliceSpaceDapp.hasSpaceMembership(spaceId, entitledWallet);
28
- expect(hasMembership).toBe(true);
31
+ expect(entitledWallet).toBeUndefined();
29
32
  await expect(alice.joinStream(spaceId)).rejects.toThrow(/7:PERMISSION_DENIED/);
30
33
  // Clean up
31
34
  await alice.stopSync();
32
35
  await bob.stopSync();
33
36
  });
34
- test('user with expired membership is bounced from a channel after scrub is triggered', async () => {
37
+ test.concurrent('user with expired membership is bounced from a channel after scrub is triggered', async () => {
35
38
  const { spaceId, channelId, alice, carol, aliceSpaceDapp, aliceProvider, alicesWallet, carolSpaceDapp, carolProvider, carolsWallet, } = await createTownWithRequirements({
36
39
  everyone: true,
37
40
  users: [],
@@ -47,15 +50,17 @@ describe('membershipRenewals', () => {
47
50
  // should be booted from the stream since her membership has expired
48
51
  await expect(carol.joinStream(channelId)).resolves.not.toThrow();
49
52
  const userStreamView = (await alice.waitForStream(makeUserStreamId(alice.userId))).view;
53
+ const membership = userStreamView.userContent.getMembership(channelId);
50
54
  // Wait for alice's user stream to have the leave event
51
55
  await waitFor(async () => {
52
- return expect(userStreamView.userContent.isMember(channelId, MembershipOp.SO_LEAVE)).toBe(true);
56
+ expect(membership?.op).toBe(MembershipOp.SO_LEAVE);
57
+ expect(membership?.reason).toBe(MembershipReason.MR_EXPIRED);
53
58
  });
54
59
  // Clean up
55
60
  await alice.stopSync();
56
61
  await carol.stopSync();
57
62
  });
58
- test('user with unexpired membership is not bounced from a channel after scrub is triggered', async () => {
63
+ test.concurrent('user with unexpired membership is not bounced from a channel after scrub is triggered', async () => {
59
64
  const { spaceId, channelId, alice, carol, aliceSpaceDapp, aliceProvider, alicesWallet, carolSpaceDapp, carolProvider, carolsWallet, } = await createTownWithRequirements({
60
65
  everyone: true,
61
66
  users: [],
@@ -80,18 +85,66 @@ describe('membershipRenewals', () => {
80
85
  expect(timeUntilExpiration).toBeLessThan(0);
81
86
  // now mint a membership for the eoa wallet, which is linked to alice - mint only, not joining stream
82
87
  await aliceSpaceDapp.joinSpace(spaceId, eoaWallet.address, aliceProvider.wallet);
88
+ const aliceWallets = await aliceSpaceDapp.getLinkedWallets(alicesWallet.address);
89
+ const membershipStatus = await aliceSpaceDapp.getMembershipStatus(spaceId, aliceWallets);
90
+ expect(membershipStatus.isMember).toBe(true);
91
+ expect(membershipStatus.isExpired).toBe(false);
92
+ const entitledWallet = await aliceSpaceDapp.getEntitledWalletForJoiningSpace(spaceId, alicesWallet.address, getXchainConfigForTesting());
93
+ expect(entitledWallet).toBeDefined();
83
94
  await expectUserCanJoin(spaceId, channelId, 'carol', carol, carolSpaceDapp, carolsWallet.address, carolProvider.wallet);
84
95
  // When carol's join event is added to the stream, it should trigger a scrub, and Alice
85
96
  // should not be booted from the stream since her she has an additional token that is not expired
86
97
  await expect(carol.joinStream(channelId)).resolves.not.toThrow();
87
98
  const userStreamView = (await alice.waitForStream(makeUserStreamId(alice.userId))).view;
88
- // wait for any caches to be invalidated
89
- await new Promise((f) => setTimeout(f, 5_000));
90
- // Wait for alice's user stream to have the leave event
91
- expect(userStreamView.userContent.isMember(channelId, MembershipOp.SO_JOIN)).toBe(true);
99
+ // Wait for alice's user stream to have the join event
100
+ await waitFor(async () => {
101
+ return expect(userStreamView.userContent.isMember(channelId, MembershipOp.SO_JOIN)).toBe(true);
102
+ });
92
103
  // Clean up
93
104
  await alice.stopSync();
94
105
  await carol.stopSync();
95
106
  });
107
+ test.concurrent('(BASE only) user can renew membership', async () => {
108
+ const _MEMBERSHIP_DURATION = 10;
109
+ const { spaceId, aliceSpaceDapp, aliceProvider, alicesWallet } = await createTownWithRequirements({
110
+ everyone: true,
111
+ users: [],
112
+ ruleData: NoopRuleData,
113
+ duration: _MEMBERSHIP_DURATION,
114
+ });
115
+ // Check that the local evaluation of the user's entitlements for joining the space
116
+ // passes.
117
+ const entitledWallet = await aliceSpaceDapp.getEntitledWalletForJoiningSpace(spaceId, alicesWallet.address, getXchainConfigForTesting());
118
+ expect(entitledWallet).toBeDefined();
119
+ const { issued } = await aliceSpaceDapp.joinSpace(spaceId, alicesWallet.address, aliceProvider.wallet);
120
+ expect(issued).toBe(true);
121
+ // wait for membership to expire
122
+ await new Promise((resolve) => setTimeout(resolve, _MEMBERSHIP_DURATION * 1_000 + 500));
123
+ const aliceWallets = await aliceSpaceDapp.getLinkedWallets(alicesWallet.address);
124
+ const membershipStatus = await aliceSpaceDapp.getMembershipStatus(spaceId, aliceWallets);
125
+ expect(membershipStatus.isMember).toBe(true);
126
+ expect(membershipStatus.isExpired).toBe(true);
127
+ const entitledWalletAfterExpiry = await aliceSpaceDapp.getEntitledWalletForJoiningSpace(spaceId, alicesWallet.address, getXchainConfigForTesting());
128
+ expect(entitledWalletAfterExpiry).toBeUndefined();
129
+ const space = aliceSpaceDapp.getSpace(spaceId);
130
+ const tokenId = membershipStatus.tokenId;
131
+ expect(tokenId).toBeDefined();
132
+ if (!tokenId || !space) {
133
+ throw new Error('TokenId or space not found');
134
+ }
135
+ const tx = await space.renewMembership({
136
+ tokenId,
137
+ signer: aliceProvider.wallet,
138
+ });
139
+ const receipt = await tx.wait();
140
+ expect(receipt.status).toBe(1);
141
+ const membershipStatusAfterRenewal = await space.getMembershipStatus(aliceWallets);
142
+ expect(membershipStatusAfterRenewal.isMember).toBe(true);
143
+ expect(membershipStatusAfterRenewal.isExpired).toBe(false);
144
+ // wait for caches to be invalidated
145
+ await new Promise((resolve) => setTimeout(resolve, 5_000));
146
+ const entitledWalletAfterRenewal = await aliceSpaceDapp.getEntitledWalletForJoiningSpace(spaceId, alicesWallet.address, getXchainConfigForTesting());
147
+ expect(entitledWalletAfterRenewal).toBeDefined();
148
+ });
96
149
  });
97
150
  //# sourceMappingURL=membershipRenewals.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"membershipRenewals.test.js","sourceRoot":"","sources":["../../../../src/tests/multi/entitlements/membershipRenewals.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"membershipRenewals.test.js","sourceRoot":"","sources":["../../../../src/tests/multi/entitlements/membershipRenewals.test.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,11 @@
2
2
  * @group main
3
3
  */
4
4
  import { assert } from '../../check';
5
- import { makeTestClient } from '../testUtils';
5
+ import { makeTestClient, makeUniqueSpaceStreamId } from '../testUtils';
6
6
  import { SessionKeysSchema } from '@towns-protocol/proto';
7
- import { dlog } from '@towns-protocol/dlog';
8
7
  import { create, fromJsonString, toJsonString } from '@bufbuild/protobuf';
8
+ import { dlog } from '@towns-protocol/dlog';
9
+ import { GroupEncryptionAlgorithmId } from '@towns-protocol/encryption';
9
10
  const log = dlog('test:clientCrypto');
10
11
  describe('clientCrypto', () => {
11
12
  let bobsClient;
@@ -60,5 +61,18 @@ describe('clientCrypto', () => {
60
61
  expect(keys2.keys[0]).toEqual(message);
61
62
  }
62
63
  });
64
+ test('client can check if a hybrid session exists', async () => {
65
+ await expect(bobsClient.initializeUser()).resolves.not.toThrow();
66
+ if (!bobsClient.cryptoBackend) {
67
+ throw new Error('bob.cryptoBackend is undefined');
68
+ }
69
+ const streamId = makeUniqueSpaceStreamId();
70
+ await bobsClient.createSpace(streamId);
71
+ let hasSession = await bobsClient.cryptoBackend.hasHybridSession(streamId);
72
+ expect(hasSession).toBe(false);
73
+ await bobsClient.cryptoBackend.ensureOutboundSession(streamId, GroupEncryptionAlgorithmId.HybridGroupEncryption, { awaitInitialShareSession: false });
74
+ hasSession = await bobsClient.cryptoBackend.hasHybridSession(streamId);
75
+ expect(hasSession).toBe(true);
76
+ });
63
77
  });
64
78
  //# sourceMappingURL=clientCrypto.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clientCrypto.test.js","sourceRoot":"","sources":["../../../src/tests/multi_ne/clientCrypto.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clientCrypto.test.js","sourceRoot":"","sources":["../../../src/tests/multi_ne/clientCrypto.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@towns-protocol/sdk",
3
- "version": "0.0.226",
3
+ "version": "0.0.227",
4
4
  "packageManager": "yarn@3.8.0",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -32,11 +32,11 @@
32
32
  "@ethereumjs/util": "^8.0.1",
33
33
  "@noble/curves": "^1.9.1",
34
34
  "@noble/hashes": "^1.8.0",
35
- "@towns-protocol/dlog": "^0.0.226",
36
- "@towns-protocol/encryption": "^0.0.226",
37
- "@towns-protocol/generated": "^0.0.226",
38
- "@towns-protocol/proto": "^0.0.226",
39
- "@towns-protocol/web3": "^0.0.226",
35
+ "@towns-protocol/dlog": "^0.0.227",
36
+ "@towns-protocol/encryption": "^0.0.227",
37
+ "@towns-protocol/generated": "^0.0.227",
38
+ "@towns-protocol/proto": "^0.0.227",
39
+ "@towns-protocol/web3": "^0.0.227",
40
40
  "browser-or-node": "^3.0.0",
41
41
  "debug": "^4.3.4",
42
42
  "dexie": "^4.0.7",
@@ -71,5 +71,5 @@
71
71
  "files": [
72
72
  "/dist"
73
73
  ],
74
- "gitHead": "564d94bc6a22f3c5f7631442cddd734e7514a395"
74
+ "gitHead": "6aece8b3fcbc2bc02068b298251e4a1656926d58"
75
75
  }