Skip to content

Commit f6af265

Browse files
committed
implement test
1 parent 67170bf commit f6af265

File tree

1 file changed

+32
-9
lines changed
  • services/galley/test/integration

1 file changed

+32
-9
lines changed

services/galley/test/integration/API.hs

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3444,13 +3444,23 @@ putReceiptModeOk = do
34443444
assertEqual "modes should match" mode 0
34453445
_ -> assertFailure "Unexpected event data"
34463446

3447+
-- | Test setup
3448+
-- A (local) - alice: admin on remote conversation, adam: regular member of remote conversation
3449+
-- B (mocked) - owns the conversation
3450+
--
3451+
-- The federator on A is also mocked.
3452+
--
3453+
-- alice changes receipt remote via client api
3454+
-- assertion: A's federator is called correctly
3455+
-- assertion: backend A generates events for adam (and alice)
3456+
-- and federator's response
34473457
putRemoteReceiptModeOk :: TestM ()
34483458
putRemoteReceiptModeOk = do
34493459
c <- view tsCannon
34503460
qalice <- randomQualifiedUser
34513461
let alice = qUnqualified qalice
34523462

3453-
-- create a remote conversation with alice as admin
3463+
-- create a remote conversation at bob with alice as admin
34543464
let remoteDomain = Domain "bobland.example.com"
34553465
qbob <- Qualified <$> randomId <*> pure remoteDomain
34563466
qconv <- Qualified <$> randomId <*> pure remoteDomain
@@ -3468,7 +3478,7 @@ putRemoteReceiptModeOk = do
34683478
}
34693479
runFedClient @"on-conversation-updated" fedGalleyClient remoteDomain cuAddAlice
34703480

3471-
-- add another users from this backend
3481+
-- add another user adam as member
34723482
qadam <- randomQualifiedUser
34733483
let adam = qUnqualified qadam
34743484
connectWithRemoteUser adam qbob
@@ -3495,13 +3505,26 @@ putRemoteReceiptModeOk = do
34953505
SomeConversationAction (sing @'ConversationReceiptModeUpdateTag) action
34963506
}
34973507
let mockResponse = const (ConversationUpdateResponseUpdate responseConvUpdate)
3498-
(res, federatedRequests) <- withTempMockFederator mockResponse $ do
3499-
putQualifiedReceiptMode alice qconv newReceiptMode
3500-
<!! const 200 === statusCode
3501-
-- check event in res
3502-
-- assert federatedRequest
3503-
-- assert adam gets event
3504-
pure ()
3508+
3509+
WS.bracketR c adam $ \wsAdam -> do
3510+
(res, federatedRequests) <- withTempMockFederator mockResponse $ do
3511+
putQualifiedReceiptMode alice qconv newReceiptMode
3512+
<!! const 200 === statusCode
3513+
3514+
let event :: Event = responseJsonUnsafe res
3515+
let (EdConvReceiptModeUpdate (ConversationReceiptModeUpdate receiptModeEvent)) = evtData event
3516+
3517+
liftIO $ assertEqual "Unexcepected receipt mode in event" newReceiptMode receiptModeEvent
3518+
3519+
cFedReq <- assertOne $ filter (\r -> frTargetDomain r == remoteDomain && frRPC r == "update-conversation") federatedRequests
3520+
cFedReqBody <- assertRight $ parseFedRequest cFedReq
3521+
liftIO $ do
3522+
curUser cFedReqBody @?= alice
3523+
curConvId cFedReqBody @?= qUnqualified qconv
3524+
curAction cFedReqBody @?= SomeConversationAction (sing @'ConversationReceiptModeUpdateTag) action
3525+
3526+
WS.assertMatch_ (5 # Second) wsAdam $ \n -> do
3527+
liftIO $ wsAssertConvReceiptModeUpdate qconv qadam newReceiptMode n
35053528

35063529
putReceiptModeWithRemotesOk :: TestM ()
35073530
putReceiptModeWithRemotesOk = do

0 commit comments

Comments
 (0)