Skip to content

Commit 5f179b5

Browse files
committed
Add test case
1 parent 4173716 commit 5f179b5

File tree

2 files changed

+24
-15
lines changed

2 files changed

+24
-15
lines changed

services/galley/test/integration/API.hs

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3200,17 +3200,19 @@ removeUser = do
32003200
let [alice', alexDel', amy'] = qUnqualified <$> [alice, alexDel, amy]
32013201
let bDomain = Domain "b.example.com"
32023202
bart <- randomQualifiedId bDomain
3203+
berta <- randomQualifiedId bDomain
32033204
let cDomain = Domain "c.example.com"
32043205
carl <- randomQualifiedId cDomain
32053206

32063207
connectUsers alice' (list1 alexDel' [amy'])
32073208
connectWithRemoteUser alice' bart
3209+
connectWithRemoteUser alice' berta
32083210
connectWithRemoteUser alexDel' bart
32093211
connectWithRemoteUser alice' carl
32103212
connectWithRemoteUser alexDel' carl
32113213

32123214
convA1 <- decodeConvId <$> postConv alice' [alexDel'] (Just "gossip") [] Nothing Nothing
3213-
convA2 <- decodeConvId <$> postConv alice' [alexDel', amy'] (Just "gossip2") [] Nothing Nothing
3215+
convA2 <- decodeConvId <$> postConvWithRemoteUsers alice' defNewConv {newConvQualifiedUsers = [alexDel, amy, berta]}
32143216
convA3 <- decodeConvId <$> postConv alice' [amy'] (Just "gossip3") [] Nothing Nothing
32153217
convA4 <- decodeConvId <$> postConvWithRemoteUsers alice' defNewConv {newConvQualifiedUsers = [alexDel, bart, carl]}
32163218
convB1 <- randomId -- a remote conversation at 'bDomain' that Alice, AlexDel and Bart will be in
@@ -3253,18 +3255,18 @@ removeUser = do
32533255
deleteUser alexDel' !!! const 200 === statusCode
32543256

32553257
liftIO $ do
3256-
assertEqual ("expect exactly 4 federated requests in : " <> show fedRequests) 4 (length fedRequests)
3258+
assertEqual ("expect exactly 5 federated requests in : " <> show fedRequests) 5 (length fedRequests)
32573259

32583260
liftIO $ do
3259-
bReq <- assertOne $ filter (\req -> F.domain req == domainText bDomain && fmap F.path (F.request req) == Just "/federation/on-user-deleted/conversations") fedRequests
3261+
bReq <- assertOne $ filter (matchFedRequest bDomain "/federation/on-user-deleted/conversations") fedRequests
32603262
fmap F.component (F.request bReq) @?= Just F.Galley
32613263
fmap F.path (F.request bReq) @?= Just "/federation/on-user-deleted/conversations"
32623264
Just (Right udcnB) <- pure $ fmap (eitherDecode . LBS.fromStrict . F.body) (F.request bReq)
32633265
sort (fromRange (FederatedGalley.udcnConversations udcnB)) @?= sort [convB1, convB2]
32643266
FederatedGalley.udcnUser udcnB @?= qUnqualified alexDel
32653267

32663268
liftIO $ do
3267-
cReq <- assertOne $ filter (\req -> F.domain req == domainText cDomain && fmap F.path (F.request req) == Just "/federation/on-user-deleted/conversations") fedRequests
3269+
cReq <- assertOne $ filter (matchFedRequest cDomain "/federation/on-user-deleted/conversations") fedRequests
32683270
fmap F.component (F.request cReq) @?= Just F.Galley
32693271
fmap F.path (F.request cReq) @?= Just "/federation/on-user-deleted/conversations"
32703272
Just (Right udcnC) <- pure $ fmap (eitherDecode . LBS.fromStrict . F.body) (F.request cReq)
@@ -3278,19 +3280,21 @@ removeUser = do
32783280
wsAssertMembersLeave qconvA2 alexDel [alexDel]
32793281

32803282
liftIO $ do
3281-
bLeaveReq <- assertOne $ filter (\req -> F.domain req == domainText bDomain && fmap F.path (F.request req) == Just "/federation/on-conversation-updated") fedRequests
3282-
fmap F.component (F.request bLeaveReq) @?= Just F.Galley
3283-
fmap F.path (F.request bLeaveReq) @?= Just "/federation/on-conversation-updated"
3284-
Just (Right convUpdate) <- pure $ fmap (eitherDecode . LBS.fromStrict . F.body) (F.request bLeaveReq)
3285-
cuConvId convUpdate @?= convA4
3286-
cuAction convUpdate @?= ConversationActionRemoveMembers (pure alexDel)
3287-
cuAlreadyPresentUsers convUpdate @?= [qUnqualified bart]
3283+
let bConvUpdateRPCs = filter (matchFedRequest bDomain "/federation/on-conversation-updated") fedRequests
3284+
bConvUpdatesEither :: [Either String ConversationUpdate] <- eitherDecode . LBS.fromStrict . F.body <$$> mapM (assertJust . F.request) bConvUpdateRPCs
3285+
bConvUpdates <- mapM assertRight bConvUpdatesEither
3286+
3287+
bConvUpdatesA2 <- assertOne $ filter (\cu -> cuConvId cu == convA2) bConvUpdates
3288+
cuAction bConvUpdatesA2 @?= ConversationActionRemoveMembers (pure alexDel)
3289+
cuAlreadyPresentUsers bConvUpdatesA2 @?= [qUnqualified berta]
3290+
3291+
bConvUpdatesA4 <- assertOne $ filter (\cu -> cuConvId cu == convA4) bConvUpdates
3292+
cuAction bConvUpdatesA4 @?= ConversationActionRemoveMembers (pure alexDel)
3293+
cuAlreadyPresentUsers bConvUpdatesA4 @?= [qUnqualified bart]
32883294

32893295
liftIO $ do
3290-
cLeaveReq <- assertOne $ filter (\req -> F.domain req == domainText cDomain && fmap F.path (F.request req) == Just "/federation/on-conversation-updated") fedRequests
3291-
fmap F.component (F.request cLeaveReq) @?= Just F.Galley
3292-
fmap F.path (F.request cLeaveReq) @?= Just "/federation/on-conversation-updated"
3293-
Just (Right convUpdate) <- pure $ fmap (eitherDecode . LBS.fromStrict . F.body) (F.request cLeaveReq)
3296+
cConvUpdateRPC <- assertOne $ filter (matchFedRequest cDomain "/federation/on-conversation-updated") fedRequests
3297+
Just (Right convUpdate) <- pure $ fmap (eitherDecode . LBS.fromStrict . F.body) (F.request cConvUpdateRPC)
32943298
cuConvId convUpdate @?= convA4
32953299
cuAction convUpdate @?= ConversationActionRemoveMembers (pure alexDel)
32963300
cuAlreadyPresentUsers convUpdate @?= [qUnqualified carl]

services/galley/test/integration/API/Util.hs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2512,3 +2512,8 @@ generateRemoteAndConvIdWithDomain remoteDomain shouldBeLocal lUserId = do
25122512
if shouldBeLocal == isLocal
25132513
then pure (qTagUnsafe other, convId)
25142514
else generateRemoteAndConvIdWithDomain remoteDomain shouldBeLocal lUserId
2515+
2516+
matchFedRequest :: Domain -> ByteString -> FederatedRequest -> Bool
2517+
matchFedRequest domain reqpath req =
2518+
F.domain req == domainText domain
2519+
&& fmap F.path (F.request req) == Just reqpath

0 commit comments

Comments
 (0)