@@ -10,7 +10,7 @@ import pDefer from 'p-defer'
10
10
import { pEvent } from 'p-event'
11
11
import RAM from 'random-access-memory'
12
12
import { map } from 'iterpal'
13
- import { MEMBER_ROLE_ID } from '../src/roles.js'
13
+ import { BLOCKED_ROLE_ID , MEMBER_ROLE_ID } from '../src/roles.js'
14
14
import comapeoServer from '@comapeo/cloud'
15
15
import {
16
16
connectPeers ,
@@ -372,6 +372,41 @@ test('data can be synced via a server', async (t) => {
372
372
)
373
373
} )
374
374
375
+ test ( 'add server, remove server, check that it knows it got blocked' , async ( t ) => {
376
+ const manager = createManager ( 'seed' , t )
377
+ await manager . setDeviceInfo ( { name : 'manager' , deviceType : 'mobile' } )
378
+
379
+ // Because we need to stop the server, we can't use a remote server here.
380
+ const { server, serverBaseUrl } = await createLocalTestServer ( t )
381
+ t . after ( ( ) => server . close ( ) )
382
+
383
+ const projectId = await manager . createProject ( { name : 'foo' } )
384
+ const project = await manager . getProject ( projectId )
385
+ await project . $member . addServerPeer ( serverBaseUrl , {
386
+ dangerouslyAllowInsecureConnections : true ,
387
+ } )
388
+ const serverPeer = await findServerPeer ( project )
389
+ assert ( serverPeer , 'test setup: server peer exists' )
390
+
391
+ await project . $member . removeServerPeer ( serverPeer . deviceId , {
392
+ dangerouslyAllowInsecureConnections : true ,
393
+ } )
394
+
395
+ const serverMember = await findServerPeer ( project )
396
+
397
+ assert . equal ( serverMember ?. role . roleId , BLOCKED_ROLE_ID , 'server now blocked' )
398
+
399
+ // @ts -expect-error - does not exist on type
400
+ const serverManager = /** @type {MapeoManager } */ server . comapeo
401
+ const serverProject = await serverManager . getProject ( projectId )
402
+ const serverMemberState = await findServerPeer ( serverProject )
403
+ assert . equal (
404
+ serverMemberState ?. role . roleId ,
405
+ BLOCKED_ROLE_ID ,
406
+ 'server knows it is blocked'
407
+ )
408
+ } )
409
+
375
410
test ( 'connecting and then immediately disconnecting (and then immediately connecting again)' , async ( t ) => {
376
411
const manager = createManager ( 'seed' , t )
377
412
await manager . setDeviceInfo ( { name : 'manager' , deviceType : 'mobile' } )
0 commit comments