integration-0.1.0
Safe HaskellNone
LanguageGHC2021

Test.Meetings

Synopsis

Documentation

getMeetingIdAndDomain :: HasCallStack => Value -> App (String, String) Source #

Helper to extract meetingId and domain from a meeting JSON object

assertConversationMatchesLegacy :: HasCallStack => Value -> App () Source #

On create/update responses, the full conversation object is returned alongside the legacy qualified_conversation field. This asserts that both refer to the same conversation.

assertMeetingNotif :: (HasCallStack, MakesValue notif, MakesValue qid) => notif -> qid -> App () Source #

Assert a meeting lifecycle notification carries the meeting's qualified id flat at payload.0.qualified_id and has NO "data" wrapper (proves the no-nesting contract).

defaultMeetingJson :: String -> UTCTime -> UTCTime -> [String] -> Value Source #

Helper to create a default new meeting JSON object

testMeetingsReadsWhenDisabled :: HasCallStack => App () Source #

Read endpoints (GET meetingslist, GET meetings{domain}/{id}) treat a team with the meetings feature disabled as "no meetings" (list -> 200 [], get -> 404 meeting-not-found) instead of 403 invalid-op, while write endpoints (POST /meetings) keep the hard gate and still return 403 invalid-op. See WPB-27329.

testMeetingLifecycleEventsDeliveredToMembers :: HasCallStack => App () Source #

WPB-27907: meeting lifecycle events are delivered to all conversation members; only the originating client connection is excluded (no redundant echo), while the initiator's other client connections and all other members receive them. This test covers the non-initiator member path: a member who joined the meeting conversation after creation receives 'meeting.update' and 'meeting.delete'. The originating-client-connection exclusion is covered in testMeetingOriginatingConnectionExcluded; the multi-member recipient set is covered at the unit level in Wire.MeetingsSubsystem.InterpreterSpec.

waitForCleanupJob :: (HasCallStack, MakesValue domain) => domain -> App () Source #