From 0c3ef6ef4a231a462d68f1d985dc335f44d225e7 Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Thu, 3 Jun 2021 17:52:11 +0200 Subject: [PATCH 1/3] Servantify JSON endpoint to send messages (#1532) Also: - Add combinator for `Data.Set.Set` in schema-profunctor - Add `ToSchema` instance for `Integer` - Add tests to verify comma separated list in ignore_missing and report_missing query params - Document the precedence of various ways to ignore missing clients --- libs/schema-profunctor/package.yaml | 1 + .../schema-profunctor/schema-profunctor.cabal | 3 +- libs/schema-profunctor/src/Data/Schema.hs | 21 ++- libs/wire-api/src/Wire/API/Message.hs | 124 ++++++++++-------- .../src/Wire/API/Routes/Public/Galley.hs | 52 +++++++- libs/wire-api/src/Wire/API/User/Client.hs | 35 ++--- .../Golden/Generated/ClientMismatch_user.hs | 41 +++--- services/galley/src/Galley/API/Public.hs | 42 +----- services/galley/src/Galley/API/Update.hs | 43 +++--- services/galley/test/integration/API.hs | 66 ++++++---- .../test/integration/API/Teams/LegalHold.hs | 2 +- 11 files changed, 239 insertions(+), 191 deletions(-) diff --git a/libs/schema-profunctor/package.yaml b/libs/schema-profunctor/package.yaml index 9057e4041da..4e96e552574 100644 --- a/libs/schema-profunctor/package.yaml +++ b/libs/schema-profunctor/package.yaml @@ -23,6 +23,7 @@ library: - text - transformers - vector + - containers tests: schemas-tests: main: Main.hs diff --git a/libs/schema-profunctor/schema-profunctor.cabal b/libs/schema-profunctor/schema-profunctor.cabal index b698c6bc054..16d81386c32 100644 --- a/libs/schema-profunctor/schema-profunctor.cabal +++ b/libs/schema-profunctor/schema-profunctor.cabal @@ -4,7 +4,7 @@ cabal-version: 1.12 -- -- see: https://github.com/sol/hpack -- --- hash: 11ed18fc8f6fc6cc51f29a022f7695bc086b893b80a35ed8beb5f0840d1d8b45 +-- hash: f1d1bde721143e6e1f8346c434abffcc73f4d5c58eb40d463f337805bbfff766 name: schema-profunctor version: 0.1.0 @@ -31,6 +31,7 @@ library , base >=4 && <5 , bifunctors , comonad + , containers , imports , lens , profunctors diff --git a/libs/schema-profunctor/src/Data/Schema.hs b/libs/schema-profunctor/src/Data/Schema.hs index da35c34b751..10466cb5520 100644 --- a/libs/schema-profunctor/src/Data/Schema.hs +++ b/libs/schema-profunctor/src/Data/Schema.hs @@ -47,6 +47,7 @@ module Data.Schema fieldWithDocModifier, fieldOver, array, + set, nonEmptyArray, map_, enum, @@ -72,7 +73,8 @@ where import Control.Applicative import Control.Comonad -import Control.Lens hiding (element, enum, (.=)) +import Control.Lens hiding (element, enum, set, (.=)) +import qualified Control.Lens as Lens import Control.Monad.Trans.Cont import qualified Data.Aeson.Types as A import Data.Bifunctor.Joker @@ -81,6 +83,7 @@ import qualified Data.List.NonEmpty as NonEmpty import Data.Monoid hiding (Product) import Data.Profunctor (Star (..)) import Data.Proxy (Proxy (..)) +import qualified Data.Set as Set import qualified Data.Swagger as S import qualified Data.Swagger.Declare as S import qualified Data.Text as T @@ -232,7 +235,7 @@ instance Choice (SchemaP doc v v') where right' (SchemaP d i o) = SchemaP (right' d) (right' i) (right' o) instance HasDoc (SchemaP doc v v' a b) (SchemaP doc' v v' a b) doc doc' where - doc = lens schemaDoc $ \(SchemaP d i o) d' -> SchemaP (set doc d' d) i o + doc = lens schemaDoc $ \(SchemaP d i o) d' -> SchemaP (Lens.set doc d' d) i o withParser :: SchemaP doc v w a b -> (b -> A.Parser b') -> SchemaP doc v w a b' withParser (SchemaP (SchemaDoc d) (SchemaIn p) (SchemaOut o)) q = @@ -367,6 +370,18 @@ array sch = SchemaP (SchemaDoc s) (SchemaIn r) (SchemaOut w) s = mkArray (schemaDoc sch) w x = A.Array . V.fromList <$> mapM (schemaOut sch) x +set :: + (HasArray ndoc doc, HasName ndoc, Ord a) => + ValueSchema ndoc a -> + ValueSchema doc (Set a) +set sch = SchemaP (SchemaDoc s) (SchemaIn r) (SchemaOut w) + where + name = maybe "set" ("set of " <>) (getName (schemaDoc sch)) + r = A.withArray (T.unpack name) $ \arr -> + fmap Set.fromList . mapM (schemaIn sch) $ V.toList arr + s = mkArray (schemaDoc sch) + w x = A.Array . V.fromList <$> mapM (schemaOut sch) (Set.toList x) + nonEmptyArray :: (HasArray ndoc doc, HasName ndoc, HasMinItems doc (Maybe Integer)) => ValueSchema ndoc a -> @@ -706,6 +721,8 @@ instance ToSchema Int32 where schema = genericToSchema instance ToSchema Int64 where schema = genericToSchema +instance ToSchema Integer where schema = genericToSchema + instance ToSchema Word where schema = genericToSchema instance ToSchema Word8 where schema = genericToSchema diff --git a/libs/wire-api/src/Wire/API/Message.hs b/libs/wire-api/src/Wire/API/Message.hs index 73b9b907da6..5e33b5c89cb 100644 --- a/libs/wire-api/src/Wire/API/Message.hs +++ b/libs/wire-api/src/Wire/API/Message.hs @@ -33,6 +33,8 @@ module Wire.API.Message OtrFilterMissing (..), ClientMismatch (..), UserClients (..), + ReportMissing (..), + IgnoreMissing (..), -- * Swagger modelNewOtrMessage, @@ -42,12 +44,17 @@ module Wire.API.Message ) where -import Data.Aeson +import Control.Lens ((?~)) +import qualified Data.Aeson as A +import Data.CommaSeparatedList (CommaSeparatedList (fromCommaSeparatedList)) import Data.Id import Data.Json.Util +import Data.Schema +import qualified Data.Set as Set +import qualified Data.Swagger as S import qualified Data.Swagger.Build.Api as Doc -import Data.Time import Imports +import Servant (FromHttpApiData (..)) import Wire.API.Arbitrary (Arbitrary (..), GenericUniform (..)) import Wire.API.User.Client (UserClientMap (..), UserClients (..), modelOtrClientMap, modelUserClients) @@ -69,6 +76,7 @@ data NewOtrMessage = NewOtrMessage } deriving stock (Eq, Show, Generic) deriving (Arbitrary) via (GenericUniform NewOtrMessage) + deriving (A.ToJSON, A.FromJSON, S.ToSchema) via (Schema NewOtrMessage) modelNewOtrMessage :: Doc.Model modelNewOtrMessage = Doc.defineModel "NewOtrMessage" $ do @@ -95,28 +103,17 @@ modelNewOtrMessage = Doc.defineModel "NewOtrMessage" $ do Doc.description "List of user IDs" Doc.optional -instance ToJSON NewOtrMessage where - toJSON otr = - object $ - "sender" .= newOtrSender otr - # "recipients" .= newOtrRecipients otr - # "native_push" .= newOtrNativePush otr - # "transient" .= newOtrTransient otr - # "native_priority" .= newOtrNativePriority otr - # "data" .= newOtrData otr - # "report_missing" .= newOtrReportMissing otr - # [] - -instance FromJSON NewOtrMessage where - parseJSON = withObject "new-otr-message" $ \o -> - NewOtrMessage - <$> o .: "sender" - <*> o .: "recipients" - <*> o .:? "native_push" .!= True - <*> o .:? "transient" .!= False - <*> o .:? "native_priority" - <*> o .:? "data" - <*> o .:? "report_missing" +instance ToSchema NewOtrMessage where + schema = + object "new-otr-message" $ + NewOtrMessage + <$> newOtrSender .= field "sender" schema + <*> newOtrRecipients .= field "recipients" schema + <*> newOtrNativePush .= (field "native_push" schema <|> pure True) + <*> newOtrTransient .= (field "transient" schema <|> pure False) + <*> newOtrNativePriority .= opt (field "native_priority" schema) + <*> newOtrData .= opt (field "data" schema) + <*> newOtrReportMissing .= opt (field "report_missing" (array schema)) -------------------------------------------------------------------------------- -- Priority @@ -134,6 +131,7 @@ instance FromJSON NewOtrMessage where data Priority = LowPriority | HighPriority deriving stock (Eq, Show, Ord, Enum, Generic) deriving (Arbitrary) via (GenericUniform Priority) + deriving (A.ToJSON, A.FromJSON, S.ToSchema) via Schema Priority typePriority :: Doc.DataType typePriority = @@ -143,15 +141,13 @@ typePriority = "high" ] -instance ToJSON Priority where - toJSON LowPriority = String "low" - toJSON HighPriority = String "high" - -instance FromJSON Priority where - parseJSON = withText "Priority" $ \case - "low" -> pure LowPriority - "high" -> pure HighPriority - x -> fail $ "Invalid push priority: " ++ show x +instance ToSchema Priority where + schema = + enum @Text "Priority" $ + mconcat + [ element "low" LowPriority, + element "high" HighPriority + ] -------------------------------------------------------------------------------- -- Recipients @@ -161,7 +157,7 @@ newtype OtrRecipients = OtrRecipients { otrRecipientsMap :: UserClientMap Text } deriving stock (Eq, Show) - deriving newtype (ToJSON, FromJSON, Semigroup, Monoid, Arbitrary) + deriving newtype (ToSchema, A.ToJSON, A.FromJSON, Semigroup, Monoid, Arbitrary) -- FUTUREWORK: Remove when 'NewOtrMessage' has ToSchema modelOtrRecipients :: Doc.Model @@ -190,7 +186,7 @@ data OtrFilterMissing deriving (Arbitrary) via (GenericUniform OtrFilterMissing) data ClientMismatch = ClientMismatch - { cmismatchTime :: UTCTime, + { cmismatchTime :: UTCTimeMillis, -- | Clients that the message /should/ have been encrypted for, but wasn't. missingClients :: UserClients, -- | Clients that the message /should not/ have been encrypted for, but was. @@ -198,13 +194,12 @@ data ClientMismatch = ClientMismatch deletedClients :: UserClients } deriving stock (Eq, Show, Generic) + deriving (A.ToJSON, A.FromJSON, S.ToSchema) via Schema ClientMismatch instance Arbitrary ClientMismatch where arbitrary = ClientMismatch - <$> (milli <$> arbitrary) <*> arbitrary <*> arbitrary <*> arbitrary - where - milli = fromUTCTimeMillis . toUTCTimeMillis + <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary modelClientMismatch :: Doc.Model modelClientMismatch = Doc.defineModel "ClientMismatch" $ do @@ -218,19 +213,40 @@ modelClientMismatch = Doc.defineModel "ClientMismatch" $ do Doc.property "deleted" (Doc.ref modelUserClients) $ Doc.description "Map of deleted clients per user." -instance ToJSON ClientMismatch where - toJSON m = - object - [ "time" .= toUTCTimeMillis (cmismatchTime m), - "missing" .= missingClients m, - "redundant" .= redundantClients m, - "deleted" .= deletedClients m - ] - -instance FromJSON ClientMismatch where - parseJSON = withObject "ClientMismatch" $ \o -> - ClientMismatch - <$> o .: "time" - <*> o .: "missing" - <*> o .: "redundant" - <*> o .: "deleted" +instance ToSchema ClientMismatch where + schema = + object "ClientMismatch" $ + ClientMismatch + <$> cmismatchTime .= field "time" schema + <*> missingClients .= field "missing" schema + <*> redundantClients .= field "redundant" schema + <*> deletedClients .= field "deleted" schema + +-- QueryParams + +data IgnoreMissing + = IgnoreMissingAll + | IgnoreMissingList (Set UserId) + deriving (Show, Eq) + +instance S.ToParamSchema IgnoreMissing where + toParamSchema _ = mempty & S.type_ ?~ S.SwaggerString + +instance FromHttpApiData IgnoreMissing where + parseQueryParam = \case + "true" -> Right IgnoreMissingAll + "false" -> Right $ IgnoreMissingList mempty + list -> IgnoreMissingList . Set.fromList . fromCommaSeparatedList <$> parseQueryParam list + +data ReportMissing + = ReportMissingAll + | ReportMissingList (Set UserId) + +instance S.ToParamSchema ReportMissing where + toParamSchema _ = mempty & S.type_ ?~ S.SwaggerString + +instance FromHttpApiData ReportMissing where + parseQueryParam = \case + "true" -> Right ReportMissingAll + "false" -> Right $ ReportMissingList mempty + list -> ReportMissingList . Set.fromList . fromCommaSeparatedList <$> parseQueryParam list diff --git a/libs/wire-api/src/Wire/API/Routes/Public/Galley.hs b/libs/wire-api/src/Wire/API/Routes/Public/Galley.hs index 6fba2d295fc..57c996d1073 100644 --- a/libs/wire-api/src/Wire/API/Routes/Public/Galley.hs +++ b/libs/wire-api/src/Wire/API/Routes/Public/Galley.hs @@ -24,7 +24,7 @@ import Data.CommaSeparatedList import Data.Domain import Data.Id (ConvId, TeamId) import Data.Range -import Data.Swagger +import qualified Data.Swagger as Swagger import Imports hiding (head) import Servant hiding (Handler, JSON, addHeader, contentType, respond) import qualified Servant @@ -34,7 +34,7 @@ import Servant.Swagger.Internal.Orphans () import qualified Wire.API.Conversation as Public import qualified Wire.API.Conversation.Role as Public import qualified Wire.API.Event.Conversation as Public -import qualified Wire.API.Event.Team as Public () +import qualified Wire.API.Message as Public import Wire.API.Routes.Public (EmptyResult, ZConn, ZUser) import qualified Wire.API.Team.Conversation as Public @@ -48,9 +48,14 @@ type UpdateResponses = NoContent ] +type PostOtrResponses = + '[ WithStatus 201 Public.ClientMismatch, + WithStatus 412 Public.ClientMismatch + ] + -- FUTUREWORK: Make a PR to the servant-swagger package with this instance -instance ToSchema Servant.NoContent where - declareNamedSchema _ = declareNamedSchema (Proxy @()) +instance Swagger.ToSchema Servant.NoContent where + declareNamedSchema _ = Swagger.declareNamedSchema (Proxy @()) data Api routes = Api { -- Conversations @@ -213,11 +218,46 @@ data Api routes = Api :> Capture "tid" TeamId :> "conversations" :> Capture "cid" ConvId - :> Delete '[] (EmptyResult 200) + :> Delete '[] (EmptyResult 200), + postOtrMessage :: + routes + :- Summary "Post an encrypted message to a conversation (accepts JSON)" + :> Description PostOtrDescription + :> ZUser + :> ZConn + :> "conversations" + :> Capture "cnv" ConvId + :> QueryParam "ignore_missing" Public.IgnoreMissing + :> QueryParam "report_missing" Public.ReportMissing + :> "otr" + :> "messages" + :> ReqBody '[Servant.JSON] Public.NewOtrMessage + :> UVerb 'POST '[Servant.JSON] PostOtrResponses } deriving (Generic) type ServantAPI = ToServantApi Api -swaggerDoc :: Swagger +type PostOtrDescription = + "This endpoint ensures that the list of clients is correct and only sends the message if the list is correct.\n\ + \To override this, the endpoint accepts two query params:\n\ + \- `ignore_missing`: Can be 'true' 'false' or a comma separated list of user IDs.\n\ + \ - When 'true' all missing clients are ignored.\n\ + \ - When 'false' all missing clients are reported.\n\ + \ - When comma separated list of user-ids, only clients for listed users are ignored.\n\ + \- `report_missing`: Can be 'true' 'false' or a comma separated list of user IDs.\n\ + \ - When 'true' all missing clients are reported.\n\ + \ - When 'false' all missing clients are ignored.\n\ + \ - When comma separated list of user-ids, only clients for listed users are reported.\n\ + \\n\ + \Apart from these, the request body also accepts `report_missing` which can only be a list of user ids and behaves the same way as the query parameter.\n\ + \\n\ + \All three of these should be considered mutually exclusive. The server however does not error if more than one is specified, it reads them in this order of precedence:\n\ + \- `report_missing` in the request body has highest precedence.\n\ + \- `ignore_missing` in the query param is the next.\n\ + \- `report_missing` in the query param has the lowest precedence.\n\ + \\n\ + \This endpoint can lead to OtrMessageAdd event being sent to the recipients." + +swaggerDoc :: Swagger.Swagger swaggerDoc = toSwagger (Proxy @ServantAPI) diff --git a/libs/wire-api/src/Wire/API/User/Client.hs b/libs/wire-api/src/Wire/API/User/Client.hs index 174786149da..c887ed8dd47 100644 --- a/libs/wire-api/src/Wire/API/User/Client.hs +++ b/libs/wire-api/src/Wire/API/User/Client.hs @@ -328,24 +328,24 @@ instance Arbitrary UserClientsFull where userClientsFullToUserClients :: UserClientsFull -> UserClients userClientsFullToUserClients (UserClientsFull mp) = UserClients $ Set.map clientId <$> mp --- TODO: check if example generated by swagger look okay (probably not) newtype UserClients = UserClients { userClients :: Map UserId (Set ClientId) } deriving stock (Eq, Show, Generic) deriving newtype (Semigroup, Monoid) + deriving (ToJSON, FromJSON, Swagger.ToSchema) via Schema UserClients mkUserClients :: [(UserId, [ClientId])] -> UserClients mkUserClients xs = UserClients $ Map.fromList (xs <&> second Set.fromList) -instance Swagger.ToSchema UserClients where - declareNamedSchema _ = do - mapSch <- Swagger.declareSchema (Proxy @(Map UserId (Set ClientId))) - return $ - Swagger.NamedSchema (Just "UserClients") $ - mapSch - & Swagger.description ?~ "Map of user id to list of client ids." - & Swagger.example +instance ToSchema UserClients where + schema = + addDoc . named "UserClients" $ UserClients <$> userClients .= map_ (set schema) + where + addDoc sch = + sch + & Swagger.schema . Swagger.description ?~ "Map of user id to list of client ids." + & Swagger.schema . Swagger.example ?~ toJSON ( Map.fromList [ (generateExample @UserId, [newClientId 1684636986166846496, newClientId 4940483633899001999]), @@ -353,27 +353,14 @@ instance Swagger.ToSchema UserClients where ] ) --- FUTUREWORK: Remove when 'NewOtrMessage' has ToSchema +-- FUTUREWORK: Remove when proto endpoint for sending messages is moved to +-- servant modelUserClients :: Doc.Model modelUserClients = Doc.defineModel "UserClients" $ Doc.property "" (Doc.unique $ Doc.array Doc.bytes') $ Doc.description "Map of user IDs to sets of client IDs ({ UserId: [ClientId] })." -instance ToJSON UserClients where - toJSON = - toJSON . Map.foldrWithKey' fn Map.empty . userClients - where - fn u c m = - let k = Text.E.decodeLatin1 (toASCIIBytes (toUUID u)) - in Map.insert k c m - -instance FromJSON UserClients where - parseJSON = - A.withObject "UserClients" (fmap UserClients . foldrM fn Map.empty . HashMap.toList) - where - fn (k, v) m = Map.insert <$> parseJSON (A.String k) <*> parseJSON v <*> pure m - instance Arbitrary UserClients where arbitrary = UserClients <$> mapOf' arbitrary (setOf' arbitrary) diff --git a/libs/wire-api/test/unit/Test/Wire/API/Golden/Generated/ClientMismatch_user.hs b/libs/wire-api/test/unit/Test/Wire/API/Golden/Generated/ClientMismatch_user.hs index 0a7e13ff632..8e6c984842e 100644 --- a/libs/wire-api/test/unit/Test/Wire/API/Golden/Generated/ClientMismatch_user.hs +++ b/libs/wire-api/test/unit/Test/Wire/API/Golden/Generated/ClientMismatch_user.hs @@ -19,6 +19,7 @@ module Test.Wire.API.Golden.Generated.ClientMismatch_user where import Data.Id (ClientId (ClientId, client), Id (Id)) +import Data.Json.Util (toUTCTimeMillis) import qualified Data.UUID as UUID (fromString) import GHC.Exts (IsList (fromList)) import Imports (fromJust, read) @@ -27,7 +28,7 @@ import Wire.API.Message (ClientMismatch (ClientMismatch), UserClients (UserClien testObject_ClientMismatch_user_1 :: ClientMismatch testObject_ClientMismatch_user_1 = ( ClientMismatch - (read "1864-04-12 12:22:43.673 UTC") + (toUTCTimeMillis (read "1864-04-12 12:22:43.673 UTC")) ( UserClients { userClients = fromList @@ -88,7 +89,7 @@ testObject_ClientMismatch_user_1 = testObject_ClientMismatch_user_2 :: ClientMismatch testObject_ClientMismatch_user_2 = ( ClientMismatch - (read "1864-04-19 08:06:54.492 UTC") + (toUTCTimeMillis (read "1864-04-19 08:06:54.492 UTC")) ( UserClients { userClients = fromList @@ -151,7 +152,7 @@ testObject_ClientMismatch_user_2 = testObject_ClientMismatch_user_3 :: ClientMismatch testObject_ClientMismatch_user_3 = ( ClientMismatch - (read "1864-05-18 16:25:29.722 UTC") + (toUTCTimeMillis (read "1864-05-18 16:25:29.722 UTC")) ( UserClients { userClients = fromList @@ -211,7 +212,7 @@ testObject_ClientMismatch_user_3 = testObject_ClientMismatch_user_4 :: ClientMismatch testObject_ClientMismatch_user_4 = ( ClientMismatch - (read "1864-04-20 07:47:05.133 UTC") + (toUTCTimeMillis (read "1864-04-20 07:47:05.133 UTC")) ( UserClients { userClients = fromList @@ -249,7 +250,7 @@ testObject_ClientMismatch_user_4 = testObject_ClientMismatch_user_5 :: ClientMismatch testObject_ClientMismatch_user_5 = ( ClientMismatch - (read "1864-04-26 19:31:21.478 UTC") + (toUTCTimeMillis (read "1864-04-26 19:31:21.478 UTC")) ( UserClients { userClients = fromList @@ -339,7 +340,7 @@ testObject_ClientMismatch_user_5 = testObject_ClientMismatch_user_6 :: ClientMismatch testObject_ClientMismatch_user_6 = ( ClientMismatch - (read "1864-05-28 18:24:35.996 UTC") + (toUTCTimeMillis (read "1864-05-28 18:24:35.996 UTC")) ( UserClients { userClients = fromList @@ -363,7 +364,7 @@ testObject_ClientMismatch_user_6 = testObject_ClientMismatch_user_7 :: ClientMismatch testObject_ClientMismatch_user_7 = ( ClientMismatch - (read "1864-05-26 02:38:01.741 UTC") + (toUTCTimeMillis (read "1864-05-26 02:38:01.741 UTC")) (UserClients {userClients = fromList []}) ( UserClients { userClients = @@ -427,7 +428,7 @@ testObject_ClientMismatch_user_7 = testObject_ClientMismatch_user_8 :: ClientMismatch testObject_ClientMismatch_user_8 = ( ClientMismatch - (read "1864-04-11 13:11:44.951 UTC") + (toUTCTimeMillis (read "1864-04-11 13:11:44.951 UTC")) ( UserClients { userClients = fromList @@ -475,7 +476,7 @@ testObject_ClientMismatch_user_8 = testObject_ClientMismatch_user_9 :: ClientMismatch testObject_ClientMismatch_user_9 = ( ClientMismatch - (read "1864-04-20 09:37:09.767 UTC") + (toUTCTimeMillis (read "1864-04-20 09:37:09.767 UTC")) ( UserClients { userClients = fromList @@ -512,7 +513,7 @@ testObject_ClientMismatch_user_9 = testObject_ClientMismatch_user_10 :: ClientMismatch testObject_ClientMismatch_user_10 = ( ClientMismatch - (read "1864-06-08 05:23:30.672 UTC") + (toUTCTimeMillis (read "1864-06-08 05:23:30.672 UTC")) ( UserClients { userClients = fromList @@ -555,7 +556,7 @@ testObject_ClientMismatch_user_10 = testObject_ClientMismatch_user_11 :: ClientMismatch testObject_ClientMismatch_user_11 = ( ClientMismatch - (read "1864-04-14 22:55:33.894 UTC") + (toUTCTimeMillis (read "1864-04-14 22:55:33.894 UTC")) ( UserClients { userClients = fromList @@ -615,7 +616,7 @@ testObject_ClientMismatch_user_11 = testObject_ClientMismatch_user_12 :: ClientMismatch testObject_ClientMismatch_user_12 = ( ClientMismatch - (read "1864-05-08 01:07:14.883 UTC") + (toUTCTimeMillis (read "1864-05-08 01:07:14.883 UTC")) (UserClients {userClients = fromList []}) ( UserClients { userClients = @@ -669,7 +670,7 @@ testObject_ClientMismatch_user_12 = testObject_ClientMismatch_user_13 :: ClientMismatch testObject_ClientMismatch_user_13 = ( ClientMismatch - (read "1864-05-09 16:28:56.647 UTC") + (toUTCTimeMillis (read "1864-05-09 16:28:56.647 UTC")) ( UserClients { userClients = fromList @@ -747,7 +748,7 @@ testObject_ClientMismatch_user_13 = testObject_ClientMismatch_user_14 :: ClientMismatch testObject_ClientMismatch_user_14 = ( ClientMismatch - (read "1864-05-08 01:02:42.968 UTC") + (toUTCTimeMillis (read "1864-05-08 01:02:42.968 UTC")) ( UserClients { userClients = fromList @@ -799,7 +800,7 @@ testObject_ClientMismatch_user_14 = testObject_ClientMismatch_user_15 :: ClientMismatch testObject_ClientMismatch_user_15 = ( ClientMismatch - (read "1864-06-02 22:04:34.496 UTC") + (toUTCTimeMillis (read "1864-06-02 22:04:34.496 UTC")) ( UserClients { userClients = fromList @@ -850,7 +851,7 @@ testObject_ClientMismatch_user_15 = testObject_ClientMismatch_user_16 :: ClientMismatch testObject_ClientMismatch_user_16 = ( ClientMismatch - (read "1864-06-01 16:55:21.151 UTC") + (toUTCTimeMillis (read "1864-06-01 16:55:21.151 UTC")) ( UserClients { userClients = fromList @@ -910,7 +911,7 @@ testObject_ClientMismatch_user_16 = testObject_ClientMismatch_user_17 :: ClientMismatch testObject_ClientMismatch_user_17 = ( ClientMismatch - (read "1864-04-23 21:23:53.493 UTC") + (toUTCTimeMillis (read "1864-04-23 21:23:53.493 UTC")) ( UserClients { userClients = fromList @@ -965,7 +966,7 @@ testObject_ClientMismatch_user_17 = testObject_ClientMismatch_user_18 :: ClientMismatch testObject_ClientMismatch_user_18 = ( ClientMismatch - (read "1864-05-14 18:56:29.815 UTC") + (toUTCTimeMillis (read "1864-05-14 18:56:29.815 UTC")) ( UserClients { userClients = fromList @@ -1039,7 +1040,7 @@ testObject_ClientMismatch_user_18 = testObject_ClientMismatch_user_19 :: ClientMismatch testObject_ClientMismatch_user_19 = ( ClientMismatch - (read "1864-06-06 11:59:12.981 UTC") + (toUTCTimeMillis (read "1864-06-06 11:59:12.981 UTC")) ( UserClients { userClients = fromList @@ -1119,7 +1120,7 @@ testObject_ClientMismatch_user_19 = testObject_ClientMismatch_user_20 :: ClientMismatch testObject_ClientMismatch_user_20 = ( ClientMismatch - (read "1864-05-20 02:14:30.091 UTC") + (toUTCTimeMillis (read "1864-05-20 02:14:30.091 UTC")) ( UserClients { userClients = fromList diff --git a/services/galley/src/Galley/API/Public.hs b/services/galley/src/Galley/API/Public.hs index 574ddb1e2b7..7b6088b3e85 100644 --- a/services/galley/src/Galley/API/Public.hs +++ b/services/galley/src/Galley/API/Public.hs @@ -88,7 +88,8 @@ servantSitemap = GalleyAPI.getTeamConversationRoles = Teams.getTeamConversationRoles, GalleyAPI.getTeamConversations = Teams.getTeamConversations, GalleyAPI.getTeamConversation = Teams.getTeamConversation, - GalleyAPI.deleteTeamConversation = Teams.deleteTeamConversation + GalleyAPI.deleteTeamConversation = Teams.deleteTeamConversation, + GalleyAPI.postOtrMessage = Update.postOtrMessage } sitemap :: Routes ApiBuilder Galley () @@ -768,45 +769,6 @@ sitemap = do errorResponse Error.convNotFound errorResponse $ Error.invalidOp "Conversation type does not allow removing members" - -- This endpoint can lead to the following events being sent: - -- - OtrMessageAdd event to recipients - post "/conversations/:cnv/otr/messages" (continue Update.postOtrMessageH) $ - zauthUserId - .&. zauthConnId - .&. capture "cnv" - .&. def Public.OtrReportAllMissing filterMissing - .&. jsonRequest @Public.NewOtrMessage - document "POST" "postOtrMessage" $ do - summary "Post an encrypted message to a conversation (accepts JSON)" - parameter Path "cnv" bytes' $ - description "Conversation ID" - parameter Query "ignore_missing" bool' $ do - description - "Force message delivery even when clients are missing. \ - \NOTE: can also be a comma-separated list of user IDs, \ - \in which case it specifies who exactly is allowed to \ - \have missing clients." - optional - parameter Query "report_missing" bool' $ do - description - "Don't allow message delivery when clients are missing \ - \('ignore_missing' takes precedence when present). \ - \NOTE: can also be a comma-separated list of user IDs, \ - \in which case it specifies who exactly is forbidden from \ - \having missing clients. \ - \To support large lists of user IDs exceeding the allowed \ - \URL length, you can also put this list in the body, in \ - \the optional field 'report_missing'. That body field takes \ - \precedence over both query params." - optional - body (ref Public.modelNewOtrMessage) $ - description "JSON body" - returns (ref Public.modelClientMismatch) - response 201 "Message posted" end - response 412 "Missing clients" end - errorResponse Error.convNotFound - errorResponse Error.unknownClient - -- This endpoint can lead to the following events being sent: -- - OtrMessageAdd event to recipients post "/conversations/:cnv/otr/messages" (continue Update.postProtoOtrMessageH) $ diff --git a/services/galley/src/Galley/API/Update.hs b/services/galley/src/Galley/API/Update.hs index 89ac626cdc5..60ce1da31f4 100644 --- a/services/galley/src/Galley/API/Update.hs +++ b/services/galley/src/Galley/API/Update.hs @@ -43,7 +43,7 @@ module Galley.API.Update UpdateResponses, -- * Talking - postOtrMessageH, + postOtrMessage, postProtoOtrMessageH, postOtrBroadcastH, postProtoOtrBroadcastH, @@ -69,6 +69,7 @@ import Control.Monad.State import Data.ByteString.Conversion (toByteString') import Data.Code import Data.Id +import Data.Json.Util (toUTCTimeMillis) import Data.LegalHold (UserLegalHoldStatus (UserLegalHoldNoConsent), defUserLegalHoldStatus) import Data.List.Extra (nubOrdOn) import Data.List1 @@ -116,6 +117,7 @@ import qualified Wire.API.Event.Conversation as Public import qualified Wire.API.Message as Public import qualified Wire.API.Message.Proto as Proto import Wire.API.Routes.Public.Galley (UpdateResponses) +import qualified Wire.API.Routes.Public.Galley as GalleyAPI import Wire.API.Team.LegalHold (LegalholdProtectee (..)) import Wire.API.User (userTeam) import Wire.API.User.Client (UserClientsFull) @@ -590,16 +592,16 @@ data OtrResult = OtrSent !Public.ClientMismatch | OtrMissingRecipients !Public.ClientMismatch -handleOtrResult :: OtrResult -> Response +handleOtrResult :: OtrResult -> Galley Response handleOtrResult = \case - OtrSent m -> json m & setStatus status201 - OtrMissingRecipients m -> json m & setStatus status412 + OtrSent m -> pure $ json m & setStatus status201 + OtrMissingRecipients m -> pure $ json m & setStatus status412 postBotMessageH :: BotId ::: ConvId ::: Public.OtrFilterMissing ::: JsonRequest Public.NewOtrMessage ::: JSON -> Galley Response postBotMessageH (zbot ::: zcnv ::: val ::: req ::: _) = do message <- fromJsonBody req let val' = allowOtrFilterMissingInBody val message - handleOtrResult <$> postBotMessage zbot zcnv val' message + handleOtrResult =<< postBotMessage zbot zcnv val' message data LegalholdProtectee' = ProtectedUser' UserId @@ -622,29 +624,36 @@ postProtoOtrMessageH :: UserId ::: ConnId ::: ConvId ::: Public.OtrFilterMissing postProtoOtrMessageH (zusr ::: zcon ::: cnv ::: val ::: req ::: _) = do message <- Proto.toNewOtrMessage <$> fromProtoBody req let val' = allowOtrFilterMissingInBody val message - handleOtrResult <$> postOtrMessage zusr zcon cnv val' message + handleOtrResult =<< postNewOtrMessage (ProtectedUser' zusr) (Just zcon) cnv val' message -postOtrMessageH :: UserId ::: ConnId ::: ConvId ::: Public.OtrFilterMissing ::: JsonRequest Public.NewOtrMessage -> Galley Response -postOtrMessageH (zusr ::: zcon ::: cnv ::: val ::: req) = do - message <- fromJsonBody req - let val' = allowOtrFilterMissingInBody val message - handleOtrResult <$> postOtrMessage zusr zcon cnv val' message +postOtrMessage :: UserId -> ConnId -> ConvId -> Maybe Public.IgnoreMissing -> Maybe Public.ReportMissing -> Public.NewOtrMessage -> Galley (Union GalleyAPI.PostOtrResponses) +postOtrMessage zusr zcon cnv ignoreMissing reportMissing message = do + let queryParamIndication = resolveQueryMissingOptions ignoreMissing reportMissing + overallResovedMissingOptions = allowOtrFilterMissingInBody queryParamIndication message + translateToServant =<< postNewOtrMessage (ProtectedUser' zusr) (Just zcon) cnv overallResovedMissingOptions message + where + translateToServant :: OtrResult -> Galley (Union GalleyAPI.PostOtrResponses) + translateToServant (OtrSent mismatch) = Servant.respond (WithStatus @201 mismatch) + translateToServant (OtrMissingRecipients mismatch) = Servant.respond (WithStatus @412 mismatch) -postOtrMessage :: UserId -> ConnId -> ConvId -> Public.OtrFilterMissing -> Public.NewOtrMessage -> Galley OtrResult -postOtrMessage zusr zcon cnv val message = - postNewOtrMessage (ProtectedUser' zusr) (Just zcon) cnv val message + resolveQueryMissingOptions :: Maybe Public.IgnoreMissing -> Maybe Public.ReportMissing -> Public.OtrFilterMissing + resolveQueryMissingOptions Nothing Nothing = Public.OtrReportAllMissing + resolveQueryMissingOptions (Just Public.IgnoreMissingAll) _ = Public.OtrIgnoreAllMissing + resolveQueryMissingOptions (Just (Public.IgnoreMissingList uids)) _ = Public.OtrIgnoreMissing uids + resolveQueryMissingOptions Nothing (Just Public.ReportMissingAll) = Public.OtrReportAllMissing + resolveQueryMissingOptions Nothing (Just (Public.ReportMissingList uids)) = Public.OtrReportMissing uids postProtoOtrBroadcastH :: UserId ::: ConnId ::: Public.OtrFilterMissing ::: Request ::: JSON -> Galley Response postProtoOtrBroadcastH (zusr ::: zcon ::: val ::: req ::: _) = do message <- Proto.toNewOtrMessage <$> fromProtoBody req let val' = allowOtrFilterMissingInBody val message - handleOtrResult <$> postOtrBroadcast zusr zcon val' message + handleOtrResult =<< postOtrBroadcast zusr zcon val' message postOtrBroadcastH :: UserId ::: ConnId ::: Public.OtrFilterMissing ::: JsonRequest Public.NewOtrMessage -> Galley Response postOtrBroadcastH (zusr ::: zcon ::: val ::: req) = do message <- fromJsonBody req let val' = allowOtrFilterMissingInBody val message - handleOtrResult <$> postOtrBroadcast zusr zcon val' message + handleOtrResult =<< postOtrBroadcast zusr zcon val' message postOtrBroadcast :: UserId -> ConnId -> Public.OtrFilterMissing -> Public.NewOtrMessage -> Galley OtrResult postOtrBroadcast zusr zcon val message = @@ -1076,7 +1085,7 @@ checkOtrRecipients usr sid prs vms vcs val now mismatch :: ClientMismatch mismatch = ClientMismatch - { cmismatchTime = now, + { cmismatchTime = toUTCTimeMillis now, missingClients = UserClients (Clients.toMap missing), redundantClients = UserClients (Clients.toMap redundant), deletedClients = UserClients (Clients.toMap deleted) diff --git a/services/galley/test/integration/API.hs b/services/galley/test/integration/API.hs index dbde7ced624..12bd89083aa 100644 --- a/services/galley/test/integration/API.hs +++ b/services/galley/test/integration/API.hs @@ -38,6 +38,7 @@ import Brig.Types import qualified Control.Concurrent.Async as Async import Control.Lens (at, ix, preview, view, (.~), (?~), (^.)) import Data.Aeson hiding (json) +import qualified Data.ByteString as BS import Data.ByteString.Conversion import qualified Data.Code as Code import Data.Domain (Domain (Domain)) @@ -141,11 +142,11 @@ tests s = test s "conversation receipt mode update" putReceiptModeOk, test s "send typing indicators" postTypingIndicators, test s "leave connect conversation" leaveConnectConversation, - test s "post cryptomessage 1" postCryptoMessage1, - test s "post cryptomessage 2" postCryptoMessage2, - test s "post cryptomessage 3" postCryptoMessage3, - test s "post cryptomessage 4" postCryptoMessage4, - test s "post cryptomessage 5" postCryptoMessage5, + test s "post conversations/:cnv/otr/message: message delivery and missing clients" postCryptoMessage1, + test s "post conversations/:cnv/otr/message: mismatch and prekey fetching" postCryptoMessage2, + test s "post conversations/:cnv/otr/message: mismatch with protobuf" postCryptoMessage3, + test s "post conversations/:cnv/otr/message: unknown sender client" postCryptoMessage4, + test s "post conversations/:cnv/otr/message: ignore_missing and report_missing" postCryptoMessage5, test s "join conversation" postJoinConvOk, test s "join code-access conversation" postJoinCodeConvOk, test s "convert invite to code-access conversation" postConvertCodeConv, @@ -204,6 +205,8 @@ postConvOk = do EdConversation c' -> assertConvEquals cnv c' _ -> assertFailure "Unexpected event data" +-- | This test verifies whether a message actually gets sent all the way to +-- cannon. postCryptoMessage1 :: TestM () postCryptoMessage1 = do c <- view tsCannon @@ -287,6 +290,7 @@ postCryptoMessage1 = do liftIO $ assertBool "unexpected equal clients" (bc /= bc2) assertNoMsg wsB2 (wsAssertOtr conv alice ac bc cipher) +-- | This test verifies basic mismatch behaviour of the the JSON endpoint. postCryptoMessage2 :: TestM () postCryptoMessage2 = do b <- view tsBrig @@ -311,6 +315,7 @@ postCryptoMessage2 = do Map.keys (userClientMap (getUserClientPrekeyMap p)) @=? [eve] Map.keys <$> Map.lookup eve (userClientMap (getUserClientPrekeyMap p)) @=? Just [ec] +-- | This test verifies basic mismatch behaviour of the protobuf endpoint. postCryptoMessage3 :: TestM () postCryptoMessage3 = do b <- view tsBrig @@ -336,6 +341,8 @@ postCryptoMessage3 = do Map.keys (userClientMap (getUserClientPrekeyMap p)) @=? [eve] Map.keys <$> Map.lookup eve (userClientMap (getUserClientPrekeyMap p)) @=? Just [ec] +-- | This test verfies behaviour when an unknown client posts the message. Only +-- tests the Protobuf endpoint. postCryptoMessage4 :: TestM () postCryptoMessage4 = do alice <- randomUser @@ -349,56 +356,63 @@ postCryptoMessage4 = do postProtoOtrMessage alice (ClientId "172618352518396") conv m !!! const 403 === statusCode +-- | This test verifies behaviour under various values of ignore_missing and +-- report_missing. Only tests the JSON endpoint. postCryptoMessage5 :: TestM () postCryptoMessage5 = do (alice, ac) <- randomUserWithClient (someLastPrekeys !! 0) (bob, bc) <- randomUserWithClient (someLastPrekeys !! 1) - (eve, ec) <- randomUserWithClient (someLastPrekeys !! 2) - connectUsers alice (list1 bob [eve]) - conv <- decodeConvId <$> postConv alice [bob, eve] (Just "gossip") [] Nothing Nothing + (chad, cc) <- randomUserWithClient (someLastPrekeys !! 2) + (eve, ec) <- randomUserWithClient (someLastPrekeys !! 3) + connectUsers alice (list1 bob [chad, eve]) + conv <- decodeConvId <$> postConv alice [bob, chad, eve] (Just "gossip") [] Nothing Nothing -- Missing eve - let m = [(bob, bc, "hello bob")] + let msgMissingChadAndEve = [(bob, bc, "hello bob")] let m' = otrRecipients [(bob, [(bc, encodeCiphertext "hello bob")])] -- These three are equivalent (i.e. report all missing clients) - postOtrMessage id alice ac conv m + postOtrMessage id alice ac conv msgMissingChadAndEve !!! const 412 === statusCode - postOtrMessage (queryItem "ignore_missing" "false") alice ac conv m + postOtrMessage (queryItem "ignore_missing" "false") alice ac conv msgMissingChadAndEve !!! const 412 === statusCode - postOtrMessage (queryItem "report_missing" "true") alice ac conv m + postOtrMessage (queryItem "report_missing" "true") alice ac conv msgMissingChadAndEve !!! const 412 === statusCode -- These two are equivalent (i.e. ignore all missing clients) - postOtrMessage (queryItem "ignore_missing" "true") alice ac conv m + postOtrMessage (queryItem "ignore_missing" "true") alice ac conv msgMissingChadAndEve !!! const 201 === statusCode - postOtrMessage (queryItem "report_missing" "false") alice ac conv m + postOtrMessage (queryItem "report_missing" "false") alice ac conv msgMissingChadAndEve !!! const 201 === statusCode -- Report missing clients of a specific user only - postOtrMessage (queryItem "report_missing" (toByteString' bob)) alice ac conv m + postOtrMessage (queryItem "report_missing" (toByteString' bob)) alice ac conv msgMissingChadAndEve !!! const 201 === statusCode -- Let's make sure that the same logic using protobuf in the body works too postProtoOtrMessage' Nothing (queryItem "report_missing" (toByteString' bob)) alice ac conv m' !!! const 201 === statusCode -- Body takes precedence - postOtrMessage' (Just [bob]) (queryItem "report_missing" (toByteString' eve)) alice ac conv m + postOtrMessage' (Just [bob]) (queryItem "report_missing" (listToByteString [eve, chad])) alice ac conv msgMissingChadAndEve !!! const 201 === statusCode -- Set it only in the body of the message - postOtrMessage' (Just [bob]) id alice ac conv m + postOtrMessage' (Just [bob]) id alice ac conv msgMissingChadAndEve !!! const 201 === statusCode -- Let's make sure that protobuf works too, when specified in the body only postProtoOtrMessage' (Just [bob]) id alice ac conv m' !!! const 201 === statusCode - _rs <- - postOtrMessage (queryItem "report_missing" (toByteString' eve)) alice ac conv [] + reportEveAndChad <- + -- send message with no clients + postOtrMessage (queryItem "report_missing" (listToByteString [eve, chad])) alice ac conv [] Date: Fri, 4 Jun 2021 08:17:25 +0200 Subject: [PATCH 2/3] Qualify users and conversations in Event (#1547) * Qualify conversation and from fields in Event Also update examples and golden tests. Consumers of the generated JSON should not be affected, because the fields containing unqualified data are still present in the output. * Define JSON instances for SimpleMember via Schema - Add default value for `conversation_role` field in the schema for `SimpleMember` - Add test to check that the default value above is used - Inline an object schema definition for `SimpleMembers` * Make list of user ids in SimpleMembers qualified * Follow changes in Event type --- .../src/Network/Wire/Client/API/Push.hs | 1 + .../src/Wire/API/Event/Conversation.hs | 67 +- .../testObject_SimpleMember_user_1.json | 6 + .../testObject_AddBotResponse_user_1.json | 8 + .../testObject_AddBotResponse_user_10.json | 8 + .../testObject_AddBotResponse_user_11.json | 8 + .../testObject_AddBotResponse_user_12.json | 8 + .../testObject_AddBotResponse_user_13.json | 8 + .../testObject_AddBotResponse_user_14.json | 8 + .../testObject_AddBotResponse_user_15.json | 24 + .../testObject_AddBotResponse_user_16.json | 8 + .../testObject_AddBotResponse_user_17.json | 8 + .../testObject_AddBotResponse_user_18.json | 8 + .../testObject_AddBotResponse_user_19.json | 8 + .../testObject_AddBotResponse_user_2.json | 8 + .../testObject_AddBotResponse_user_20.json | 8 + .../testObject_AddBotResponse_user_3.json | 8 + .../testObject_AddBotResponse_user_4.json | 8 + .../testObject_AddBotResponse_user_5.json | 8 + .../testObject_AddBotResponse_user_6.json | 8 + .../testObject_AddBotResponse_user_7.json | 8 + .../testObject_AddBotResponse_user_8.json | 8 + .../testObject_AddBotResponse_user_9.json | 8 + .../test/golden/testObject_Event_user_1.json | 8 + .../test/golden/testObject_Event_user_10.json | 8 + .../test/golden/testObject_Event_user_11.json | 8 + .../test/golden/testObject_Event_user_12.json | 8 + .../test/golden/testObject_Event_user_13.json | 8 + .../test/golden/testObject_Event_user_14.json | 8 + .../test/golden/testObject_Event_user_15.json | 8 + .../test/golden/testObject_Event_user_16.json | 8 + .../test/golden/testObject_Event_user_17.json | 8 + .../test/golden/testObject_Event_user_18.json | 8 + .../test/golden/testObject_Event_user_19.json | 68 ++ .../test/golden/testObject_Event_user_2.json | 8 + .../test/golden/testObject_Event_user_20.json | 8 + .../test/golden/testObject_Event_user_3.json | 8 + .../test/golden/testObject_Event_user_4.json | 8 + .../test/golden/testObject_Event_user_5.json | 8 + .../test/golden/testObject_Event_user_6.json | 8 + .../test/golden/testObject_Event_user_7.json | 8 + .../test/golden/testObject_Event_user_8.json | 8 + .../test/golden/testObject_Event_user_9.json | 8 + .../testObject_RemoveBotResponse_user_1.json | 8 + .../testObject_RemoveBotResponse_user_10.json | 8 + .../testObject_RemoveBotResponse_user_11.json | 8 + .../testObject_RemoveBotResponse_user_12.json | 8 + .../testObject_RemoveBotResponse_user_13.json | 8 + .../testObject_RemoveBotResponse_user_14.json | 8 + .../testObject_RemoveBotResponse_user_15.json | 8 + .../testObject_RemoveBotResponse_user_16.json | 8 + .../testObject_RemoveBotResponse_user_17.json | 8 + .../testObject_RemoveBotResponse_user_18.json | 8 + .../testObject_RemoveBotResponse_user_19.json | 8 + .../testObject_RemoveBotResponse_user_2.json | 8 + .../testObject_RemoveBotResponse_user_20.json | 8 + .../testObject_RemoveBotResponse_user_3.json | 88 +++ .../testObject_RemoveBotResponse_user_4.json | 8 + .../testObject_RemoveBotResponse_user_5.json | 8 + .../testObject_RemoveBotResponse_user_6.json | 124 ++++ .../testObject_RemoveBotResponse_user_7.json | 8 + .../testObject_RemoveBotResponse_user_8.json | 8 + .../testObject_RemoveBotResponse_user_9.json | 8 + .../testObject_SimpleMember_user_1.json | 6 +- .../testObject_SimpleMember_user_10.json | 4 + .../testObject_SimpleMember_user_11.json | 4 + .../testObject_SimpleMember_user_12.json | 4 + .../testObject_SimpleMember_user_13.json | 4 + .../testObject_SimpleMember_user_14.json | 4 + .../testObject_SimpleMember_user_15.json | 4 + .../testObject_SimpleMember_user_16.json | 4 + .../testObject_SimpleMember_user_17.json | 4 + .../testObject_SimpleMember_user_18.json | 4 + .../testObject_SimpleMember_user_19.json | 4 + .../testObject_SimpleMember_user_2.json | 6 +- .../testObject_SimpleMember_user_20.json | 4 + .../testObject_SimpleMember_user_3.json | 4 + .../testObject_SimpleMember_user_4.json | 4 + .../testObject_SimpleMember_user_5.json | 4 + .../testObject_SimpleMember_user_6.json | 4 + .../testObject_SimpleMember_user_7.json | 4 + .../testObject_SimpleMember_user_8.json | 4 + .../testObject_SimpleMember_user_9.json | 4 + .../testObject_SimpleMembers_user_1.json | 72 ++ .../testObject_SimpleMembers_user_10.json | 12 + .../testObject_SimpleMembers_user_11.json | 108 +++ .../testObject_SimpleMembers_user_12.json | 72 ++ .../testObject_SimpleMembers_user_13.json | 40 ++ .../testObject_SimpleMembers_user_14.json | 100 +++ .../testObject_SimpleMembers_user_15.json | 56 ++ .../testObject_SimpleMembers_user_16.json | 76 ++ .../testObject_SimpleMembers_user_17.json | 24 + .../testObject_SimpleMembers_user_18.json | 88 +++ .../testObject_SimpleMembers_user_19.json | 80 +++ .../testObject_SimpleMembers_user_2.json | 116 +++ .../testObject_SimpleMembers_user_20.json | 56 ++ .../testObject_SimpleMembers_user_3.json | 24 + .../testObject_SimpleMembers_user_4.json | 8 + .../testObject_SimpleMembers_user_5.json | 60 ++ .../testObject_SimpleMembers_user_6.json | 92 +++ .../testObject_SimpleMembers_user_7.json | 120 ++++ .../testObject_SimpleMembers_user_8.json | 40 ++ .../testObject_SimpleMembers_user_9.json | 76 ++ .../unit/Test/Wire/API/Golden/FromJSON.hs | 4 + .../Golden/Generated/AddBotResponse_user.hs | 92 +-- .../Wire/API/Golden/Generated/Event_user.hs | 112 +-- .../Generated/RemoveBotResponse_user.hs | 182 ++--- .../API/Golden/Generated/SimpleMember_user.hs | 48 +- .../Golden/Generated/SimpleMembers_user.hs | 664 +++++++++--------- .../brig/test/integration/API/Provider.hs | 150 ++-- services/brig/test/integration/Main.hs | 3 +- services/galley/src/Galley/API/Create.hs | 52 +- services/galley/src/Galley/API/Federation.hs | 7 +- services/galley/src/Galley/API/Internal.hs | 7 +- services/galley/src/Galley/API/Teams.hs | 19 +- services/galley/src/Galley/API/Update.hs | 113 ++- services/galley/src/Galley/API/Util.hs | 46 +- services/galley/src/Galley/Data.hs | 69 +- services/galley/src/Galley/Data/Services.hs | 20 +- services/galley/test/integration/API.hs | 132 ++-- .../galley/test/integration/API/Federation.hs | 4 +- .../test/integration/API/MessageTimer.hs | 6 +- services/galley/test/integration/API/Roles.hs | 22 +- services/galley/test/integration/API/Teams.hs | 98 ++- services/galley/test/integration/API/Util.hs | 16 +- 125 files changed, 3220 insertions(+), 876 deletions(-) create mode 100644 libs/wire-api/test/golden/fromJSON/testObject_SimpleMember_user_1.json diff --git a/libs/api-client/src/Network/Wire/Client/API/Push.hs b/libs/api-client/src/Network/Wire/Client/API/Push.hs index 03c9af39ae6..df6e6b18f35 100644 --- a/libs/api-client/src/Network/Wire/Client/API/Push.hs +++ b/libs/api-client/src/Network/Wire/Client/API/Push.hs @@ -36,6 +36,7 @@ module Network.Wire.Client.API.Push OtrMessage (..), SimpleMembers (..), SimpleMember (..), + smId, UserIdList (..), UserInfo (..), diff --git a/libs/wire-api/src/Wire/API/Event/Conversation.hs b/libs/wire-api/src/Wire/API/Event/Conversation.hs index 95352e69197..d9565b531de 100644 --- a/libs/wire-api/src/Wire/API/Event/Conversation.hs +++ b/libs/wire-api/src/Wire/API/Event/Conversation.hs @@ -26,6 +26,7 @@ module Wire.API.Event.Conversation -- * Event data helpers SimpleMember (..), + smId, SimpleMembers (..), Connect (..), MemberUpdateData (..), @@ -70,6 +71,7 @@ import qualified Data.Aeson as A import qualified Data.HashMap.Strict as HashMap import Data.Id import Data.Json.Util (ToJSONObject (toJSONObject), UTCTimeMillis (fromUTCTimeMillis), toUTCTimeMillis) +import Data.Qualified import Data.Schema import qualified Data.Swagger as S import qualified Data.Swagger.Build.Api as Doc @@ -89,8 +91,8 @@ import Wire.API.User (UserIdList (..)) data Event = Event { evtType :: EventType, - evtConv :: ConvId, -- FUTUREWORK: make this qualified - evtFrom :: UserId, -- FUTUREWORK: make this qualified + evtConv :: Qualified ConvId, + evtFrom :: Qualified UserId, evtTime :: UTCTime, evtData :: EventData } @@ -294,26 +296,17 @@ newtype SimpleMembers = SimpleMembers deriving (FromJSON, ToJSON, S.ToSchema) via Schema SimpleMembers instance ToSchema SimpleMembers where - schema = object "Members" simpleMembersObjectSchema - -simpleMembersObjectSchema :: ObjectSchema SwaggerDoc SimpleMembers -simpleMembersObjectSchema = - (`withParser` either fail pure) $ - mk - <$> mMembers .= optional (field "users" (array schema)) - <*> (fmap smId . mMembers) - .= optional - ( fieldWithDocModifier - "user_ids" - (description ?~ "deprecated") - (array schema) - ) - where - -- This is to make migration easier and not dependent on deployment ordering - mk :: Maybe [SimpleMember] -> Maybe [UserId] -> Either String SimpleMembers - mk Nothing Nothing = Left "Either users or user_ids required" - mk Nothing (Just ids) = pure (SimpleMembers (fmap (\u -> SimpleMember u roleNameWireAdmin) ids)) - mk (Just membs) _ = pure (SimpleMembers membs) + schema = + object "Members" $ + SimpleMembers + <$> mMembers .= field "users" (array schema) + <* (fmap smId . mMembers) + .= optional + ( fieldWithDocModifier + "user_ids" + (description ?~ "deprecated") + (array schema) + ) -- | Used both for 'SimpleMembers' and 'UserIdList'. modelMembers :: Doc.Model @@ -323,32 +316,24 @@ modelMembers = Doc.description "List of user IDs" data SimpleMember = SimpleMember - { smId :: UserId, + { smQualifiedId :: Qualified UserId, smConvRoleName :: RoleName } deriving stock (Eq, Show, Generic) deriving (Arbitrary) via (GenericUniform SimpleMember) + deriving (FromJSON, ToJSON) via Schema SimpleMember + +smId :: SimpleMember -> UserId +smId = qUnqualified . smQualifiedId instance ToSchema SimpleMember where schema = object "SimpleMember" $ SimpleMember - <$> smId .= field "id" schema + <$> smQualifiedId .= field "qualified_id" schema + <* smId .= optional (field "id" schema) <*> smConvRoleName - .= field "conversation_role" schema - -instance ToJSON SimpleMember where - toJSON m = - A.object - [ "id" A..= smId m, - "conversation_role" A..= smConvRoleName m - ] - -instance FromJSON SimpleMember where - parseJSON = A.withObject "simple member object" $ \o -> - SimpleMember - <$> o A..: "id" - <*> o A..:? "conversation_role" A..!= roleNameWireAdmin + .= (field "conversation_role" schema <|> pure roleNameWireAdmin) data Connect = Connect { cRecipient :: UserId, @@ -545,8 +530,10 @@ eventObjectSchema :: ObjectSchema SwaggerDoc Event eventObjectSchema = mk <$> (evtType &&& evtData) .= taggedEventDataSchema - <*> evtConv .= field "conversation" schema - <*> evtFrom .= field "from" schema + <* (qUnqualified . evtConv) .= optional (field "conversation" schema) + <*> evtConv .= field "qualified_conversation" schema + <* (qUnqualified . evtFrom) .= optional (field "from" schema) + <*> evtFrom .= field "qualified_from" schema <*> (toUTCTimeMillis . evtTime) .= field "time" (fromUTCTimeMillis <$> schema) where mk (ty, d) cid uid tm = Event ty cid uid tm d diff --git a/libs/wire-api/test/golden/fromJSON/testObject_SimpleMember_user_1.json b/libs/wire-api/test/golden/fromJSON/testObject_SimpleMember_user_1.json new file mode 100644 index 00000000000..dbbb83a9c18 --- /dev/null +++ b/libs/wire-api/test/golden/fromJSON/testObject_SimpleMember_user_1.json @@ -0,0 +1,6 @@ +{ + "qualified_id": { + "id": "0000003a-0000-0042-0000-007500000037", + "domain": "faraway.example.com" + } +} diff --git a/libs/wire-api/test/golden/testObject_AddBotResponse_user_1.json b/libs/wire-api/test/golden/testObject_AddBotResponse_user_1.json index 932b0eb2454..ca039b97f36 100644 --- a/libs/wire-api/test/golden/testObject_AddBotResponse_user_1.json +++ b/libs/wire-api/test/golden/testObject_AddBotResponse_user_1.json @@ -1,11 +1,19 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00000001-0000-0000-0000-000200000003" + }, "conversation": "00000001-0000-0000-0000-000200000003", "time": "1864-05-12T19:20:22.286Z", "data": { "name": "6" }, "from": "00000004-0000-0004-0000-000400000004", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00000004-0000-0004-0000-000400000004" + }, "type": "conversation.rename" }, "accent_id": -3, diff --git a/libs/wire-api/test/golden/testObject_AddBotResponse_user_10.json b/libs/wire-api/test/golden/testObject_AddBotResponse_user_10.json index 0f26a3ffa98..55eb948dd15 100644 --- a/libs/wire-api/test/golden/testObject_AddBotResponse_user_10.json +++ b/libs/wire-api/test/golden/testObject_AddBotResponse_user_10.json @@ -1,11 +1,19 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00000002-0000-0004-0000-000400000001" + }, "conversation": "00000002-0000-0004-0000-000400000001", "time": "1864-05-04T10:22:33.842Z", "data": { "user_ids": [] }, "from": "00000002-0000-0001-0000-000200000000", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00000002-0000-0001-0000-000200000000" + }, "type": "conversation.member-leave" }, "accent_id": 3, diff --git a/libs/wire-api/test/golden/testObject_AddBotResponse_user_11.json b/libs/wire-api/test/golden/testObject_AddBotResponse_user_11.json index 4521bc810bf..379f4faf645 100644 --- a/libs/wire-api/test/golden/testObject_AddBotResponse_user_11.json +++ b/libs/wire-api/test/golden/testObject_AddBotResponse_user_11.json @@ -1,5 +1,9 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00000000-0000-0003-0000-000300000004" + }, "conversation": "00000000-0000-0003-0000-000300000004", "time": "1864-05-04T14:10:34.032Z", "data": { @@ -9,6 +13,10 @@ "access_role": "activated" }, "from": "00000003-0000-0003-0000-000100000000", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00000003-0000-0003-0000-000100000000" + }, "type": "conversation.access-update" }, "accent_id": 0, diff --git a/libs/wire-api/test/golden/testObject_AddBotResponse_user_12.json b/libs/wire-api/test/golden/testObject_AddBotResponse_user_12.json index aafb5d123b5..4c66fd54cdf 100644 --- a/libs/wire-api/test/golden/testObject_AddBotResponse_user_12.json +++ b/libs/wire-api/test/golden/testObject_AddBotResponse_user_12.json @@ -1,5 +1,9 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00000003-0000-0000-0000-000200000000" + }, "conversation": "00000003-0000-0000-0000-000200000000", "time": "1864-05-05T01:06:47.245Z", "data": { @@ -9,6 +13,10 @@ "recipient": "00000000-0000-0000-0000-000000000000" }, "from": "00000001-0000-0001-0000-000100000002", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00000001-0000-0001-0000-000100000002" + }, "type": "conversation.connect-request" }, "accent_id": -4, diff --git a/libs/wire-api/test/golden/testObject_AddBotResponse_user_13.json b/libs/wire-api/test/golden/testObject_AddBotResponse_user_13.json index e053f1497fb..ee3437a0ad4 100644 --- a/libs/wire-api/test/golden/testObject_AddBotResponse_user_13.json +++ b/libs/wire-api/test/golden/testObject_AddBotResponse_user_13.json @@ -1,11 +1,19 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00000000-0000-0003-0000-000100000001" + }, "conversation": "00000000-0000-0003-0000-000100000001", "time": "1864-05-13T05:09:37.371Z", "data": { "receipt_mode": 3 }, "from": "00000004-0000-0001-0000-000400000002", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00000004-0000-0001-0000-000400000002" + }, "type": "conversation.receipt-mode-update" }, "accent_id": -1, diff --git a/libs/wire-api/test/golden/testObject_AddBotResponse_user_14.json b/libs/wire-api/test/golden/testObject_AddBotResponse_user_14.json index 168fa1d4d70..fc44e3ac0f9 100644 --- a/libs/wire-api/test/golden/testObject_AddBotResponse_user_14.json +++ b/libs/wire-api/test/golden/testObject_AddBotResponse_user_14.json @@ -1,5 +1,9 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00000001-0000-0004-0000-000000000004" + }, "conversation": "00000001-0000-0004-0000-000000000004", "time": "1864-05-13T06:48:06.601Z", "data": { @@ -12,6 +16,10 @@ "otr_archived_ref": "" }, "from": "00000000-0000-0000-0000-000200000001", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00000000-0000-0000-0000-000200000001" + }, "type": "conversation.member-update" }, "accent_id": 4, diff --git a/libs/wire-api/test/golden/testObject_AddBotResponse_user_15.json b/libs/wire-api/test/golden/testObject_AddBotResponse_user_15.json index cd697cceb0c..d78f7d2ab6c 100644 --- a/libs/wire-api/test/golden/testObject_AddBotResponse_user_15.json +++ b/libs/wire-api/test/golden/testObject_AddBotResponse_user_15.json @@ -1,23 +1,43 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00000002-0000-0001-0000-000100000000" + }, "conversation": "00000002-0000-0001-0000-000100000000", "time": "1864-05-11T04:21:51.377Z", "data": { "users": [ { "conversation_role": "uk7gwif0crc3wgiak6qae948ny57lwbwbtgbhran16vnewvp10eqialhaq9m38bqbczm_17nl46lhxs3h2cf448_7zcazh1f4ao8gnrzutbhd29j_lvsz", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000002-0000-0002-0000-000200000001" + }, "id": "00000002-0000-0002-0000-000200000001" }, { "conversation_role": "il2dfqczvqqvs3vcob7t6t7zi61y4hxgxmmpp19ueznkasq5q1cssn72l5df92b64yuqsizc6up2p1270hu18t97oifzl", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000000-0000-0000-0000-000000000001" + }, "id": "00000000-0000-0000-0000-000000000001" }, { "conversation_role": "jf7f75hkum6_zxqiabxu8zix2_1kutsjijedcjckapwmymcxx11", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000001-0000-0000-0000-000000000002" + }, "id": "00000001-0000-0000-0000-000000000002" }, { "conversation_role": "i700417q9qqygs5k5a0zvvnpkvg2jimgi_stuyzfxgokyvy05n3_vgikqr0t5ldsb5fvltb8pylb", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000001-0000-0001-0000-000000000002" + }, "id": "00000001-0000-0001-0000-000000000002" } ], @@ -29,6 +49,10 @@ ] }, "from": "00000003-0000-0001-0000-000200000003", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00000003-0000-0001-0000-000200000003" + }, "type": "conversation.member-join" }, "accent_id": -4, diff --git a/libs/wire-api/test/golden/testObject_AddBotResponse_user_16.json b/libs/wire-api/test/golden/testObject_AddBotResponse_user_16.json index da1ef774ba6..65f6171e9b4 100644 --- a/libs/wire-api/test/golden/testObject_AddBotResponse_user_16.json +++ b/libs/wire-api/test/golden/testObject_AddBotResponse_user_16.json @@ -1,11 +1,19 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00000004-0000-0003-0000-000200000000" + }, "conversation": "00000004-0000-0003-0000-000200000000", "time": "1864-05-07T11:54:38.133Z", "data": { "name": "𑩣)@䉉" }, "from": "00000000-0000-0000-0000-000200000001", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00000000-0000-0000-0000-000200000001" + }, "type": "conversation.rename" }, "accent_id": 1, diff --git a/libs/wire-api/test/golden/testObject_AddBotResponse_user_17.json b/libs/wire-api/test/golden/testObject_AddBotResponse_user_17.json index 6e3e34438f5..50744a3e747 100644 --- a/libs/wire-api/test/golden/testObject_AddBotResponse_user_17.json +++ b/libs/wire-api/test/golden/testObject_AddBotResponse_user_17.json @@ -1,5 +1,9 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00000003-0000-0002-0000-000100000002" + }, "conversation": "00000003-0000-0002-0000-000100000002", "time": "1864-05-09T16:18:32.395Z", "data": { @@ -12,6 +16,10 @@ "access_role": "non_activated" }, "from": "00000003-0000-0000-0000-000400000001", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00000003-0000-0000-0000-000400000001" + }, "type": "conversation.access-update" }, "accent_id": -2, diff --git a/libs/wire-api/test/golden/testObject_AddBotResponse_user_18.json b/libs/wire-api/test/golden/testObject_AddBotResponse_user_18.json index 01879b257ef..d369613588e 100644 --- a/libs/wire-api/test/golden/testObject_AddBotResponse_user_18.json +++ b/libs/wire-api/test/golden/testObject_AddBotResponse_user_18.json @@ -1,11 +1,19 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00000000-0000-0001-0000-000100000001" + }, "conversation": "00000000-0000-0001-0000-000100000001", "time": "1864-05-13T04:14:10.186Z", "data": { "name": "+S󲱱x1" }, "from": "00000001-0000-0002-0000-000000000003", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00000001-0000-0002-0000-000000000003" + }, "type": "conversation.rename" }, "accent_id": 1, diff --git a/libs/wire-api/test/golden/testObject_AddBotResponse_user_19.json b/libs/wire-api/test/golden/testObject_AddBotResponse_user_19.json index 699ad3e400c..da627fc162a 100644 --- a/libs/wire-api/test/golden/testObject_AddBotResponse_user_19.json +++ b/libs/wire-api/test/golden/testObject_AddBotResponse_user_19.json @@ -1,9 +1,17 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00000003-0000-0003-0000-000000000000" + }, "conversation": "00000003-0000-0003-0000-000000000000", "time": "1864-05-14T03:03:50.569Z", "data": null, "from": "00000004-0000-0003-0000-000400000002", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00000004-0000-0003-0000-000400000002" + }, "type": "conversation.code-delete" }, "accent_id": 3, diff --git a/libs/wire-api/test/golden/testObject_AddBotResponse_user_2.json b/libs/wire-api/test/golden/testObject_AddBotResponse_user_2.json index ec3ca8d4d53..558e4aee975 100644 --- a/libs/wire-api/test/golden/testObject_AddBotResponse_user_2.json +++ b/libs/wire-api/test/golden/testObject_AddBotResponse_user_2.json @@ -1,11 +1,19 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00000000-0000-0002-0000-000300000001" + }, "conversation": "00000000-0000-0002-0000-000300000001", "time": "1864-05-08T19:02:58.600Z", "data": { "status": "started" }, "from": "00000004-0000-0000-0000-000300000001", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00000004-0000-0000-0000-000300000001" + }, "type": "conversation.typing" }, "accent_id": 3, diff --git a/libs/wire-api/test/golden/testObject_AddBotResponse_user_20.json b/libs/wire-api/test/golden/testObject_AddBotResponse_user_20.json index 27540c65c94..7f87a8c75e7 100644 --- a/libs/wire-api/test/golden/testObject_AddBotResponse_user_20.json +++ b/libs/wire-api/test/golden/testObject_AddBotResponse_user_20.json @@ -1,11 +1,19 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00000003-0000-0002-0000-000200000004" + }, "conversation": "00000003-0000-0002-0000-000200000004", "time": "1864-05-08T05:48:34.348Z", "data": { "message_timer": 3346692440762670 }, "from": "00000002-0000-0003-0000-000200000004", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00000002-0000-0003-0000-000200000004" + }, "type": "conversation.message-timer-update" }, "accent_id": -1, diff --git a/libs/wire-api/test/golden/testObject_AddBotResponse_user_3.json b/libs/wire-api/test/golden/testObject_AddBotResponse_user_3.json index a762fe0c95c..813d5595d0d 100644 --- a/libs/wire-api/test/golden/testObject_AddBotResponse_user_3.json +++ b/libs/wire-api/test/golden/testObject_AddBotResponse_user_3.json @@ -1,5 +1,9 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00000000-0000-0001-0000-000000000003" + }, "conversation": "00000000-0000-0001-0000-000000000003", "time": "1864-05-10T11:22:13.523Z", "data": { @@ -34,6 +38,10 @@ "last_event": "0.0" }, "from": "00000000-0000-0004-0000-000400000004", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00000000-0000-0004-0000-000400000004" + }, "type": "conversation.create" }, "accent_id": 0, diff --git a/libs/wire-api/test/golden/testObject_AddBotResponse_user_4.json b/libs/wire-api/test/golden/testObject_AddBotResponse_user_4.json index 33f0a2865d2..865ba77d74b 100644 --- a/libs/wire-api/test/golden/testObject_AddBotResponse_user_4.json +++ b/libs/wire-api/test/golden/testObject_AddBotResponse_user_4.json @@ -1,9 +1,17 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00000003-0000-0002-0000-000300000003" + }, "conversation": "00000003-0000-0002-0000-000300000003", "time": "1864-05-06T03:03:10.788Z", "data": null, "from": "00000001-0000-0002-0000-000300000001", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00000001-0000-0002-0000-000300000001" + }, "type": "conversation.delete" }, "accent_id": -4, diff --git a/libs/wire-api/test/golden/testObject_AddBotResponse_user_5.json b/libs/wire-api/test/golden/testObject_AddBotResponse_user_5.json index f928a78ba0a..7b2e73becc6 100644 --- a/libs/wire-api/test/golden/testObject_AddBotResponse_user_5.json +++ b/libs/wire-api/test/golden/testObject_AddBotResponse_user_5.json @@ -1,5 +1,9 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00000000-0000-0001-0000-000000000001" + }, "conversation": "00000000-0000-0001-0000-000000000001", "time": "1864-05-13T21:19:26.488Z", "data": { @@ -37,6 +41,10 @@ "last_event": "0.0" }, "from": "00000001-0000-0004-0000-000000000002", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00000001-0000-0004-0000-000000000002" + }, "type": "conversation.create" }, "accent_id": -4, diff --git a/libs/wire-api/test/golden/testObject_AddBotResponse_user_6.json b/libs/wire-api/test/golden/testObject_AddBotResponse_user_6.json index 9224f1a5c58..2e3cb265b6d 100644 --- a/libs/wire-api/test/golden/testObject_AddBotResponse_user_6.json +++ b/libs/wire-api/test/golden/testObject_AddBotResponse_user_6.json @@ -1,5 +1,9 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00000003-0000-0001-0000-000000000003" + }, "conversation": "00000003-0000-0001-0000-000000000003", "time": "1864-05-14T23:40:44.551Z", "data": { @@ -8,6 +12,10 @@ "code": "3A16c3OyeYqqLqhHKwZ" }, "from": "00000002-0000-0004-0000-000300000001", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00000002-0000-0004-0000-000300000001" + }, "type": "conversation.code-update" }, "accent_id": -1, diff --git a/libs/wire-api/test/golden/testObject_AddBotResponse_user_7.json b/libs/wire-api/test/golden/testObject_AddBotResponse_user_7.json index 0161ef13439..6968428bbfd 100644 --- a/libs/wire-api/test/golden/testObject_AddBotResponse_user_7.json +++ b/libs/wire-api/test/golden/testObject_AddBotResponse_user_7.json @@ -1,11 +1,19 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00000000-0000-0004-0000-000300000004" + }, "conversation": "00000000-0000-0004-0000-000300000004", "time": "1864-05-07T22:30:05.775Z", "data": { "receipt_mode": -4 }, "from": "00000003-0000-0001-0000-000400000001", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00000003-0000-0001-0000-000400000001" + }, "type": "conversation.receipt-mode-update" }, "accent_id": -4, diff --git a/libs/wire-api/test/golden/testObject_AddBotResponse_user_8.json b/libs/wire-api/test/golden/testObject_AddBotResponse_user_8.json index 28df97ef97e..290302c008f 100644 --- a/libs/wire-api/test/golden/testObject_AddBotResponse_user_8.json +++ b/libs/wire-api/test/golden/testObject_AddBotResponse_user_8.json @@ -1,5 +1,9 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00000001-0000-0000-0000-000200000003" + }, "conversation": "00000001-0000-0000-0000-000200000003", "time": "1864-05-05T09:04:05.078Z", "data": { @@ -10,6 +14,10 @@ "access_role": "activated" }, "from": "00000004-0000-0000-0000-000400000000", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00000004-0000-0000-0000-000400000000" + }, "type": "conversation.access-update" }, "accent_id": 0, diff --git a/libs/wire-api/test/golden/testObject_AddBotResponse_user_9.json b/libs/wire-api/test/golden/testObject_AddBotResponse_user_9.json index e1f9fcc94bd..62435ec6e26 100644 --- a/libs/wire-api/test/golden/testObject_AddBotResponse_user_9.json +++ b/libs/wire-api/test/golden/testObject_AddBotResponse_user_9.json @@ -1,5 +1,9 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00000002-0000-0004-0000-000000000004" + }, "conversation": "00000002-0000-0004-0000-000000000004", "time": "1864-05-07T17:13:06.966Z", "data": { @@ -14,6 +18,10 @@ "target": "00000001-0000-0000-0000-000000000001" }, "from": "00000002-0000-0002-0000-000100000002", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00000002-0000-0002-0000-000100000002" + }, "type": "conversation.member-update" }, "accent_id": 2, diff --git a/libs/wire-api/test/golden/testObject_Event_user_1.json b/libs/wire-api/test/golden/testObject_Event_user_1.json index 42f2c8c7b5e..3f0251e28bc 100644 --- a/libs/wire-api/test/golden/testObject_Event_user_1.json +++ b/libs/wire-api/test/golden/testObject_Event_user_1.json @@ -1,7 +1,15 @@ { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00005d81-0000-0d71-0000-1d8f00007d32" + }, "conversation": "00005d81-0000-0d71-0000-1d8f00007d32", "time": "1864-05-22T09:51:07.104Z", "data": null, "from": "00003b8b-0000-3395-0000-076a00007830", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00003b8b-0000-3395-0000-076a00007830" + }, "type": "conversation.delete" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_Event_user_10.json b/libs/wire-api/test/golden/testObject_Event_user_10.json index 28740cdb73d..f99cd3585fe 100644 --- a/libs/wire-api/test/golden/testObject_Event_user_10.json +++ b/libs/wire-api/test/golden/testObject_Event_user_10.json @@ -1,4 +1,8 @@ { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "000019e1-0000-1dc6-0000-68de0000246d" + }, "conversation": "000019e1-0000-1dc6-0000-68de0000246d", "time": "1864-05-29T19:31:31.226Z", "data": { @@ -93,5 +97,9 @@ "last_event": "0.0" }, "from": "00000457-0000-0689-0000-77a00000021c", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00000457-0000-0689-0000-77a00000021c" + }, "type": "conversation.create" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_Event_user_11.json b/libs/wire-api/test/golden/testObject_Event_user_11.json index c29eb5c9017..76ec1445449 100644 --- a/libs/wire-api/test/golden/testObject_Event_user_11.json +++ b/libs/wire-api/test/golden/testObject_Event_user_11.json @@ -1,4 +1,8 @@ { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "000031c2-0000-108c-0000-10a500000882" + }, "conversation": "000031c2-0000-108c-0000-10a500000882", "time": "1864-05-03T06:49:41.178Z", "data": { @@ -12,5 +16,9 @@ "target": "00000001-0000-0002-0000-000100000000" }, "from": "00005335-0000-2983-0000-46460000082f", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00005335-0000-2983-0000-46460000082f" + }, "type": "conversation.member-update" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_Event_user_12.json b/libs/wire-api/test/golden/testObject_Event_user_12.json index 00e8ed095c6..67289f83ca6 100644 --- a/libs/wire-api/test/golden/testObject_Event_user_12.json +++ b/libs/wire-api/test/golden/testObject_Event_user_12.json @@ -1,7 +1,15 @@ { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00007474-0000-2a7b-0000-125900006ac9" + }, "conversation": "00007474-0000-2a7b-0000-125900006ac9", "time": "1864-05-23T17:16:29.326Z", "data": null, "from": "00000795-0000-709d-0000-11270000007a", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00000795-0000-709d-0000-11270000007a" + }, "type": "conversation.delete" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_Event_user_13.json b/libs/wire-api/test/golden/testObject_Event_user_13.json index b16b1049f15..aa4f5553bfe 100644 --- a/libs/wire-api/test/golden/testObject_Event_user_13.json +++ b/libs/wire-api/test/golden/testObject_Event_user_13.json @@ -1,4 +1,8 @@ { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00006355-0000-5f6e-0000-592c0000680c" + }, "conversation": "00006355-0000-5f6e-0000-592c0000680c", "time": "1864-05-21T03:22:42.926Z", "data": { @@ -8,5 +12,9 @@ "recipient": "4" }, "from": "000029eb-0000-06f8-0000-514100000a84", + "qualified_from": { + "domain": "faraway.example.com", + "id": "000029eb-0000-06f8-0000-514100000a84" + }, "type": "conversation.otr-message-add" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_Event_user_14.json b/libs/wire-api/test/golden/testObject_Event_user_14.json index d8166bc72b6..4130d1084d8 100644 --- a/libs/wire-api/test/golden/testObject_Event_user_14.json +++ b/libs/wire-api/test/golden/testObject_Event_user_14.json @@ -1,9 +1,17 @@ { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00000b98-0000-618d-0000-19e200004651" + }, "conversation": "00000b98-0000-618d-0000-19e200004651", "time": "1864-05-01T11:57:35.123Z", "data": { "receipt_mode": -10505 }, "from": "00004bee-0000-45a0-0000-2c0300005726", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00004bee-0000-45a0-0000-2c0300005726" + }, "type": "conversation.receipt-mode-update" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_Event_user_15.json b/libs/wire-api/test/golden/testObject_Event_user_15.json index ab24a5ffb22..dec62fe4423 100644 --- a/libs/wire-api/test/golden/testObject_Event_user_15.json +++ b/libs/wire-api/test/golden/testObject_Event_user_15.json @@ -1,4 +1,8 @@ { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00005e43-0000-3b56-0000-7c270000538c" + }, "conversation": "00005e43-0000-3b56-0000-7c270000538c", "time": "1864-05-25T01:31:49.802Z", "data": { @@ -8,5 +12,9 @@ "recipient": "00000008-0000-0000-0000-000600000001" }, "from": "00007f28-0000-40b1-0000-56ab0000748d", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00007f28-0000-40b1-0000-56ab0000748d" + }, "type": "conversation.connect-request" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_Event_user_16.json b/libs/wire-api/test/golden/testObject_Event_user_16.json index 5cda4b24a3a..e334d264c8d 100644 --- a/libs/wire-api/test/golden/testObject_Event_user_16.json +++ b/libs/wire-api/test/golden/testObject_Event_user_16.json @@ -1,4 +1,8 @@ { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00004b59-0000-55d6-0000-5aad00007373" + }, "conversation": "00004b59-0000-55d6-0000-5aad00007373", "time": "1864-05-24T00:49:37.413Z", "data": { @@ -6,5 +10,9 @@ "access_role": "activated" }, "from": "0000211e-0000-0b37-0000-563100003a5d", + "qualified_from": { + "domain": "faraway.example.com", + "id": "0000211e-0000-0b37-0000-563100003a5d" + }, "type": "conversation.access-update" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_Event_user_17.json b/libs/wire-api/test/golden/testObject_Event_user_17.json index e3a6b34447f..cc17cded498 100644 --- a/libs/wire-api/test/golden/testObject_Event_user_17.json +++ b/libs/wire-api/test/golden/testObject_Event_user_17.json @@ -1,9 +1,17 @@ { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00006ac8-0000-1342-0000-76880000021d" + }, "conversation": "00006ac8-0000-1342-0000-76880000021d", "time": "1864-04-17T07:39:54.846Z", "data": { "status": "stopped" }, "from": "0000145f-0000-2ce0-0000-4ca800006c72", + "qualified_from": { + "domain": "faraway.example.com", + "id": "0000145f-0000-2ce0-0000-4ca800006c72" + }, "type": "conversation.typing" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_Event_user_18.json b/libs/wire-api/test/golden/testObject_Event_user_18.json index 1507da9087f..b0a9058eb0c 100644 --- a/libs/wire-api/test/golden/testObject_Event_user_18.json +++ b/libs/wire-api/test/golden/testObject_Event_user_18.json @@ -1,4 +1,8 @@ { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "0000303b-0000-23a9-0000-25de00002f80" + }, "conversation": "0000303b-0000-23a9-0000-25de00002f80", "time": "1864-04-12T01:28:25.705Z", "data": { @@ -31,5 +35,9 @@ ] }, "from": "000043a6-0000-1627-0000-490300002017", + "qualified_from": { + "domain": "faraway.example.com", + "id": "000043a6-0000-1627-0000-490300002017" + }, "type": "conversation.member-leave" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_Event_user_19.json b/libs/wire-api/test/golden/testObject_Event_user_19.json index a7a890f5335..4cee704eddf 100644 --- a/libs/wire-api/test/golden/testObject_Event_user_19.json +++ b/libs/wire-api/test/golden/testObject_Event_user_19.json @@ -1,66 +1,130 @@ { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00000838-0000-1bc6-0000-686d00003565" + }, "conversation": "00000838-0000-1bc6-0000-686d00003565", "time": "1864-05-12T20:29:47.483Z", "data": { "users": [ { "conversation_role": "dlkagbmicz0f95d", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000055-0000-004d-0000-005100000037" + }, "id": "00000055-0000-004d-0000-005100000037" }, { "conversation_role": "1me2in15nttjib_zx_qqx_c_mw4rw9bys2w4y78e6qhziu_85wj8vbnk6igkzld9unfvnl0oosp25i4btj6yehlq7q9em_mxsxodvq7nj_f5hqx", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000004c-0000-0051-0000-00220000005c" + }, "id": "0000004c-0000-0051-0000-00220000005c" }, { "conversation_role": "31664ffg5sx2690yu2059f7hij_m5vmb80kig21u4h3fe8uwfbshhgkdydiv_nwjm3mo4fprgxkizazcvax0vvxwcvdax", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000014-0000-0027-0000-003400000023" + }, "id": "00000014-0000-0027-0000-003400000023" }, { "conversation_role": "2e", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000001-0000-001f-0000-001500000009" + }, "id": "00000001-0000-001f-0000-001500000009" }, { "conversation_role": "f3nxp18px4kup3nrarx5wsp1o_eh69", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000005d-0000-0064-0000-00590000007d" + }, "id": "0000005d-0000-0064-0000-00590000007d" }, { "conversation_role": "fixso00nq4580z4ax9zs0sk3rej11c09rcj2ikbvnrg_io84n0eamqvwlz2icdo2u5jzzovta5j64kp0vg7e_21vs4r0hzv9", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000068-0000-007a-0000-005a0000006c" + }, "id": "00000068-0000-007a-0000-005a0000006c" }, { "conversation_role": "f9i5d2wd01ijp53en5bq8lch__jlnu8_v2xsgkctpin98byh1009f_v63", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000074-0000-0036-0000-00780000007d" + }, "id": "00000074-0000-0036-0000-00780000007d" }, { "conversation_role": "o_oqigzovv9oc2uxckvk5eofmc", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001c-0000-000a-0000-004800000063" + }, "id": "0000001c-0000-000a-0000-004800000063" }, { "conversation_role": "5snj8s5t7nicihwspcp4sg4ny1pa1yb2s6601vjyxhksbciotoi_rvivybk1iviuz8buw", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000056-0000-0028-0000-004f00000079" + }, "id": "00000056-0000-0028-0000-004f00000079" }, { "conversation_role": "73e9u2hpffjb5ids29tbtcceg0i9v2", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001e-0000-0054-0000-002300000053" + }, "id": "0000001e-0000-0054-0000-002300000053" }, { "conversation_role": "d2s4mc_qt1cc2rox8c9gak_qivlha7q259lsz7y5bz6dxsv8igx9r", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000004d-0000-0027-0000-007500000042" + }, "id": "0000004d-0000-0027-0000-007500000042" }, { "conversation_role": "7d84htzo4bc9250rer4r8p47ykbesgatuz8wwkoe1m2xnfljpwoi01025ti548frbvdmtykqq4pn1qsoc3s", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000050-0000-006e-0000-007000000057" + }, "id": "00000050-0000-006e-0000-007000000057" }, { "conversation_role": "v7ldb8mov4an62t6", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000007a-0000-003c-0000-005300000013" + }, "id": "0000007a-0000-003c-0000-005300000013" }, { "conversation_role": "k7uigpk1wwfc0mffoafjqf3dejctneh21zilaup19435zntvwu8kqd3l0k7s938ex2hf_n7_7dld5z604_if5z88f3u2w28qarfdcw5rkczk4jb4n", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000001-0000-0064-0000-005e00000072" + }, "id": "00000001-0000-0064-0000-005e00000072" }, { "conversation_role": "s6creybsl300lqkhu0wv_ikgattm3bd1r", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000020-0000-0012-0000-000500000036" + }, "id": "00000020-0000-0012-0000-000500000036" } ], @@ -83,5 +147,9 @@ ] }, "from": "0000114a-0000-7da8-0000-40cb00007fcf", + "qualified_from": { + "domain": "faraway.example.com", + "id": "0000114a-0000-7da8-0000-40cb00007fcf" + }, "type": "conversation.member-join" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_Event_user_2.json b/libs/wire-api/test/golden/testObject_Event_user_2.json index 705f67f17e1..7232d9989ff 100644 --- a/libs/wire-api/test/golden/testObject_Event_user_2.json +++ b/libs/wire-api/test/golden/testObject_Event_user_2.json @@ -1,4 +1,8 @@ { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "0000064d-0000-7a7f-0000-5749000029e1" + }, "conversation": "0000064d-0000-7a7f-0000-5749000029e1", "time": "1864-06-05T23:01:18.769Z", "data": { @@ -12,5 +16,9 @@ "access_role": "activated" }, "from": "00006a88-0000-2acb-0000-6aa0000061b2", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00006a88-0000-2acb-0000-6aa0000061b2" + }, "type": "conversation.access-update" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_Event_user_20.json b/libs/wire-api/test/golden/testObject_Event_user_20.json index 01bba9ac96a..f44e65af7a9 100644 --- a/libs/wire-api/test/golden/testObject_Event_user_20.json +++ b/libs/wire-api/test/golden/testObject_Event_user_20.json @@ -1,4 +1,8 @@ { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00000c88-0000-433f-0000-669100006374" + }, "conversation": "00000c88-0000-433f-0000-669100006374", "time": "1864-04-21T23:40:54.462Z", "data": { @@ -32,5 +36,9 @@ ] }, "from": "00007547-0000-26d8-0000-52280000157c", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00007547-0000-26d8-0000-52280000157c" + }, "type": "conversation.member-leave" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_Event_user_3.json b/libs/wire-api/test/golden/testObject_Event_user_3.json index 7e33d430317..477819a2684 100644 --- a/libs/wire-api/test/golden/testObject_Event_user_3.json +++ b/libs/wire-api/test/golden/testObject_Event_user_3.json @@ -1,4 +1,8 @@ { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00006f8c-0000-00d6-0000-1568000001e9" + }, "conversation": "00006f8c-0000-00d6-0000-1568000001e9", "time": "1864-04-27T15:44:23.844Z", "data": { @@ -8,5 +12,9 @@ "recipient": "f" }, "from": "00004b11-0000-5504-0000-55d800002188", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00004b11-0000-5504-0000-55d800002188" + }, "type": "conversation.otr-message-add" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_Event_user_4.json b/libs/wire-api/test/golden/testObject_Event_user_4.json index 2c396b8258f..7aea91abb15 100644 --- a/libs/wire-api/test/golden/testObject_Event_user_4.json +++ b/libs/wire-api/test/golden/testObject_Event_user_4.json @@ -1,7 +1,15 @@ { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00004f04-0000-3939-0000-472d0000316b" + }, "conversation": "00004f04-0000-3939-0000-472d0000316b", "time": "1864-05-12T00:59:09.200Z", "data": null, "from": "00007c90-0000-766a-0000-01b700002ab7", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00007c90-0000-766a-0000-01b700002ab7" + }, "type": "conversation.code-delete" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_Event_user_5.json b/libs/wire-api/test/golden/testObject_Event_user_5.json index d95d29ea4bd..383635ba15a 100644 --- a/libs/wire-api/test/golden/testObject_Event_user_5.json +++ b/libs/wire-api/test/golden/testObject_Event_user_5.json @@ -1,4 +1,8 @@ { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00003c8c-0000-6394-0000-294b0000098b" + }, "conversation": "00003c8c-0000-6394-0000-294b0000098b", "time": "1864-04-12T03:04:00.298Z", "data": { @@ -10,5 +14,9 @@ "otr_archived_ref": "\u0001J" }, "from": "00002a12-0000-73e1-0000-71f700002ec9", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00002a12-0000-73e1-0000-71f700002ec9" + }, "type": "conversation.member-update" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_Event_user_6.json b/libs/wire-api/test/golden/testObject_Event_user_6.json index 270580352a3..aff5c1fa549 100644 --- a/libs/wire-api/test/golden/testObject_Event_user_6.json +++ b/libs/wire-api/test/golden/testObject_Event_user_6.json @@ -1,9 +1,17 @@ { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00001fdb-0000-3127-0000-23ef00007183" + }, "conversation": "00001fdb-0000-3127-0000-23ef00007183", "time": "1864-05-09T05:44:41.382Z", "data": { "message_timer": 5029817038083912 }, "from": "0000705a-0000-0b62-0000-425c000049c8", + "qualified_from": { + "domain": "faraway.example.com", + "id": "0000705a-0000-0b62-0000-425c000049c8" + }, "type": "conversation.message-timer-update" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_Event_user_7.json b/libs/wire-api/test/golden/testObject_Event_user_7.json index d5f1ea4a749..a22dea6898d 100644 --- a/libs/wire-api/test/golden/testObject_Event_user_7.json +++ b/libs/wire-api/test/golden/testObject_Event_user_7.json @@ -1,9 +1,17 @@ { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00006ac1-0000-543e-0000-7c8f00000be7" + }, "conversation": "00006ac1-0000-543e-0000-7c8f00000be7", "time": "1864-04-18T05:01:13.761Z", "data": { "status": "stopped" }, "from": "0000355a-0000-2979-0000-083000002d5e", + "qualified_from": { + "domain": "faraway.example.com", + "id": "0000355a-0000-2979-0000-083000002d5e" + }, "type": "conversation.typing" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_Event_user_8.json b/libs/wire-api/test/golden/testObject_Event_user_8.json index 2999c3b8542..6ef386c6d8a 100644 --- a/libs/wire-api/test/golden/testObject_Event_user_8.json +++ b/libs/wire-api/test/golden/testObject_Event_user_8.json @@ -1,7 +1,15 @@ { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00000892-0000-53c7-0000-0c870000027a" + }, "conversation": "00000892-0000-53c7-0000-0c870000027a", "time": "1864-06-08T15:19:01.916Z", "data": null, "from": "000008e8-0000-43fa-0000-4dd1000034cc", + "qualified_from": { + "domain": "faraway.example.com", + "id": "000008e8-0000-43fa-0000-4dd1000034cc" + }, "type": "conversation.code-delete" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_Event_user_9.json b/libs/wire-api/test/golden/testObject_Event_user_9.json index c417c2d4df4..b3ce97a8c3a 100644 --- a/libs/wire-api/test/golden/testObject_Event_user_9.json +++ b/libs/wire-api/test/golden/testObject_Event_user_9.json @@ -1,4 +1,8 @@ { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00004847-0000-1eb9-0000-2973000039ca" + }, "conversation": "00004847-0000-1eb9-0000-2973000039ca", "time": "1864-05-21T16:22:14.886Z", "data": { @@ -14,5 +18,9 @@ "access_role": "non_activated" }, "from": "000044e3-0000-1c36-0000-42fd00006e01", + "qualified_from": { + "domain": "faraway.example.com", + "id": "000044e3-0000-1c36-0000-42fd00006e01" + }, "type": "conversation.access-update" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_1.json b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_1.json index ac41269ce91..cd55aa0263c 100644 --- a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_1.json +++ b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_1.json @@ -1,5 +1,9 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00003ab8-0000-0cff-0000-427f000000df" + }, "conversation": "00003ab8-0000-0cff-0000-427f000000df", "time": "1864-05-07T01:13:35.741Z", "data": { @@ -37,6 +41,10 @@ ] }, "from": "00004166-0000-1e32-0000-52cb0000428d", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00004166-0000-1e32-0000-52cb0000428d" + }, "type": "conversation.member-leave" } } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_10.json b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_10.json index c6d25b53d83..f36ebe29fd3 100644 --- a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_10.json +++ b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_10.json @@ -1,11 +1,19 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00005788-0000-327b-0000-7ef80000017e" + }, "conversation": "00005788-0000-327b-0000-7ef80000017e", "time": "1864-04-11T02:49:27.442Z", "data": { "status": "started" }, "from": "0000588d-0000-6704-0000-153f00001692", + "qualified_from": { + "domain": "faraway.example.com", + "id": "0000588d-0000-6704-0000-153f00001692" + }, "type": "conversation.typing" } } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_11.json b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_11.json index a9afe81529b..02837917937 100644 --- a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_11.json +++ b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_11.json @@ -1,11 +1,19 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00001db4-0000-575c-0000-5b9200002c33" + }, "conversation": "00001db4-0000-575c-0000-5b9200002c33", "time": "1864-05-25T16:08:53.052Z", "data": { "name": "\u0017𦙤𧉁>P2L𫐫x􆞻􇙌󱟱T𥄢0)y󵅽\u0016" }, "from": "000009b3-0000-04dc-0000-310100002b5f", + "qualified_from": { + "domain": "faraway.example.com", + "id": "000009b3-0000-04dc-0000-310100002b5f" + }, "type": "conversation.rename" } } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_12.json b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_12.json index 07cb6e13e91..cd6295e633f 100644 --- a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_12.json +++ b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_12.json @@ -1,5 +1,9 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00004c29-0000-0214-0000-1d7300001cdc" + }, "conversation": "00004c29-0000-0214-0000-1d7300001cdc", "time": "1864-04-23T00:31:51.842Z", "data": { @@ -9,6 +13,10 @@ "recipient": "00000002-0000-0005-0000-000100000007" }, "from": "00003ba8-0000-448c-0000-769e00004cdf", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00003ba8-0000-448c-0000-769e00004cdf" + }, "type": "conversation.connect-request" } } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_13.json b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_13.json index fa698079b81..4305fa47343 100644 --- a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_13.json +++ b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_13.json @@ -1,11 +1,19 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "000062a2-0000-46ad-0000-0f8100005bbe" + }, "conversation": "000062a2-0000-46ad-0000-0f8100005bbe", "time": "1864-05-06T22:47:56.147Z", "data": { "message_timer": null }, "from": "000065a2-0000-1aaa-0000-311000003d69", + "qualified_from": { + "domain": "faraway.example.com", + "id": "000065a2-0000-1aaa-0000-311000003d69" + }, "type": "conversation.message-timer-update" } } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_14.json b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_14.json index 6de36e5b6ee..6d1d6aa5dec 100644 --- a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_14.json +++ b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_14.json @@ -1,5 +1,9 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "0000060f-0000-6d7d-0000-33a800005d07" + }, "conversation": "0000060f-0000-6d7d-0000-33a800005d07", "time": "1864-04-21T02:44:02.145Z", "data": { @@ -7,6 +11,10 @@ "code": "z3MqXFfMRMlMeTim7025" }, "from": "00005c4c-0000-226a-0000-04b70000100a", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00005c4c-0000-226a-0000-04b70000100a" + }, "type": "conversation.code-update" } } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_15.json b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_15.json index 6698a2b1ed3..c4c6da8c5a1 100644 --- a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_15.json +++ b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_15.json @@ -1,11 +1,19 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00006421-0000-0363-0000-192100003398" + }, "conversation": "00006421-0000-0363-0000-192100003398", "time": "1864-04-30T23:29:02.240Z", "data": { "message_timer": 8977358108702637 }, "from": "000005cd-0000-7897-0000-1fc700002d35", + "qualified_from": { + "domain": "faraway.example.com", + "id": "000005cd-0000-7897-0000-1fc700002d35" + }, "type": "conversation.message-timer-update" } } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_16.json b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_16.json index 765395a35ec..4e8b454c83d 100644 --- a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_16.json +++ b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_16.json @@ -1,5 +1,9 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "0000067f-0000-0d9b-0000-039f0000033f" + }, "conversation": "0000067f-0000-0d9b-0000-039f0000033f", "time": "1864-04-27T19:16:49.866Z", "data": { @@ -8,6 +12,10 @@ "code": "=X8_OGM09" }, "from": "0000030b-0000-5943-0000-6cd900006eae", + "qualified_from": { + "domain": "faraway.example.com", + "id": "0000030b-0000-5943-0000-6cd900006eae" + }, "type": "conversation.code-update" } } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_17.json b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_17.json index 16b87085bf6..ec8523d2c21 100644 --- a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_17.json +++ b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_17.json @@ -1,11 +1,19 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00005994-0000-5c94-0000-519300002727" + }, "conversation": "00005994-0000-5c94-0000-519300002727", "time": "1864-04-24T18:38:55.053Z", "data": { "message_timer": 3685837512701220 }, "from": "00003ddd-0000-21a2-0000-6a54000023c3", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00003ddd-0000-21a2-0000-6a54000023c3" + }, "type": "conversation.message-timer-update" } } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_18.json b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_18.json index 980f6239ea5..eee78a94ad0 100644 --- a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_18.json +++ b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_18.json @@ -1,5 +1,9 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "000005bf-0000-3fdd-0000-089a0000544e" + }, "conversation": "000005bf-0000-3fdd-0000-089a0000544e", "time": "1864-05-05T05:34:43.386Z", "data": { @@ -9,6 +13,10 @@ "recipient": "00000007-0000-0005-0000-000400000002" }, "from": "00003c0a-0000-3d64-0000-7f74000011e9", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00003c0a-0000-3d64-0000-7f74000011e9" + }, "type": "conversation.connect-request" } } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_19.json b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_19.json index c7afb1917d1..386359bd8e7 100644 --- a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_19.json +++ b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_19.json @@ -1,9 +1,17 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00000c59-0000-51c7-0000-1b6500001384" + }, "conversation": "00000c59-0000-51c7-0000-1b6500001384", "time": "1864-04-19T14:51:39.037Z", "data": null, "from": "00003046-0000-14df-0000-5a5900005ef2", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00003046-0000-14df-0000-5a5900005ef2" + }, "type": "conversation.code-delete" } } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_2.json b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_2.json index 1d322f07400..1907be2fdb9 100644 --- a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_2.json +++ b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_2.json @@ -1,9 +1,17 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00005a06-0000-10ab-0000-4999000058de" + }, "conversation": "00005a06-0000-10ab-0000-4999000058de", "time": "1864-04-23T16:56:18.982Z", "data": null, "from": "00004247-0000-0560-0000-07df00005850", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00004247-0000-0560-0000-07df00005850" + }, "type": "conversation.delete" } } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_20.json b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_20.json index b2f9ff67abe..1cca0da5286 100644 --- a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_20.json +++ b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_20.json @@ -1,11 +1,19 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00004e98-0000-2ec5-0000-31870000098c" + }, "conversation": "00004e98-0000-2ec5-0000-31870000098c", "time": "1864-05-18T03:54:11.412Z", "data": { "message_timer": 5776200192005000 }, "from": "00006cb0-0000-6547-0000-1fe500000270", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00006cb0-0000-6547-0000-1fe500000270" + }, "type": "conversation.message-timer-update" } } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_3.json b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_3.json index 509b27457b1..3b3ac3350ea 100644 --- a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_3.json +++ b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_3.json @@ -1,87 +1,171 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "000031b6-0000-7f2c-0000-22ca000012a0" + }, "conversation": "000031b6-0000-7f2c-0000-22ca000012a0", "time": "1864-04-23T02:07:23.620Z", "data": { "users": [ { "conversation_role": "3jqe4rv30oxjs05p0vjx_gv", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000042-0000-0046-0000-005e0000001f" + }, "id": "00000042-0000-0046-0000-005e0000001f" }, { "conversation_role": "gv66owx6jn8", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000073-0000-003c-0000-005800000069" + }, "id": "00000073-0000-003c-0000-005800000069" }, { "conversation_role": "zx5yjj62r6x5vzvdekehjc6syfkollz3j5ztxjsu1ffrjvolkynevvykqe6dyyntx3t4p7ph_axwmb_9puw2h2i5qrnvkuwx1a7d23ln9q30h_vulfs1x8iiya", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000003a-0000-0056-0000-000e00000038" + }, "id": "0000003a-0000-0056-0000-000e00000038" }, { "conversation_role": "_6hbn84l_4xly84ic0hrz_m4unx_i2_5sfotmu2xjmylyly_qilavdw54n1reep", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000007c-0000-0075-0000-006500000036" + }, "id": "0000007c-0000-0075-0000-006500000036" }, { "conversation_role": "u8r_c9n84lvf4v9i8c6tzre_e3jhp327b2vvubky8_25tf6x6cszt770uuuikdpofyu5oa7lyd", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000031-0000-0004-0000-005e00000060" + }, "id": "00000031-0000-0004-0000-005e00000060" }, { "conversation_role": "4agujelz62r_o96qfxja1h60hqmsbuowdhmqb1zvrlhtru6b66vl1lu5oc1", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000007b-0000-0019-0000-002a00000000" + }, "id": "0000007b-0000-0019-0000-002a00000000" }, { "conversation_role": "6o_85q3e0hn13mkqzstg29b3r29ezb52cl6a_1hhzpx1wtdkav8z8nhc8uk5jj3wsp16rn0wx0dbj9rqt", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000000c-0000-0069-0000-006600000032" + }, "id": "0000000c-0000-0069-0000-006600000032" }, { "conversation_role": "ii7eljki45zqe819xzx16tkvbgb85", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001d-0000-0006-0000-00540000005a" + }, "id": "0000001d-0000-0006-0000-00540000005a" }, { "conversation_role": "8fg3lg3rtnjamcshonl6ailheepmslbc_c3vgdhofs2hwbr84duunkatfkotiq246euejqre_sa4ygly", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000007f-0000-005d-0000-000700000035" + }, "id": "0000007f-0000-005d-0000-000700000035" }, { "conversation_role": "5moz9hri8wj07ilkxfcsubwzelf8bkv0vpyssxthz7nnwbthym1ux33bn682ddcbv91aq7oquc9osjow75iu75kjp0prd2zam_o_zixgv3", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000006b-0000-005e-0000-003d0000007c" + }, "id": "0000006b-0000-005e-0000-003d0000007c" }, { "conversation_role": "_xq9rxj1fopahja5o9av3g18y4ko17fzdjunr84k0_txycx3sd1sqn2k5_usv0l_007wdzjrnxcss4b32w4c1qe", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000005e-0000-000e-0000-00300000005f" + }, "id": "0000005e-0000-000e-0000-00300000005f" }, { "conversation_role": "h0q7fe607q9oaiw53dbfunmrlposh47fvaoe5mfg8rth7dzl8r0y759kclqbbqzt7zlbu090lkdberm0u78tb", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000060-0000-0000-0000-001e0000003b" + }, "id": "00000060-0000-0000-0000-001e0000003b" }, { "conversation_role": "rw50gu92raxvq87hqpf7r_xyl", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000030-0000-000e-0000-006f0000001d" + }, "id": "00000030-0000-000e-0000-006f0000001d" }, { "conversation_role": "5bizt8d567yjavituolq2unxfh0qyih7_9dep7cpix5bucbevifs2m0", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000003f-0000-005e-0000-003200000062" + }, "id": "0000003f-0000-005e-0000-003200000062" }, { "conversation_role": "1kit803b528tmtyvlkespy", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000002e-0000-007d-0000-005e0000004d" + }, "id": "0000002e-0000-007d-0000-005e0000004d" }, { "conversation_role": "74l03am2b", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000007c-0000-0013-0000-007100000049" + }, "id": "0000007c-0000-0013-0000-007100000049" }, { "conversation_role": "8ghe34e3xwi0i1e7cfe8ivltslpzuf15xadc7x5741tzeh1ne_v3m_xzjouowchqe5ubn0jptjorvxoksxwqowgp7oey9ptzpe2cegkplw3445q2z390sf1zy_09ngm", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000012-0000-0058-0000-00500000004d" + }, "id": "00000012-0000-0058-0000-00500000004d" }, { "conversation_role": "ui1_axn4co_y0u6a8yrmwsam6zar72jdpdorz8xyvxa1_gfd50r4gu47detfx0rgm6s9iqy2", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000060-0000-007f-0000-003c0000001d" + }, "id": "00000060-0000-007f-0000-003c0000001d" }, { "conversation_role": "32y4b84gygtg3xscfds0vu69bbsir8cbfh0_gmnh6hnbdr6md8807tuoi8ijtsfr2bkfd8d1vlacwytk55gr__t9f48uyd9p1fz07j20", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000034-0000-005a-0000-003600000063" + }, "id": "00000034-0000-005a-0000-003600000063" }, { "conversation_role": "wf0v8gr2oqqdm", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000006a-0000-007f-0000-006700000068" + }, "id": "0000006a-0000-007f-0000-006700000068" } ], @@ -109,6 +193,10 @@ ] }, "from": "00005a35-0000-3751-0000-76fe000044c2", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00005a35-0000-3751-0000-76fe000044c2" + }, "type": "conversation.member-join" } } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_4.json b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_4.json index c43ee0a32bb..cae4823aa42 100644 --- a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_4.json +++ b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_4.json @@ -1,5 +1,9 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "000057d8-0000-4ce9-0000-2a9a00001ced" + }, "conversation": "000057d8-0000-4ce9-0000-2a9a00001ced", "time": "1864-05-21T00:12:51.490Z", "data": { @@ -7,6 +11,10 @@ "access_role": "activated" }, "from": "00005b30-0000-0805-0000-116700000485", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00005b30-0000-0805-0000-116700000485" + }, "type": "conversation.access-update" } } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_5.json b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_5.json index 9b09ee4e5e1..333906d175f 100644 --- a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_5.json +++ b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_5.json @@ -1,5 +1,9 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00004615-0000-2e80-0000-552b0000353c" + }, "conversation": "00004615-0000-2e80-0000-552b0000353c", "time": "1864-04-14T01:56:55.057Z", "data": { @@ -11,6 +15,10 @@ "access_role": "activated" }, "from": "0000134e-0000-6a75-0000-470a00006537", + "qualified_from": { + "domain": "faraway.example.com", + "id": "0000134e-0000-6a75-0000-470a00006537" + }, "type": "conversation.access-update" } } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_6.json b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_6.json index 4238355db2f..89ed317e3ab 100644 --- a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_6.json +++ b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_6.json @@ -1,123 +1,243 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00002aa8-0000-7a99-0000-660700000bd3" + }, "conversation": "00002aa8-0000-7a99-0000-660700000bd3", "time": "1864-05-31T11:11:10.792Z", "data": { "users": [ { "conversation_role": "htshpkwocsefoqvjbzonewymi1zn8fpmdi1o8bwmm7fj161iortxvrz23lrjzabdmh6a55bb8cvq09xv6rq4qdtff95hkuqw4u8tj5ez9xx9cd7pvc_r67s2vw4m", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000041-0000-004b-0000-002300000030" + }, "id": "00000041-0000-004b-0000-002300000030" }, { "conversation_role": "j2dtw20p_p7_v96xvpsjwe9ww3eyi4zdq8xx2_cabuv0w21u_vz5l09abprf1hue25srgwrlgeszd1ce3mtgz5w", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000055-0000-0065-0000-005000000065" + }, "id": "00000055-0000-0065-0000-005000000065" }, { "conversation_role": "o7hm7tvk1opilxu1kc5chxj25scof183t5mdwhdkj0zjg7re3vbt5g8988z6gyu4p8sspu8fto0sko9e_m8pzk54zzvwz7vod927_jjcp3wg5jj9n2egwvi8", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000000e-0000-0042-0000-00580000000a" + }, "id": "0000000e-0000-0042-0000-00580000000a" }, { "conversation_role": "kf14jpkab__n0g0ssfw21_3q52t2op841s0zl8edy11acgb218rr4nmkodozdim", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000006b-0000-0080-0000-00360000000c" + }, "id": "0000006b-0000-0080-0000-00360000000c" }, { "conversation_role": "06i5vil75hof_mqn8_7cuglrizks", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000031-0000-0006-0000-003f00000069" + }, "id": "00000031-0000-0006-0000-003f00000069" }, { "conversation_role": "cux_igluvokgr7z7ikcqcmm9dhskcimfufmsxwb11vfv", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000006f-0000-0026-0000-006000000045" + }, "id": "0000006f-0000-0026-0000-006000000045" }, { "conversation_role": "es0p", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000002a-0000-0080-0000-003e00000014" + }, "id": "0000002a-0000-0080-0000-003e00000014" }, { "conversation_role": "w28vr_ps429op3rmp3sil1wogmfgf1dsxmmsx2u5smde8srbfb11opw0a_b5z9ywbu9q0yivoz2n70m808m6f1vtvcr6oeh05c20va1jh299hk6q950", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001d-0000-006f-0000-003e0000003d" + }, "id": "0000001d-0000-006f-0000-003e0000003d" }, { "conversation_role": "4pgdip19fs0", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000004c-0000-0065-0000-007d00000026" + }, "id": "0000004c-0000-0065-0000-007d00000026" }, { "conversation_role": "x76ykqupchbjeozez7aqxynobvjd38xuqb", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000028-0000-005b-0000-007d00000042" + }, "id": "00000028-0000-005b-0000-007d00000042" }, { "conversation_role": "fsttup8l4pwse5n72k34u_swxpalpgzl4gjnko0l7c3gxmu0x6l4nzbyzdcaxstr2iiuxb061f9", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000011-0000-0031-0000-001e00000055" + }, "id": "00000011-0000-0031-0000-001e00000055" }, { "conversation_role": "73c37ry1xfsx", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000039-0000-003b-0000-002200000013" + }, "id": "00000039-0000-003b-0000-002200000013" }, { "conversation_role": "51a4e2v57yge9xa_cc6mg67bix0exndp7swn_dppzuk8n5i19xsqaoqlkyv_x2hhv8h4uzkng185o5y_77189zvwk_y8sy1ynp5y8vo0e5p__kwlcl0yztuvtiyyr1", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000007c-0000-0065-0000-001b00000046" + }, "id": "0000007c-0000-0065-0000-001b00000046" }, { "conversation_role": "3qy1onol9hu2g4hql7ak8gyleg9a2dh0poq72b8opgm3140xjmrvlj0jtovjt3fpbar4x1i08lzdqndo7nhtczrrp9dahulq9fbuhfdrhu7n7kl6tkvu", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000034-0000-004c-0000-001c0000007c" + }, "id": "00000034-0000-004c-0000-001c0000007c" }, { "conversation_role": "lc4kukb759glnd3j1a5cd141a7a0h8pze2c78n8x3h_9mzn7v8jtfpsgqrvt9lca6l5f8oqk3yplig1ccl8", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000004-0000-0028-0000-002300000045" + }, "id": "00000004-0000-0028-0000-002300000045" }, { "conversation_role": "pfirchcrh2lo5pq1msq2x93tawq4v37onjphe9fcssiwfdpysse0dvk3ehupya4axtiq6ewmsjjj9xsaimlk0l70ovinyo5zmgil24ckv_fd2v_h4fx9i2s", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000000f-0000-007d-0000-00650000006b" + }, "id": "0000000f-0000-007d-0000-00650000006b" }, { "conversation_role": "2130v11uf_bzjod2p35u_vhotitn", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000006c-0000-0028-0000-004000000067" + }, "id": "0000006c-0000-0028-0000-004000000067" }, { "conversation_role": "6idgmk_1d_g5ii1sfpfcrenr8m2afbe2d71llw8xrlzdhxw_g7vn3foj5_abaul9j71_", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000059-0000-007e-0000-00580000006c" + }, "id": "00000059-0000-007e-0000-00580000006c" }, { "conversation_role": "c9ycux2q_6sj1hecc_cvkz6aupdm4g5rc3gzyw9cnd0wqd0miltcb1i0q6tietu0w7khbhg8fx3z600fgsr2m3rj0mxs1pqwblnhazp1f23t", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000007f-0000-0057-0000-004c00000005" + }, "id": "0000007f-0000-0057-0000-004c00000005" }, { "conversation_role": "57guddz98hnzetk8xjme1h_gtmczis9jv3xt73rtjgz6jsentre2s7d2", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000004a-0000-000b-0000-001000000004" + }, "id": "0000004a-0000-000b-0000-001000000004" }, { "conversation_role": "x0qcthwpdmzimnfqh4rd4sf", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000000a-0000-0039-0000-005c00000048" + }, "id": "0000000a-0000-0039-0000-005c00000048" }, { "conversation_role": "xdobrq683oi0lbxoy9ociqkouclsen5wu8suhbj75co521ipa89bnc7nh3y41fg58bxlet5u0wg94ueejw05iu15zr1kno_oxiqlhx9s9i9zd8ksyb4", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000006a-0000-000d-0000-006300000074" + }, "id": "0000006a-0000-000d-0000-006300000074" }, { "conversation_role": "9ble9wkz5sx4fof474zgb", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000003-0000-0078-0000-00310000002b" + }, "id": "00000003-0000-0078-0000-00310000002b" }, { "conversation_role": "6x00nd8of9_prpikunwo7292vzgp6qivsia735dns1s395syckletc2smrzxezrsn1hgjjvenm", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000006-0000-0042-0000-007e00000013" + }, "id": "00000006-0000-0042-0000-007e00000013" }, { "conversation_role": "dd2lcxld259xsjsqz2h130ksyeixe21s87mhwa7tas1k_ttqefg66ga13x7ixlfuuiaj5p8i16nn6pf3sbn25p8s4ld9virn3tf", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000002d-0000-0043-0000-004f00000078" + }, "id": "0000002d-0000-0043-0000-004f00000078" }, { "conversation_role": "jiyr52auzomq5ui457z209fcszalvj_wy09_zgc05pfp9x304nwxni", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000015-0000-0069-0000-005400000018" + }, "id": "00000015-0000-0069-0000-005400000018" }, { "conversation_role": "ldesfdsha0z3olxjyjkijtud5z2ns5oxb5h1vbbamtgymlnmjg4ybed_tfhvntcdr1h78ihk5ztwd27vtiy", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000064-0000-007d-0000-006b00000055" + }, "id": "00000064-0000-007d-0000-006b00000055" }, { "conversation_role": "hcfut6_dj", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000006d-0000-007a-0000-007a00000017" + }, "id": "0000006d-0000-007a-0000-007a00000017" }, { "conversation_role": "q5_32a257neednc3", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000005-0000-0065-0000-002600000007" + }, "id": "00000005-0000-0065-0000-002600000007" } ], @@ -154,6 +274,10 @@ ] }, "from": "000036f7-0000-6d15-0000-0ff200006a4c", + "qualified_from": { + "domain": "faraway.example.com", + "id": "000036f7-0000-6d15-0000-0ff200006a4c" + }, "type": "conversation.member-join" } } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_7.json b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_7.json index e21de7f128d..088e1c2dac3 100644 --- a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_7.json +++ b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_7.json @@ -1,5 +1,9 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "00006a93-0000-005c-0000-361e00000180" + }, "conversation": "00006a93-0000-005c-0000-361e00000180", "time": "1864-04-25T18:08:10.735Z", "data": { @@ -8,6 +12,10 @@ "recipient": "1c" }, "from": "00007bb6-0000-07cc-0000-687c00002703", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00007bb6-0000-07cc-0000-687c00002703" + }, "type": "conversation.otr-message-add" } } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_8.json b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_8.json index c3f20d636cc..1788d3288ed 100644 --- a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_8.json +++ b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_8.json @@ -1,5 +1,9 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "000022d4-0000-6167-0000-519f0000134c" + }, "conversation": "000022d4-0000-6167-0000-519f0000134c", "time": "1864-05-29T09:46:28.943Z", "data": { @@ -9,6 +13,10 @@ "recipient": "00000004-0000-0002-0000-000300000006" }, "from": "0000200d-0000-386f-0000-0de000003b71", + "qualified_from": { + "domain": "faraway.example.com", + "id": "0000200d-0000-386f-0000-0de000003b71" + }, "type": "conversation.connect-request" } } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_9.json b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_9.json index fb3cccc42f8..f017e7589b7 100644 --- a/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_9.json +++ b/libs/wire-api/test/golden/testObject_RemoveBotResponse_user_9.json @@ -1,5 +1,9 @@ { "event": { + "qualified_conversation": { + "domain": "faraway.example.com", + "id": "0000324b-0000-23a4-0000-0fbb00006c87" + }, "conversation": "0000324b-0000-23a4-0000-0fbb00006c87", "time": "1864-05-18T05:11:02.885Z", "data": { @@ -8,6 +12,10 @@ "recipient": "19" }, "from": "00006234-0000-7d47-0000-0b95000079f2", + "qualified_from": { + "domain": "faraway.example.com", + "id": "00006234-0000-7d47-0000-0b95000079f2" + }, "type": "conversation.otr-message-add" } } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_SimpleMember_user_1.json b/libs/wire-api/test/golden/testObject_SimpleMember_user_1.json index 2ae6de62221..80eaac005a9 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMember_user_1.json +++ b/libs/wire-api/test/golden/testObject_SimpleMember_user_1.json @@ -1,4 +1,8 @@ { - "conversation_role": "qbyp4d5whcwd0owjlrr6oktss00oxflwtid8_ram9r3c2nywq7skew91tok1xxivpkbw6n5l8o5ww4zm220_3pozpvt0obaicadhku7f6e93", + "conversation_role": "wire_admin", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000003a-0000-0042-0000-007500000037" + }, "id": "0000003a-0000-0042-0000-007500000037" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_SimpleMember_user_10.json b/libs/wire-api/test/golden/testObject_SimpleMember_user_10.json index f79a59e92e3..207a5662724 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMember_user_10.json +++ b/libs/wire-api/test/golden/testObject_SimpleMember_user_10.json @@ -1,4 +1,8 @@ { "conversation_role": "paru", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001d-0000-000f-0000-002900000072" + }, "id": "0000001d-0000-000f-0000-002900000072" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_SimpleMember_user_11.json b/libs/wire-api/test/golden/testObject_SimpleMember_user_11.json index 21a560fe824..bd484ba060c 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMember_user_11.json +++ b/libs/wire-api/test/golden/testObject_SimpleMember_user_11.json @@ -1,4 +1,8 @@ { "conversation_role": "e0u15rrzql4y8jymut86vv84l4tjzpfti0_b1w44gy13j3d0dq1y22ws75tkgd4n_9tju4pq34_ddk_g9qpypwu4z3b5", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000007d-0000-0076-0000-001e00000019" + }, "id": "0000007d-0000-0076-0000-001e00000019" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_SimpleMember_user_12.json b/libs/wire-api/test/golden/testObject_SimpleMember_user_12.json index ddfdbc75881..17bf66944e4 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMember_user_12.json +++ b/libs/wire-api/test/golden/testObject_SimpleMember_user_12.json @@ -1,4 +1,8 @@ { "conversation_role": "telj17ej33ilgtqvqajp0ofng9qm6v9b1n32n_l6_vw_xxtk4o7n6r50ea3w1xgzh3eapah1jytfpz0f65utf9xqc4pv", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000003c-0000-0001-0000-004a00000014" + }, "id": "0000003c-0000-0001-0000-004a00000014" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_SimpleMember_user_13.json b/libs/wire-api/test/golden/testObject_SimpleMember_user_13.json index b372b9d712c..84463a68ceb 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMember_user_13.json +++ b/libs/wire-api/test/golden/testObject_SimpleMember_user_13.json @@ -1,4 +1,8 @@ { "conversation_role": "bfamau83n6sskso4rod8fz1tb4tf1zfz8mfd1v0ae1sx17po1", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000052-0000-002c-0000-004500000067" + }, "id": "00000052-0000-002c-0000-004500000067" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_SimpleMember_user_14.json b/libs/wire-api/test/golden/testObject_SimpleMember_user_14.json index b54edbc0d6c..4f9ce06a973 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMember_user_14.json +++ b/libs/wire-api/test/golden/testObject_SimpleMember_user_14.json @@ -1,4 +1,8 @@ { "conversation_role": "tu7zi7d5va224nfegt84g0argkadivw4hlvkj_bpixff19r8j2lf1uhde2rex9ery9xskxm2f_2mpbgutdj6kt56n5proalpciwttcomv3j1pzev6qw3ism", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000018-0000-006d-0000-000600000017" + }, "id": "00000018-0000-006d-0000-000600000017" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_SimpleMember_user_15.json b/libs/wire-api/test/golden/testObject_SimpleMember_user_15.json index 6f1e3dbd8dd..4d0e2fcf4ba 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMember_user_15.json +++ b/libs/wire-api/test/golden/testObject_SimpleMember_user_15.json @@ -1,4 +1,8 @@ { "conversation_role": "rt25zies0df", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000006e-0000-0037-0000-00610000007e" + }, "id": "0000006e-0000-0037-0000-00610000007e" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_SimpleMember_user_16.json b/libs/wire-api/test/golden/testObject_SimpleMember_user_16.json index bc05f792679..06b82a17bbf 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMember_user_16.json +++ b/libs/wire-api/test/golden/testObject_SimpleMember_user_16.json @@ -1,4 +1,8 @@ { "conversation_role": "pknq1f2x", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000042-0000-006a-0000-000800000052" + }, "id": "00000042-0000-006a-0000-000800000052" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_SimpleMember_user_17.json b/libs/wire-api/test/golden/testObject_SimpleMember_user_17.json index c09e3bf0cc2..eb9e4b7ab4b 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMember_user_17.json +++ b/libs/wire-api/test/golden/testObject_SimpleMember_user_17.json @@ -1,4 +1,8 @@ { "conversation_role": "w1bcl23oz4ax6dg14h3y8nxqb77sx9ajonsvx7qd", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000020-0000-0000-0000-00500000005c" + }, "id": "00000020-0000-0000-0000-00500000005c" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_SimpleMember_user_18.json b/libs/wire-api/test/golden/testObject_SimpleMember_user_18.json index 0c046f51efd..bf78e9cbd6c 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMember_user_18.json +++ b/libs/wire-api/test/golden/testObject_SimpleMember_user_18.json @@ -1,4 +1,8 @@ { "conversation_role": "u1c8n7lhvsnr5cdavje5wbezt4an_h92yp0bma6l_6h6dn67lh8_jpk8_eznfja7qhh7wkczfanq5esl7b9y2g16afnnsvgt6i48pmjeo1msq7uuvm", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000049-0000-000c-0000-004d00000043" + }, "id": "00000049-0000-000c-0000-004d00000043" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_SimpleMember_user_19.json b/libs/wire-api/test/golden/testObject_SimpleMember_user_19.json index 41c9dc5beeb..f87a616748f 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMember_user_19.json +++ b/libs/wire-api/test/golden/testObject_SimpleMember_user_19.json @@ -1,4 +1,8 @@ { "conversation_role": "jzmvwd4h3ji2yc2wbog57546ono56qpsobzbszmed5y5436ub8lrvfydxmfleq4j6yj04vdivxpagt5lm5luplyy9zwcbjwyhgcom2njlzvj3ydbmol2onhp75p3", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000031-0000-003d-0000-003800000024" + }, "id": "00000031-0000-003d-0000-003800000024" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_SimpleMember_user_2.json b/libs/wire-api/test/golden/testObject_SimpleMember_user_2.json index 43ff6af0860..67ad5b26c31 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMember_user_2.json +++ b/libs/wire-api/test/golden/testObject_SimpleMember_user_2.json @@ -1,4 +1,8 @@ { - "conversation_role": "ofyvdxbbaf291eyoxm1i16mv2wfa52snql2p9os7shshqpfiw7ivbstjt_nkdqt6_9lz3on3r1nnur8ydc4xae4xf8i2iuu7", + "conversation_role": "wire_member", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000046-0000-0027-0000-003c00000022" + }, "id": "00000046-0000-0027-0000-003c00000022" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_SimpleMember_user_20.json b/libs/wire-api/test/golden/testObject_SimpleMember_user_20.json index 26843e231a1..7d86e716092 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMember_user_20.json +++ b/libs/wire-api/test/golden/testObject_SimpleMember_user_20.json @@ -1,4 +1,8 @@ { "conversation_role": "qbb0jgv5yq8ur0ogawcj0gx3f6yau5cnc5x3q8rnq5pn3mn4160ipvryoa2cpz0beg34ur64klqk5a2r9rqvc38w_gp6rbli54r46417_5mmylx5usc9", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000074-0000-0010-0000-001600000078" + }, "id": "00000074-0000-0010-0000-001600000078" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_SimpleMember_user_3.json b/libs/wire-api/test/golden/testObject_SimpleMember_user_3.json index 6d921ea4049..b74eaec28bc 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMember_user_3.json +++ b/libs/wire-api/test/golden/testObject_SimpleMember_user_3.json @@ -1,4 +1,8 @@ { "conversation_role": "7uzp7961dyf_666xqxwvq6uro", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000039-0000-0070-0000-005700000019" + }, "id": "00000039-0000-0070-0000-005700000019" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_SimpleMember_user_4.json b/libs/wire-api/test/golden/testObject_SimpleMember_user_4.json index 0900badd54f..f834cecdf8f 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMember_user_4.json +++ b/libs/wire-api/test/golden/testObject_SimpleMember_user_4.json @@ -1,4 +1,8 @@ { "conversation_role": "4vr9oed4nvhs625ri_cz1cv5kodntk3edmkpu", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000007c-0000-0075-0000-005b00000049" + }, "id": "0000007c-0000-0075-0000-005b00000049" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_SimpleMember_user_5.json b/libs/wire-api/test/golden/testObject_SimpleMember_user_5.json index a29b57cf485..3117b34574c 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMember_user_5.json +++ b/libs/wire-api/test/golden/testObject_SimpleMember_user_5.json @@ -1,4 +1,8 @@ { "conversation_role": "wst92x", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000004c-0000-004e-0000-002400000009" + }, "id": "0000004c-0000-004e-0000-002400000009" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_SimpleMember_user_6.json b/libs/wire-api/test/golden/testObject_SimpleMember_user_6.json index c4c6b935e3b..75de83ef78a 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMember_user_6.json +++ b/libs/wire-api/test/golden/testObject_SimpleMember_user_6.json @@ -1,4 +1,8 @@ { "conversation_role": "nkyx6ypx0p0b_fvx6mt6w5w6n2qpivv9svj2myn5n86isy7n2e07m92t7ostflj4lq1py50bqzdi4smzd", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000052-0000-0053-0000-000400000000" + }, "id": "00000052-0000-0053-0000-000400000000" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_SimpleMember_user_7.json b/libs/wire-api/test/golden/testObject_SimpleMember_user_7.json index 72cbc5734fc..cc213dd2767 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMember_user_7.json +++ b/libs/wire-api/test/golden/testObject_SimpleMember_user_7.json @@ -1,4 +1,8 @@ { "conversation_role": "d8027w_w7pr9fj", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000003d-0000-006f-0000-00480000006e" + }, "id": "0000003d-0000-006f-0000-00480000006e" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_SimpleMember_user_8.json b/libs/wire-api/test/golden/testObject_SimpleMember_user_8.json index 28c8f155f06..7c4a65c39d4 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMember_user_8.json +++ b/libs/wire-api/test/golden/testObject_SimpleMember_user_8.json @@ -1,4 +1,8 @@ { "conversation_role": "_rgnqtn1bdc2eb4nr8ilpka1sm6kt5bvonqm742npdpro1s4b_ydcahfm4q7i0getmnp0vdpod_eye8c_1kb72d_96qypb", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000004c-0000-006c-0000-000800000044" + }, "id": "0000004c-0000-006c-0000-000800000044" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_SimpleMember_user_9.json b/libs/wire-api/test/golden/testObject_SimpleMember_user_9.json index 8bf44b313b5..c247cf598ac 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMember_user_9.json +++ b/libs/wire-api/test/golden/testObject_SimpleMember_user_9.json @@ -1,4 +1,8 @@ { "conversation_role": "sr5pfubd0_cpdp", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000000a-0000-007a-0000-003f0000001b" + }, "id": "0000000a-0000-007a-0000-003f0000001b" } \ No newline at end of file diff --git a/libs/wire-api/test/golden/testObject_SimpleMembers_user_1.json b/libs/wire-api/test/golden/testObject_SimpleMembers_user_1.json index e15ac4adc3a..28d67a6c568 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMembers_user_1.json +++ b/libs/wire-api/test/golden/testObject_SimpleMembers_user_1.json @@ -2,74 +2,146 @@ "users": [ { "conversation_role": "py49zu8bed53ta2nhrhtkv1ck923pk8x70h1zzgp1h15yf6_vcqq7aeckcwpgonge096jg1l2xm4qogs3gucm_s8c_djl718bnwnm6x16rtxttlb47fiazreiew8", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000048-0000-0011-0000-002300000050" + }, "id": "00000048-0000-0011-0000-002300000050" }, { "conversation_role": "qslp25fyjfvydgtfk3v3ibh8eqdq3kpek7rb11xteg2y5_0a1mv14v5n79jznd5zjfes70nqyeacesqi8v62fmzsc_4zss75er", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000030-0000-003d-0000-00620000002a" + }, "id": "00000030-0000-003d-0000-00620000002a" }, { "conversation_role": "n0_wuagfmm6ltcjr0n2ib7l2mdg3i0zwtzmb6aribmg2107sirkgo17wjt9d2h66nj3lerw_blivsh6by09a", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001f-0000-002b-0000-005500000013" + }, "id": "0000001f-0000-002b-0000-005500000013" }, { "conversation_role": "4q8i3kin7cuo_xpa", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000062-0000-0017-0000-005a00000019" + }, "id": "00000062-0000-0017-0000-005a00000019" }, { "conversation_role": "e52wem88ym9kubyydku", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000065-0000-002e-0000-00730000002f" + }, "id": "00000065-0000-002e-0000-00730000002f" }, { "conversation_role": "yson37f_88qcp5chnwpjnwin427qoptb7bmlx5u2454vw95vvt241red8i1pkavlha4l9vx3cr1ajgklb", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000048-0000-0068-0000-002300000042" + }, "id": "00000048-0000-0068-0000-002300000042" }, { "conversation_role": "q24o118lbfa5zisiltltauh2qyf2lo_vu10hohqtf157wiasc4old5lwbn0g5xarmmu91kfqczv1om08v81k_a", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000021-0000-0057-0000-005d00000055" + }, "id": "00000021-0000-0057-0000-005d00000055" }, { "conversation_role": "0otsqpgjh2ctmp22nsof114767_vow59km_e", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000080-0000-0071-0000-003400000066" + }, "id": "00000080-0000-0071-0000-003400000066" }, { "conversation_role": "406ogeb8o68w", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000036-0000-0050-0000-002a0000005b" + }, "id": "00000036-0000-0050-0000-002a0000005b" }, { "conversation_role": "vgwq1mfqei0embh6msg2q0ucobreh9jl61ql0fge66e9xe", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000044-0000-0025-0000-002e00000026" + }, "id": "00000044-0000-0025-0000-002e00000026" }, { "conversation_role": "rmv3a7k_p9vlj1l324wnlko6fa0ve13nnf9n0qmey0dgacxewoyss9wih9k0oddw3q634r8ewtj43os8jwg5ka7m58vcqlq2ci6n0a139_g3avnchq9uvi0", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000059-0000-0000-0000-002e0000002d" + }, "id": "00000059-0000-0000-0000-002e0000002d" }, { "conversation_role": "9pryu0zv3nw_xtb3xr1naukqs0e", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000014-0000-0003-0000-002600000025" + }, "id": "00000014-0000-0003-0000-002600000025" }, { "conversation_role": "iy", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000002c-0000-0006-0000-007300000061" + }, "id": "0000002c-0000-0006-0000-007300000061" }, { "conversation_role": "bv0fkxi4521qi41njnulwsz6lp4qwsm0mgbkis1pwjc4bxatdie460vepfj11u_osup17wizy3clm31t_z827yzkw_zcgs", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000003f-0000-002c-0000-00670000002f" + }, "id": "0000003f-0000-002c-0000-00670000002f" }, { "conversation_role": "5v6_cttr3ctgrijw4h1_gsyi41f4t3dgyh64dhcgeoxvao1h68", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000006c-0000-0072-0000-00400000002d" + }, "id": "0000006c-0000-0072-0000-00400000002d" }, { "conversation_role": "x0", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000064-0000-0070-0000-000800000049" + }, "id": "00000064-0000-0070-0000-000800000049" }, { "conversation_role": "ss07m2lagw1v7yvn_swpeauvqdyktrcjreq86gx7shm4xkc3rtimrykvblvtc52pnc8obmsdz475yeet1sxlp0hq7wcaagr2hdi7a7d801khmybj", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000006a-0000-002e-0000-006000000070" + }, "id": "0000006a-0000-002e-0000-006000000070" }, { "conversation_role": "vb_ng523gxc0ci13cmxscmusff8uw12hvbsvfsa", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000059-0000-005a-0000-002300000061" + }, "id": "00000059-0000-005a-0000-002300000061" } ], diff --git a/libs/wire-api/test/golden/testObject_SimpleMembers_user_10.json b/libs/wire-api/test/golden/testObject_SimpleMembers_user_10.json index 08ea26e15dd..0b9e7a7d9ae 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMembers_user_10.json +++ b/libs/wire-api/test/golden/testObject_SimpleMembers_user_10.json @@ -2,14 +2,26 @@ "users": [ { "conversation_role": "buaqu8i1j2czfkdn3jyq1u3m5w3ohl9tuy9c8kihit3s9cax_4f62sr7kj7wfk6gtf6bsrkl6fcvh59idymwykehmvnqfo232q4m2gnc05237ikemuoto", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000047-0000-0044-0000-005c0000003c" + }, "id": "00000047-0000-0044-0000-005c0000003c" }, { "conversation_role": "64s251imkzo_1fnf4o14i68wjowm02yfae3casjqc6fo_qjhhep50tjlir_i1ggt5qfri_1lk07y7ue81lwykuv9m2se6t8rtkm98zaz1k30", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000068-0000-006a-0000-002c00000071" + }, "id": "00000068-0000-006a-0000-002c00000071" }, { "conversation_role": "5eugts7sax037o6wowr1yoccc3hp8t226kk3y6h0dqdljvkktrxse2ci788qpulg7o48nco0x5jn1ahwll0vmsmpdzx_oqt9bpejkcd6w2sqrevyfoxei", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000040-0000-0068-0000-001300000019" + }, "id": "00000040-0000-0068-0000-001300000019" } ], diff --git a/libs/wire-api/test/golden/testObject_SimpleMembers_user_11.json b/libs/wire-api/test/golden/testObject_SimpleMembers_user_11.json index 8ac7af26fd7..773cc8c4c30 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMembers_user_11.json +++ b/libs/wire-api/test/golden/testObject_SimpleMembers_user_11.json @@ -2,110 +2,218 @@ "users": [ { "conversation_role": "yprw788nm_1n_l3i6g1xn1xjokilmavqko9otxa26hobs7e7s1fgruka4iom01i00aoyui37so", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000069-0000-0074-0000-006800000058" + }, "id": "00000069-0000-0074-0000-006800000058" }, { "conversation_role": "095o8ll6js3jmhid4vk1j7vc2x_cxq4u7wqr8quf2ndx7wre1525bpa89_k5b6bvy8ypjlkk5xe1u7jqy40dk7blp3fmp0l1vfzg1em2pkpv8dtzp50rgqy_s1c", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001c-0000-007e-0000-003300000074" + }, "id": "0000001c-0000-007e-0000-003300000074" }, { "conversation_role": "n9yc3pd38tzb9y_h0oi_d_4r01bpumk0puut8s72kdztlrl3k89d49_07kz_z2br0vey8b1fyo4o_45j7vrpz3wiyrdsjr6l3rg8lwhwk_u5flh_62ld3t", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000025-0000-0064-0000-007000000046" + }, "id": "00000025-0000-0064-0000-007000000046" }, { "conversation_role": "15firv29l22tvugxzg9x0g59_29h02jqnfg9c5p5e7tr2m64u5bnmsp1fzs8mcvqsb17ym4k1q1ap96v9wxgs1", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000037-0000-000a-0000-00140000001a" + }, "id": "00000037-0000-000a-0000-00140000001a" }, { "conversation_role": "tddu3qs3p60da19ibmx92unwy8mu9goocijbeamqw4bn3d5kt6_zkm2x1j2mawr_ygt", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000004b-0000-004b-0000-005000000005" + }, "id": "0000004b-0000-004b-0000-005000000005" }, { "conversation_role": "_ooid3_m9x6065k4n_ka4m0n9hf9anvvmlosi6v4a9e7960cc1elsy7h_7i_bjq3573eh2q7d65zhsqkc69uef7lnv4qqnr8disz4y3idhnvvw_7z8", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000005b-0000-004a-0000-000f00000029" + }, "id": "0000005b-0000-004a-0000-000f00000029" }, { "conversation_role": "u757zclatb90zyqr29fhuyho0ll2ks90fjji59df50j5aj4tga82k5qsv6ltqbabgx2j3tiofb1iorkzw_d6mhe_g9lzt8cb0iqwa7vag0pqrwfhs5lf7b8qm9f", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000069-0000-003e-0000-002300000076" + }, "id": "00000069-0000-003e-0000-002300000076" }, { "conversation_role": "ku38a6jk6fswgsgegqka_b33d6gqkwcy7egbx2rpr4pyravsymugig8l6flqxjyyl", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000003e-0000-0047-0000-005e0000006a" + }, "id": "0000003e-0000-0047-0000-005e0000006a" }, { "conversation_role": "x3th543fq4asgv", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000003d-0000-0034-0000-001100000003" + }, "id": "0000003d-0000-0034-0000-001100000003" }, { "conversation_role": "qc679x0r4twf5feu87fjf1dukbgbjil0otcoyim397", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000042-0000-0018-0000-006f00000063" + }, "id": "00000042-0000-0018-0000-006f00000063" }, { "conversation_role": "neniwbge16i_igh4jj_02qflp698pz5xy6hv435ma6q2qlxn3dyz2oao0b43gg93m", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000066-0000-0065-0000-00640000006c" + }, "id": "00000066-0000-0065-0000-00640000006c" }, { "conversation_role": "mbsnb3cb9i2dxlbz6h0l9_ocpa6zdmtt6708g6bi6b5o59v3s", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000005b-0000-0068-0000-006300000031" + }, "id": "0000005b-0000-0068-0000-006300000031" }, { "conversation_role": "bv8e7m3xfc3bt639goa1tied4", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000025-0000-000d-0000-000000000008" + }, "id": "00000025-0000-000d-0000-000000000008" }, { "conversation_role": "oejuw0rpkxojd7lwdvvmypnw5jga0w0i7kf84ryviznjgm_3nd1ls5ykcij2b_xqx9dc36hafa1lvk4x_vo_", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000010-0000-0007-0000-005700000011" + }, "id": "00000010-0000-0007-0000-005700000011" }, { "conversation_role": "nzqm5_qyv5uj1f47xveo_2hlkqt5n6jrb5o14invzlhe2ddo66", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000059-0000-0001-0000-005e00000073" + }, "id": "00000059-0000-0001-0000-005e00000073" }, { "conversation_role": "i2_ymg4hcm7bl3ll_9azdlhrur24lolk388v7o2dz1d_zvgyi4btbztoucql64gwoxoilsegph5rpc6n6u2tj9uunlgk29xvqntt8_q41l0cuc7pof26ea5wbzg91e3w", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000063-0000-0061-0000-005f00000045" + }, "id": "00000063-0000-0061-0000-005f00000045" }, { "conversation_role": "o7n8q1ocx3r99s32sb4_3xg24xz1akvsjebh_kn5cgaxo3e9j5f31cuewnzay80hngq6jjmpqxzde9da5etny", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000002e-0000-001e-0000-00350000001a" + }, "id": "0000002e-0000-001e-0000-00350000001a" }, { "conversation_role": "32ph0fihxtoawktwdjjd8680nz_mx8tlawldvwm8jba2kjd6tjwi4obhmpnnfqzcdcz31y_1e00gtmrugnjfwh8_nmhgca17jla9s9yy9q", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000013-0000-005c-0000-006100000023" + }, "id": "00000013-0000-005c-0000-006100000023" }, { "conversation_role": "c3ydrescfgmvsgks6xy866xluancois0b4vl6ypsl6810rlnu", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000000e-0000-0031-0000-00300000000c" + }, "id": "0000000e-0000-0031-0000-00300000000c" }, { "conversation_role": "nvmtteg8vpg28a9srnw_vn7er1krdecoovramdcin7qdpvrx6bildn885wlfcav9nooubk1hs6g0u5v1v8t0p8vip08o2x1pqj", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000007e-0000-002a-0000-007c0000004f" + }, "id": "0000007e-0000-002a-0000-007c0000004f" }, { "conversation_role": "bhpymrq9y__8p", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000011-0000-001e-0000-001e00000054" + }, "id": "00000011-0000-001e-0000-001e00000054" }, { "conversation_role": "mmhox9z9kjhkvj_0l8me0ecnp1m2slotp389sts11f43v71arii5z19n8tb6ct2d4hyyjd45vvwwa_qtuejbwvguyje", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000005f-0000-000d-0000-004e00000016" + }, "id": "0000005f-0000-000d-0000-004e00000016" }, { "conversation_role": "xyep0gej_kghofx50j3bbolxbm2i58wwp0t_l0pscq4", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001f-0000-005c-0000-00570000002a" + }, "id": "0000001f-0000-005c-0000-00570000002a" }, { "conversation_role": "5ozb9c3tnkwaiu4bpw2_nn1o3ib55gjnwen6lw4ltaoitt0ngnxbwahqj631w3pfgphrp0yoh19ip0qfn29p84zijlnystitjm8_v39o4swr2xs3ahs8s2", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000003-0000-0050-0000-00110000004d" + }, "id": "00000003-0000-0050-0000-00110000004d" }, { "conversation_role": "04n6", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000055-0000-006f-0000-002f0000007a" + }, "id": "00000055-0000-006f-0000-002f0000007a" }, { "conversation_role": "m1vbstno19orwr77zwq8q8ak1xxdhotqyn30kdv9fq44n2zr0rn46gqfrw8lxp7mt7eywgku3gudup", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000005a-0000-0067-0000-00600000006b" + }, "id": "0000005a-0000-0067-0000-00600000006b" }, { "conversation_role": "v_ahoalwm78dh_ggai7wusblsnlwhibegsuxe5w1ibm2cnj79a64r_s72hwigx1cw", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000048-0000-007b-0000-001500000034" + }, "id": "00000048-0000-007b-0000-001500000034" } ], diff --git a/libs/wire-api/test/golden/testObject_SimpleMembers_user_12.json b/libs/wire-api/test/golden/testObject_SimpleMembers_user_12.json index 6173c18c925..87a716ba820 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMembers_user_12.json +++ b/libs/wire-api/test/golden/testObject_SimpleMembers_user_12.json @@ -2,74 +2,146 @@ "users": [ { "conversation_role": "r812vw__xb9t_hgb5ryc52eujh_ss6aem87h1hakj2u8wvjshpwqrar6ndm5cuka0pkezokcvziv93_8ay2q5a", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000003b-0000-0016-0000-003600000008" + }, "id": "0000003b-0000-0016-0000-003600000008" }, { "conversation_role": "xf6x34y4hcbgklhrr9a7jkjiclu5dv89m59b5sn40ui8iof88mse47t57ti7zch5cf866tzqua171us", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000056-0000-0050-0000-00040000006d" + }, "id": "00000056-0000-0050-0000-00040000006d" }, { "conversation_role": "07bbbbgwl0gkv1pfj719wn3z0n8nehby_fk3h6gs39csow68u4_3pbly54fqkng37jqxwr6ym6injx", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000006e-0000-004e-0000-005200000050" + }, "id": "0000006e-0000-004e-0000-005200000050" }, { "conversation_role": "bj5m", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000069-0000-001a-0000-005c0000007b" + }, "id": "00000069-0000-001a-0000-005c0000007b" }, { "conversation_role": "ze5lhmk1d8rrjto9615pcoluink8ybkouqa90kogtrbokfv2tdbypoi8inkbi9snsymli7r9bk_ilqjq8ktb7ia2nr2bf6k667nry", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000004d-0000-0002-0000-005700000067" + }, "id": "0000004d-0000-0002-0000-005700000067" }, { "conversation_role": "z3dbyprvipeu8kl4fabnh24fo77t7gqcs0chxw34ovuru0mxeu6e_jl3s744uggcnwqcyhuzkn1ueko_k0", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001b-0000-0076-0000-002800000008" + }, "id": "0000001b-0000-0076-0000-002800000008" }, { "conversation_role": "sq4pc2q1xo14fl8yiegpw0_5y24vohkynzm6zselylhu2xtd3vi4w7odhh1yv9ux01q31s02lv0p337do46bqsjfjywxu1mv", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000032-0000-0007-0000-000400000047" + }, "id": "00000032-0000-0007-0000-000400000047" }, { "conversation_role": "dnrdny", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000054-0000-0055-0000-002800000002" + }, "id": "00000054-0000-0055-0000-002800000002" }, { "conversation_role": "gf52", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001c-0000-004b-0000-002c00000037" + }, "id": "0000001c-0000-004b-0000-002c00000037" }, { "conversation_role": "yo2r0bi1rrfg2rws_v18eravmdit0igdaksg3atrzjek7u03ip5fjoo6stxjn2xpie700ejkalgzw0zhl3t3j_", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000034-0000-007e-0000-006100000061" + }, "id": "00000034-0000-007e-0000-006100000061" }, { "conversation_role": "hnoqjm2owsv7yrc899nidzee4ib07r40vfplmxyi9_uf2l49gd5htfmckn3bscip7tygw5hc1bdnd66i9ojjc0bzrpxq9blro73yov2xsb940g7dnijsvvkji", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000030-0000-000b-0000-00790000002a" + }, "id": "00000030-0000-000b-0000-00790000002a" }, { "conversation_role": "gnpcz5crw82yyqtlvvvfdps3b5uxqr0a", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000004f-0000-0043-0000-004c0000002b" + }, "id": "0000004f-0000-0043-0000-004c0000002b" }, { "conversation_role": "h84nu68fxxen4b8d5i8br4gixwyntx3o597v_ds147th29_vkuxblstg9af6x3p7", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000079-0000-004b-0000-005e00000033" + }, "id": "00000079-0000-004b-0000-005e00000033" }, { "conversation_role": "uboc5sab9w92", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000003b-0000-006c-0000-000f00000059" + }, "id": "0000003b-0000-006c-0000-000f00000059" }, { "conversation_role": "1mcw_zxelu_doxdkqrc5tf660toco4vdv99oecl106z1ygzfnqo6buoysg_s", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000080-0000-001e-0000-002100000043" + }, "id": "00000080-0000-001e-0000-002100000043" }, { "conversation_role": "jv38u3mzfcdi7xln9al3yepden29o1y6a1xtblfi98cg_bpehklvyf8twyfwinev0ozfokbw71iyh_98ajkyd2z1c2d3a9c09ig14r0tcwy6pqpo", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000069-0000-0047-0000-00000000004e" + }, "id": "00000069-0000-0047-0000-00000000004e" }, { "conversation_role": "v5l6fw_m_1lakwhcd6g0uz0gpba82jwjdad0qyypc0plx1t1hnu_6zhi3cg6cy25rj3l5aj50pezusaueat8mnfkj_uescuilehc6b6prp8f4lm_ae0dxxvwp3rgu2e", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001d-0000-007e-0000-004300000036" + }, "id": "0000001d-0000-007e-0000-004300000036" }, { "conversation_role": "xyb65ic8vzt9x9k1i_a81f6cngzuoii", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000061-0000-005f-0000-00280000002d" + }, "id": "00000061-0000-005f-0000-00280000002d" } ], diff --git a/libs/wire-api/test/golden/testObject_SimpleMembers_user_13.json b/libs/wire-api/test/golden/testObject_SimpleMembers_user_13.json index 4e6655a9acf..0a3846bb9a7 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMembers_user_13.json +++ b/libs/wire-api/test/golden/testObject_SimpleMembers_user_13.json @@ -2,42 +2,82 @@ "users": [ { "conversation_role": "auzu2e8pwoe6c0gqamygef4xzybb4o1_yoxbelgaw2012jz9owv9stt14y2d_yi1yi8huvqyhele83b_99fg8ncenqi40pqjl18nkgvwilzo8kahww", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000050-0000-0074-0000-00260000002b" + }, "id": "00000050-0000-0074-0000-00260000002b" }, { "conversation_role": "8zkp0il16289nuuv9n3h2p8e7znc_4npg5qzdnt18t1l3yx0m40xugm9z_b1w_p98k0b02oq7enifxr4r9b1zyvax", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000000-0000-001d-0000-005f00000055" + }, "id": "00000000-0000-001d-0000-005f00000055" }, { "conversation_role": "4kkuwyima3ztybzpf3ccy2_mrgcz2sv0nvb29bxjm90dgk6ft_14r7p0qyy12crv_z", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000005-0000-0010-0000-003b00000043" + }, "id": "00000005-0000-0010-0000-003b00000043" }, { "conversation_role": "pcod0980px6sue9r5cjn7ok4ad9sl6rqpmlmhwu1ju8kp7m757o2axicjqha4e9wz_v3wx3ixb6swh3bujsxpc9g0rjd_und", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000040-0000-0065-0000-007000000049" + }, "id": "00000040-0000-0065-0000-007000000049" }, { "conversation_role": "qylzcwu0dvtjvra93ocg8fyuyzzowac5yo5410wh4sveczmfq0t2y2e6cae4fux96q", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000015-0000-007f-0000-006c0000004d" + }, "id": "00000015-0000-007f-0000-006c0000004d" }, { "conversation_role": "z3id3idffe8rl53wpyrd3f2l0y56qxz", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000000e-0000-007b-0000-003400000043" + }, "id": "0000000e-0000-007b-0000-003400000043" }, { "conversation_role": "2voj8d_5ydou6phiassv9tzhnw185814n90y8rbx5i", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000005d-0000-000d-0000-004500000021" + }, "id": "0000005d-0000-000d-0000-004500000021" }, { "conversation_role": "09y9r0sl0or7yvw_ztcg3_5xioeq6hk0lwmycvqtfnmhtg84qeotcl3yltg1ibzwdkgw3qz397otoa3xsqvn2uzsvqyzt87_6is2zotb4cgc5m8", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000002d-0000-003c-0000-003e0000000f" + }, "id": "0000002d-0000-003c-0000-003e0000000f" }, { "conversation_role": "tw7z9ajikrm79pv0q2gq5fjndf940qdzyjznb052bb9b_6zhhdunxgm91cj6mf04yp1rzapwrx1sox8z9sfijxy1xxn61b0", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000000b-0000-0042-0000-00740000003b" + }, "id": "0000000b-0000-0042-0000-00740000003b" }, { "conversation_role": "nmhc57h6qa7lzv0d0scl8_53iwuitrlmmujkwf_vgjgn4s027b5i9hbt2nxhm1d", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000048-0000-0039-0000-008000000004" + }, "id": "00000048-0000-0039-0000-008000000004" } ], diff --git a/libs/wire-api/test/golden/testObject_SimpleMembers_user_14.json b/libs/wire-api/test/golden/testObject_SimpleMembers_user_14.json index 62830406692..d52587c9011 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMembers_user_14.json +++ b/libs/wire-api/test/golden/testObject_SimpleMembers_user_14.json @@ -2,102 +2,202 @@ "users": [ { "conversation_role": "5qxti74lbqe_tgvvnq7ub2xxn0e2w0", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000049-0000-0018-0000-002200000071" + }, "id": "00000049-0000-0018-0000-002200000071" }, { "conversation_role": "mwzccu_p4zazafbgnvf", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000003f-0000-004e-0000-005800000030" + }, "id": "0000003f-0000-004e-0000-005800000030" }, { "conversation_role": "rmr13bsn9lo1dil9j12jj31qdod3izckzpsrflf653suq328bmnd_kirumpr", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000017-0000-007e-0000-006f00000027" + }, "id": "00000017-0000-007e-0000-006f00000027" }, { "conversation_role": "_tae", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000005-0000-003f-0000-00280000005e" + }, "id": "00000005-0000-003f-0000-00280000005e" }, { "conversation_role": "kaa5_qbk5nvvgx4jowierx", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000002b-0000-0003-0000-004a0000002d" + }, "id": "0000002b-0000-0003-0000-004a0000002d" }, { "conversation_role": "2hco6n9dqp4qph8alctzrcw91aiw1d4eb5g6ebeb3739i31b4o8seok8krf1z95t3zft4gif5ib9qtsuuzvb0ip17svpfk21akw0d_hz46u", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000005d-0000-0054-0000-002500000028" + }, "id": "0000005d-0000-0054-0000-002500000028" }, { "conversation_role": "o1bfk_p6xvxp7t1i6f3d57jv2_yl4nq5or1zy4vd2dh22ue895yoduwjo3wc5qzostuhbw369j", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000005e-0000-0002-0000-004b00000045" + }, "id": "0000005e-0000-0002-0000-004b00000045" }, { "conversation_role": "vf6s6yc5eavaytm7_6", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000005e-0000-0027-0000-003d00000065" + }, "id": "0000005e-0000-0027-0000-003d00000065" }, { "conversation_role": "n7r9vlgda6kn7ehvrz_hrl6t1p07xr42_rgp", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000035-0000-0035-0000-00010000001f" + }, "id": "00000035-0000-0035-0000-00010000001f" }, { "conversation_role": "qtfn187ab22rzoan9jy9ug2qyjisshxdeo184e8cjm", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000054-0000-0069-0000-002e0000007c" + }, "id": "00000054-0000-0069-0000-002e0000007c" }, { "conversation_role": "lxynbdsl575ahtb1fzz_0ucdcsmeiu4baq0ziei5", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000056-0000-005a-0000-006a0000004c" + }, "id": "00000056-0000-005a-0000-006a0000004c" }, { "conversation_role": "q4m0kblmex11x_k__yurqoqixdbhbcluk60_kpje7xvt5drk0jdp2jh29ql4hlvz_af8yx61ptki414nip32h59m1m_spku9ac9v8pfxo_ue6", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000041-0000-0013-0000-007700000017" + }, "id": "00000041-0000-0013-0000-007700000017" }, { "conversation_role": "xt24wodqlibu4gtj128oj8e61z4gt_5d_we5m9jk35crgs8levtcul1pwak1vxn95q9h4vqss5qlezj4r3igvmyv4y", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000022-0000-0071-0000-000f00000072" + }, "id": "00000022-0000-0071-0000-000f00000072" }, { "conversation_role": "vitd82h50v", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000003b-0000-003c-0000-003500000028" + }, "id": "0000003b-0000-003c-0000-003500000028" }, { "conversation_role": "io1uuzbdi7sfvy93f6kgdq31xskuwc8mxphwwrpv9rxc4o8ycdu4l4_0_26hm1g03g2", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000047-0000-0005-0000-001a0000007b" + }, "id": "00000047-0000-0005-0000-001a0000007b" }, { "conversation_role": "cksijt3o36xuu324i61apsuwdi32k3l1x_oalfaqqtk", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000000a-0000-0039-0000-00530000006f" + }, "id": "0000000a-0000-0039-0000-00530000006f" }, { "conversation_role": "ru1kksg2ef5_yo7i5uwq", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000047-0000-0062-0000-007700000025" + }, "id": "00000047-0000-0062-0000-007700000025" }, { "conversation_role": "lyspep_wcyu0fegqwpmns9lzjpy49i_6ufmhkft3bbmf_yi76hzdacj7", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000049-0000-000c-0000-002400000060" + }, "id": "00000049-0000-000c-0000-002400000060" }, { "conversation_role": "q8upik7s6rzlcqfbtrx0ty9_pjrqeq02b4nkdnggfu_y_ey8h430k8l900czggrlngyvz0hezpfqg0ta7dv7enlsujqhv9w2qcmrye97ozaswyg671b6cqk5_yprgn5", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000028-0000-001d-0000-005000000045" + }, "id": "00000028-0000-001d-0000-005000000045" }, { "conversation_role": "e3xri9yngsx6817txk_k58ybfykismurlmmhsa7k5xv5l8g5qgx48h9sp9ir4tp2n7i01wc4780lwvl9o31yacvdashtu82108yevwv1rnh1co8bzws28_01ao5jhv7", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000071-0000-0014-0000-002000000080" + }, "id": "00000071-0000-0014-0000-002000000080" }, { "conversation_role": "tzu6fq7owrz3hkm_7tmtmzr4oj9pyo1oi0bq4hvp3lrn3e5t6ep0x4g84nnmg79kag8tdaoopluff0eavzqpp57ij3us0xat7jua1g2iuhfjlrpoen2dyw1eulrqa5", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000037-0000-004c-0000-006800000015" + }, "id": "00000037-0000-004c-0000-006800000015" }, { "conversation_role": "r7xed76rtgltedolcrxbq67tyo5u5arm9ip49bo5szs24skzui_3h65_2j0md66gjlz850waloiuiqsd", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000005a-0000-0014-0000-005c0000000b" + }, "id": "0000005a-0000-0014-0000-005c0000000b" }, { "conversation_role": "80_0tuom0zml0hz7q8ioxscxusk7ghx63wp5o83lax5", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000000c-0000-0059-0000-004600000053" + }, "id": "0000000c-0000-0059-0000-004600000053" }, { "conversation_role": "ae3h61opsksj5x5if1tt3a74ehzw02ds6dqisz_5l", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000050-0000-0080-0000-00350000007c" + }, "id": "00000050-0000-0080-0000-00350000007c" }, { "conversation_role": "c_fbjpth0u2yni1mwed8xyjo7hvrev2ojjb3g8vu2sij81cjnehtpaq5mkd_55qf0eavaxtmrhzv20vbhrxssewk5m7rmxgveuva24e05xs", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000014-0000-0046-0000-008000000048" + }, "id": "00000014-0000-0046-0000-008000000048" } ], diff --git a/libs/wire-api/test/golden/testObject_SimpleMembers_user_15.json b/libs/wire-api/test/golden/testObject_SimpleMembers_user_15.json index 6ec0682ac14..6ba205a0cc9 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMembers_user_15.json +++ b/libs/wire-api/test/golden/testObject_SimpleMembers_user_15.json @@ -2,58 +2,114 @@ "users": [ { "conversation_role": "da1vnxfznxggp6c2qcjdx4sbo4usg7jb58hmd_ylzyr_97m9rpyg6gmw9ikw", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000006a-0000-0032-0000-004f0000001e" + }, "id": "0000006a-0000-0032-0000-004f0000001e" }, { "conversation_role": "asfpn3xoxsvsz8ubdt6b3b", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001f-0000-005a-0000-001a00000078" + }, "id": "0000001f-0000-005a-0000-001a00000078" }, { "conversation_role": "ftkjnuoy9i1h0yyf1x87m97flhx21n2475_rsnn76nkpl9toieae7wk0y_f83ji", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001a-0000-0017-0000-007e0000000c" + }, "id": "0000001a-0000-0017-0000-007e0000000c" }, { "conversation_role": "g22_kcj2fae4nspxpz30n5f6ib5bhrb", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001e-0000-0019-0000-00180000004c" + }, "id": "0000001e-0000-0019-0000-00180000004c" }, { "conversation_role": "qzkowgmbm3t4ck1lzb96ero0d6yw79kzdf2q", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000006d-0000-001b-0000-00050000003f" + }, "id": "0000006d-0000-001b-0000-00050000003f" }, { "conversation_role": "cyiw0yfayzt_ynv0h94pdv0hl5u46adyyyb6n", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000037-0000-001c-0000-000c0000002f" + }, "id": "00000037-0000-001c-0000-000c0000002f" }, { "conversation_role": "x3x3gfejb_1d1g9nsyw0rey0_tm9zs6pyuily3nrjsue7p1mp_15kffuojhi66z_t_lmnr_lq79wzvcjm3czs7i_9lvokkakhmfwkdg3f", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000047-0000-0014-0000-007e00000049" + }, "id": "00000047-0000-0014-0000-007e00000049" }, { "conversation_role": "s1cu0tibrwjvgpa49x9sk9kuzyd4hco7pj3gnbcc8ie519vmobd70ln2im2dx_yg_qoh4rc8", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000028-0000-002f-0000-004a00000063" + }, "id": "00000028-0000-002f-0000-004a00000063" }, { "conversation_role": "e6t98s2m_0jqjwibfan257dq0tbxl452q0dcs5mkl4kn", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000027-0000-0075-0000-003f00000016" + }, "id": "00000027-0000-0075-0000-003f00000016" }, { "conversation_role": "9jjkkwb5spu0x_honfioztulhgg2vu7dwcxngha4581j3dj73mo01oh3r6kdbpbxiwrt2k8q6ixcuu97qzpc962rlz4c7en9do885ykjstaru6yjm6w", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000045-0000-007a-0000-003900000015" + }, "id": "00000045-0000-007a-0000-003900000015" }, { "conversation_role": "wb1qwb0yfrwzna1gx4xcjrb9uvilio5pv_glva_sy8s9zr5udj10oy3ygf6jvbl0e92z6ucw2c3fur9ebha005gpr45jqkf3_hs40e3f6dssc", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000000-0000-0040-0000-002e0000007c" + }, "id": "00000000-0000-0040-0000-002e0000007c" }, { "conversation_role": "hq3mg17cd7p27q00dhyjrdu7pr4kdplicp4ipm", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000057-0000-0060-0000-006e0000001d" + }, "id": "00000057-0000-0060-0000-006e0000001d" }, { "conversation_role": "v6z1f27bvomf76x_tp5e3yik4qfx6xmohuu7sr40ijtw8b0v10746aja2yyhomb9yov9f4acq0pwng2cg76gqdh8moow_tzeonmqol6wz191m8oo4j7c8_wq", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000037-0000-0007-0000-006600000055" + }, "id": "00000037-0000-0007-0000-006600000055" }, { "conversation_role": "8_lth324f81q1zr6nhz1jw5oeu4ovjqnl8lobb9t3azlu7hj3s62_xm30b3fie4s", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000032-0000-0078-0000-005100000021" + }, "id": "00000032-0000-0078-0000-005100000021" } ], diff --git a/libs/wire-api/test/golden/testObject_SimpleMembers_user_16.json b/libs/wire-api/test/golden/testObject_SimpleMembers_user_16.json index 1ead34ee265..21032df838d 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMembers_user_16.json +++ b/libs/wire-api/test/golden/testObject_SimpleMembers_user_16.json @@ -2,78 +2,154 @@ "users": [ { "conversation_role": "z2z2ju3pgvxysob_3e2wg_tyxfp1wruzek4c6iuyk23e5qxuieyz3tg436tvzl9l8k5aa_bexy1m9ggauxms8pug1f", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001c-0000-0079-0000-006800000001" + }, "id": "0000001c-0000-0079-0000-006800000001" }, { "conversation_role": "5roj3c12kqt7", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000005c-0000-0056-0000-00780000001a" + }, "id": "0000005c-0000-0056-0000-00780000001a" }, { "conversation_role": "r_ivn3ruci8x4pl6bl1g_jex4", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000032-0000-007f-0000-00270000002a" + }, "id": "00000032-0000-007f-0000-00270000002a" }, { "conversation_role": "x__i5068zhcdautdjavpic3zi7u950hdw_iy63gdd0h6zbs1pfviyyui2zl", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000002b-0000-000e-0000-003400000009" + }, "id": "0000002b-0000-000e-0000-003400000009" }, { "conversation_role": "g5ignr39a41zundyudm1rovkz6a3rjy3dodkwk0ht3jnsqp1maz2ulc7yx93z7uy_dyqso9ofxblm2xqs", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000007a-0000-0017-0000-005800000050" + }, "id": "0000007a-0000-0017-0000-005800000050" }, { "conversation_role": "ltmubflt4eswsuurwvqxkd_ngfbkyilt00dzsjckdyh2eod2v804nw0xc8jbkz8bg29nud9oe3mlgvwoml4t8cmukd7un3ycogbvojmf12ktaxx", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000061-0000-0036-0000-006700000071" + }, "id": "00000061-0000-0036-0000-006700000071" }, { "conversation_role": "ox94nzepea1423z47_yd1txi", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000060-0000-007e-0000-004f0000005a" + }, "id": "00000060-0000-007e-0000-004f0000005a" }, { "conversation_role": "dvrbz7c9_igfu5vl3_9ujy5dqwaevjrb7f1n2kchbxroz8ccnktv6nrybj9s0ogviznxyzw6r6ebu72su9hsz9l62fly8cf_kkf6aeri9thd4z2", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000002e-0000-0016-0000-001e0000001a" + }, "id": "0000002e-0000-0016-0000-001e0000001a" }, { "conversation_role": "307w5bmxkox9r8klphxtmjge_8jgawjnotx_r0krsadx_n7", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000006b-0000-0038-0000-006a0000004d" + }, "id": "0000006b-0000-0038-0000-006a0000004d" }, { "conversation_role": "j6_h0zam0_k8x6coroh4ixk9m3pk5acmwx_cg1q7mpnmn1zha_i", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000043-0000-003e-0000-005a0000007d" + }, "id": "00000043-0000-003e-0000-005a0000007d" }, { "conversation_role": "9j1_jkemhozgdmdcoh39j4gxbccuysthtljfwf7qwgjk50tkamk2p_xcw7i9cclp35faxipa5qt2i23_u2n35anfp9jihl8fj2jebisxmgkfnmh89z", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000002d-0000-0010-0000-00010000000f" + }, "id": "0000002d-0000-0010-0000-00010000000f" }, { "conversation_role": "ds4scvwxorxgxtlskf27hu", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000043-0000-0070-0000-006400000045" + }, "id": "00000043-0000-0070-0000-006400000045" }, { "conversation_role": "1j2p5d49kfu8omp83fr67o4qpdb07", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000026-0000-002a-0000-00150000005d" + }, "id": "00000026-0000-002a-0000-00150000005d" }, { "conversation_role": "j6xf6yvyevf8aweam9h70ga1gs4lr_5n7khmou70p2_g1qzjpsgpdkf45scpqggc2rve2aqrev88u91sj3sny4cavowa1hosih61ycaq0pf41inxqhwzhc", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000079-0000-0040-0000-006100000033" + }, "id": "00000079-0000-0040-0000-006100000033" }, { "conversation_role": "u0lw_wyfzjmmu17s65cau3i295l_0c4hu823csp473bry2cn2zr24vsay4w2m2936y9ja0mvapjxafww89o", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000007b-0000-0033-0000-005a00000007" + }, "id": "0000007b-0000-0033-0000-005a00000007" }, { "conversation_role": "u5wny30naytnu39dwahr_5trcz66uqb4qrbvvhiu2juwbbkv8udp8whvw3jhy2o2s5jwmwesp_6qx_ceatpyex9xssv4z38p1xs3mpau7", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000078-0000-0058-0000-006300000019" + }, "id": "00000078-0000-0058-0000-006300000019" }, { "conversation_role": "cgx4sx81so7w8wyohtqvr53bzf_8od3j77", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000068-0000-0042-0000-007b0000002b" + }, "id": "00000068-0000-0042-0000-007b0000002b" }, { "conversation_role": "p35w8lh2_arnf44pbqrk3g4ln0881ml0b4t", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000004b-0000-002a-0000-007000000043" + }, "id": "0000004b-0000-002a-0000-007000000043" }, { "conversation_role": "0z7pdm65ezdilg_qqnzz34l5e1zi8gsw78qbwitnu2ng", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000006d-0000-007b-0000-006b00000005" + }, "id": "0000006d-0000-007b-0000-006b00000005" } ], diff --git a/libs/wire-api/test/golden/testObject_SimpleMembers_user_17.json b/libs/wire-api/test/golden/testObject_SimpleMembers_user_17.json index 2c22fd05108..ad3cbd0ccf0 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMembers_user_17.json +++ b/libs/wire-api/test/golden/testObject_SimpleMembers_user_17.json @@ -2,26 +2,50 @@ "users": [ { "conversation_role": "ui5u6nk8og1da9q8_ha4hhv2v_qrs_mveewm6h5_4384yf4ovtp67w_z6x9_waqln013ahg3rw9oky5o4yff6v", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000071-0000-0050-0000-006200000041" + }, "id": "00000071-0000-0050-0000-006200000041" }, { "conversation_role": "qsowevndt0gqwh1yvpqxd_4u3junr66dhuerv38qrhzv5kf9i38fkd", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000003-0000-0074-0000-004e0000003c" + }, "id": "00000003-0000-0074-0000-004e0000003c" }, { "conversation_role": "dq1mag9bzqoenu3chbc2mn91ivbh", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000000b-0000-003a-0000-003900000026" + }, "id": "0000000b-0000-003a-0000-003900000026" }, { "conversation_role": "9ij9p1jla54lbtk66mhbakd7m7p502p6tz1ryyaep94rz7upsquixaaf6eoewz_oziw_ok7xbo49", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001b-0000-0058-0000-000500000057" + }, "id": "0000001b-0000-0058-0000-000500000057" }, { "conversation_role": "13tjs8e20xxqd296duhver4er47dj47v2yyspcpfz5pdhbmnmlxyzar0w2recatb6r4_20zcd", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000007a-0000-001d-0000-005800000052" + }, "id": "0000007a-0000-001d-0000-005800000052" }, { "conversation_role": "gy3s_2c0r9lzi08hjnkbc9pbhdu3yvg409ipjztpmthie_j834nn12zjq_m56w1dqqi8mpde", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001a-0000-001e-0000-00360000007b" + }, "id": "0000001a-0000-001e-0000-00360000007b" } ], diff --git a/libs/wire-api/test/golden/testObject_SimpleMembers_user_18.json b/libs/wire-api/test/golden/testObject_SimpleMembers_user_18.json index 39f7f068c1f..0e5a73d5dea 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMembers_user_18.json +++ b/libs/wire-api/test/golden/testObject_SimpleMembers_user_18.json @@ -2,90 +2,178 @@ "users": [ { "conversation_role": "3me5rxn2utoa25v5xxht8ulguq6yxi7tp38dwoyvs_4o40u1to2j5nrtykcbqmxuefqoulfptt90s", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000013-0000-003e-0000-006000000058" + }, "id": "00000013-0000-003e-0000-006000000058" }, { "conversation_role": "934awteu5wur99l7fnw80clvhm_gza7sdsh12wm_ppvma27jwl2ry8u4q3pdm2sqae_w4bqn1l7k3bscfww2c6i", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000002-0000-0026-0000-005d00000007" + }, "id": "00000002-0000-0026-0000-005d00000007" }, { "conversation_role": "ykd2zkk62g1dcm7nnuwr3xbho312yshv5ies_zgv954zlari0ayv9x6gnxdckc4s36vvdfdg3ohsr__e5_tlo_y6lbnmhilm_gwblmnzgiqxxmhvegnbh6haxg", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000078-0000-005b-0000-00580000004f" + }, "id": "00000078-0000-005b-0000-00580000004f" }, { "conversation_role": "tg_h0qkv4aijetsz83m1kgblaem7q", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000054-0000-0053-0000-00340000006e" + }, "id": "00000054-0000-0053-0000-00340000006e" }, { "conversation_role": "wxx0aq41xb9dkhyi1gai4twn840_gv26hyjwwo8xaycbju4xowxt40eimnud63h61y56aacmio7reb1u7xhbkdpkvzr7uw_pu_o", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000023-0000-002f-0000-002000000063" + }, "id": "00000023-0000-002f-0000-002000000063" }, { "conversation_role": "8axn63dyge68i43hczeorjbtz3cyd9nv316fhppz7bfn6ev57rxedqhohixccni74vrd5mujd3xudu1s5jrw5fjcpo5uy52z6mxjpnsi14md10_6o", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000022-0000-0057-0000-006f00000014" + }, "id": "00000022-0000-0057-0000-006f00000014" }, { "conversation_role": "b72qpthui23k7cbxz8m3226h", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000003-0000-0013-0000-003b0000002d" + }, "id": "00000003-0000-0013-0000-003b0000002d" }, { "conversation_role": "4ndtltebfabogp8i9skodvx86xbu_", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000052-0000-0046-0000-002e0000003a" + }, "id": "00000052-0000-0046-0000-002e0000003a" }, { "conversation_role": "r9jg4", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000048-0000-0028-0000-001b00000006" + }, "id": "00000048-0000-0028-0000-001b00000006" }, { "conversation_role": "1_r3da_nqzfzbs_6j8sztfleq4ov3zk7e6lhjg04", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000007b-0000-004d-0000-005500000006" + }, "id": "0000007b-0000-004d-0000-005500000006" }, { "conversation_role": "_v361ue5c23jdmlu43s7eckol6hzqgdvd49z_ga87_gtfu6s6j49c2g12tfsv", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000000f-0000-0056-0000-002a00000066" + }, "id": "0000000f-0000-0056-0000-002a00000066" }, { "conversation_role": "woty16_d9_5ot5k0aur_vvud9z_3f41om2hxf7bc4bc1dagzzecnhmnl2asd_slndkj81g2p_9kibhfw71_7wlj9n", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000014-0000-006d-0000-00600000005f" + }, "id": "00000014-0000-006d-0000-00600000005f" }, { "conversation_role": "gwad3aujch9jwn8wgs36djkofbhgc80q3xpg08kziibyr249qor8xzyhn724zmj57mup_15ik_ts3985q94t2ycjatnt5jzurfb8jy06y4dqiyh3aowp0bgn", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000005c-0000-0022-0000-007c00000001" + }, "id": "0000005c-0000-0022-0000-007c00000001" }, { "conversation_role": "0_lettu8qvkqk6krt4_nez4e95b7y", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000008-0000-0042-0000-00250000007a" + }, "id": "00000008-0000-0042-0000-00250000007a" }, { "conversation_role": "z3o8c78vi1ynsrc_s6ebpnz96960dez7lnlijjz843un77jtnj9a5pah", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001f-0000-0022-0000-007c00000028" + }, "id": "0000001f-0000-0022-0000-007c00000028" }, { "conversation_role": "4qwvs96y63anponvr9dm5rlixyqhi3jumk9q5827hpksw8n63u_mcg90c3ymz6flf4g5hfcczn3j6rvoiushsvltz30mou0m6_swr8p9ajzs67a1bkc7", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000022-0000-0045-0000-007d00000007" + }, "id": "00000022-0000-0045-0000-007d00000007" }, { "conversation_role": "fnxibm1l1089wzrxa", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000007f-0000-006c-0000-006f0000005a" + }, "id": "0000007f-0000-006c-0000-006f0000005a" }, { "conversation_role": "2ty62trmvnnqkyblir4w1hdba9r10gfkxjb8ddj0riit2i7ymxpprtrcgs2p6w05prtzxuhj_07nuntgsk8x4o2e1pe6cijkk1igi45_e49d38x4b_", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000022-0000-0020-0000-006900000033" + }, "id": "00000022-0000-0020-0000-006900000033" }, { "conversation_role": "b6fsp76pbub9rakkxrs7lk8gsh005ajo5m8ap4apvxjxoak95s", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000000-0000-002f-0000-007000000064" + }, "id": "00000000-0000-002f-0000-007000000064" }, { "conversation_role": "hinbqrmh843xzsvpu_a6ifnc6lc164f58gkhv", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000002-0000-0042-0000-000000000058" + }, "id": "00000002-0000-0042-0000-000000000058" }, { "conversation_role": "18os8cjhuuv8ng", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000005f-0000-0052-0000-005400000002" + }, "id": "0000005f-0000-0052-0000-005400000002" }, { "conversation_role": "4k62w0mz4j2hsstjelh8zx0gpg927v3ggod9z17i", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000004b-0000-0046-0000-006e00000024" + }, "id": "0000004b-0000-0046-0000-006e00000024" } ], diff --git a/libs/wire-api/test/golden/testObject_SimpleMembers_user_19.json b/libs/wire-api/test/golden/testObject_SimpleMembers_user_19.json index 4865be120aa..6b68097086f 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMembers_user_19.json +++ b/libs/wire-api/test/golden/testObject_SimpleMembers_user_19.json @@ -2,82 +2,162 @@ "users": [ { "conversation_role": "4fex2pu__ri6dlr68us285w6yv4alufdibfd_b8zt7ckdo7ej590lkosvd4be8cg4acr7", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000036-0000-0080-0000-004600000006" + }, "id": "00000036-0000-0080-0000-004600000006" }, { "conversation_role": "6lab82iykqaweibdnw89206lrz9vs16h6ae31uruwd0dat90ms", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000078-0000-007c-0000-004d0000001c" + }, "id": "00000078-0000-007c-0000-004d0000001c" }, { "conversation_role": "9lhsg7v6b93dyc9mrbtoh8upg5uotf4sygb7ivnzssk0vaj_i7dxoxttzeklh8am0dkzxlm5shu_xht44i7q2ngu5i9itakyus38vfxwhlo9vv14tbtky4do2gy", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000002b-0000-0013-0000-006900000050" + }, "id": "0000002b-0000-0013-0000-006900000050" }, { "conversation_role": "u9dnn4lg0fkq7wjm352pnvivghndsyu5dc1v7", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000037-0000-0053-0000-00300000001c" + }, "id": "00000037-0000-0053-0000-00300000001c" }, { "conversation_role": "1zrz9vvgb_owenushueadxheydq3xj7p6qnshwytttwuihgplc3swswxt7135l61u719cxyckizmc0tvss209e_u0vs9cq3g7iotw6_rjv1xekwz59jvxbf", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001a-0000-0014-0000-004100000073" + }, "id": "0000001a-0000-0014-0000-004100000073" }, { "conversation_role": "du5q_xfl5_euursw0bgwzmmfikr1jql29qf58tworxnj4c5z3oxp4g2y9hwk9l0azincl_yj7cygwz_k2lse_xhs4j1vj56g58", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000001-0000-003c-0000-007f00000051" + }, "id": "00000001-0000-003c-0000-007f00000051" }, { "conversation_role": "b3pojvx2wmrpy7q6adcuo5szs", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000023-0000-001f-0000-001b0000007f" + }, "id": "00000023-0000-001f-0000-001b0000007f" }, { "conversation_role": "tai2j6zt1iloa7k4lvhete0ia1lixhu0aakslmc3hnva6iiv4lmb7yjspyjz74wcwhg1hwligz1nvc4hkhwijrnf96epf3yc1sdzwe3ml2tj2stucgz", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000055-0000-004d-0000-006900000053" + }, "id": "00000055-0000-004d-0000-006900000053" }, { "conversation_role": "xbu28z6zird3kd4iqv0j2r7_e0b2qdxzpdeuzvxb__idnrzhib1rud5o98b4", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000047-0000-0003-0000-000500000001" + }, "id": "00000047-0000-0003-0000-000500000001" }, { "conversation_role": "rl_mm", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000004b-0000-003b-0000-007f0000005a" + }, "id": "0000004b-0000-003b-0000-007f0000005a" }, { "conversation_role": "59kuc3qc4e8bi2a47kw9irbr56x1p95x5qpmapy5q8e_obwek1a356gjb_pekd0oujb08e8u7536n416v4a3k574xz_m6shboen7iq_lihb", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000006-0000-0034-0000-007e00000030" + }, "id": "00000006-0000-0034-0000-007e00000030" }, { "conversation_role": "u2p8qhkz55ga7ay_lyst30ei5_7mg46cj60uhe0pj2tjbcwaoamnzmlqlwyv6thsr_k36dr69gusa838_a9aoh", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000006d-0000-007e-0000-000f00000060" + }, "id": "0000006d-0000-007e-0000-000f00000060" }, { "conversation_role": "vcan3ha2ahaaaxbs_rks5vygwuny8zp6st17fv9pk04f_2onxvw_guw", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000075-0000-0022-0000-001100000044" + }, "id": "00000075-0000-0022-0000-001100000044" }, { "conversation_role": "1ilr38ti5n1mbpm3qysh5e4wou0251c7iarmlo5p8x0dm9gc4wtmuzy1gpc6kubnxcc0tkyjmkhxpncffog4u5n_x7qhwwnyzbqlo_kpz33iwjwqtub8a", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000069-0000-0024-0000-00790000005f" + }, "id": "00000069-0000-0024-0000-00790000005f" }, { "conversation_role": "6rtysqt18oeenfxoi3n5751fia55yfvpiz9bfmy2g31sibwv7ewjl737n6yb_zmc2q3fhikqwtvp9tyynm6wu0p", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000068-0000-0040-0000-003100000045" + }, "id": "00000068-0000-0040-0000-003100000045" }, { "conversation_role": "_g3yp9j43gm8l8d5vgx3kq2as1e0q2qwtro_ah8s5tp4mpzd4syw1kjno1lb_u2qaoqqg3cp5xq873oi3f95llejnd31s3nhzi6m8r", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000004a-0000-0007-0000-005f0000003d" + }, "id": "0000004a-0000-0007-0000-005f0000003d" }, { "conversation_role": "qq2hd0", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000068-0000-0008-0000-006f00000067" + }, "id": "00000068-0000-0008-0000-006f00000067" }, { "conversation_role": "8hsl7yd_1raa4a", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000002-0000-000d-0000-00320000006b" + }, "id": "00000002-0000-000d-0000-00320000006b" }, { "conversation_role": "ftgvbfyalwkdozipte", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000001-0000-000f-0000-001800000008" + }, "id": "00000001-0000-000f-0000-001800000008" }, { "conversation_role": "ubqu_ach_3pmq8xmxniwo1ddu7poprzvvorzmxytdpmavfeond4do7p9g7txo2n9pxvazodp_bxro6ej6kb_qj5m", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000004e-0000-001f-0000-001e0000007d" + }, "id": "0000004e-0000-001f-0000-001e0000007d" } ], diff --git a/libs/wire-api/test/golden/testObject_SimpleMembers_user_2.json b/libs/wire-api/test/golden/testObject_SimpleMembers_user_2.json index b8348658ec7..dda3aa5869a 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMembers_user_2.json +++ b/libs/wire-api/test/golden/testObject_SimpleMembers_user_2.json @@ -2,118 +2,234 @@ "users": [ { "conversation_role": "s_l79fneq3swkwha5llyp8_b7hw9tyi906s7c5c3n1t_v1rkax_gx88gbc8tti9z8e5ad1y0n3irysgradbjj8_ykfkhjv2xu70", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000004c-0000-0022-0000-00720000007c" + }, "id": "0000004c-0000-0022-0000-00720000007c" }, { "conversation_role": "jhrez7dufl3ne050doxot1f7mhup7a0rr59472xmcvukln0cw", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000002c-0000-0079-0000-004b0000002a" + }, "id": "0000002c-0000-0079-0000-004b0000002a" }, { "conversation_role": "t9e5nbirc5uv1n4jda1bo8mwc72si1wi0_hngmo0sw", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000006d-0000-0033-0000-006d00000070" + }, "id": "0000006d-0000-0033-0000-006d00000070" }, { "conversation_role": "fee9mv0u39pyxfjffutut9ahag22y4_bjd_gcflwenmgndeztyuur4ypax_3kwt2i4extz5mg30c6l_6lwtff1tmbh_82uo9y7ni42m2yjjfvwu13gqx2ucw3iv_wh", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000018-0000-0022-0000-001b00000048" + }, "id": "00000018-0000-0022-0000-001b00000048" }, { "conversation_role": "4o0ctcw73niokwjhjo8_65khxlxx_1o9ktctoq5kdmm39640gc2f3uc3nq99bq_93sgnhvd04wx3pgw1n1l", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000000-0000-004e-0000-002f00000038" + }, "id": "00000000-0000-004e-0000-002f00000038" }, { "conversation_role": "4x1goxovt1vshlij0yhfb9hu_adl4dvucsylf6o32fdsrmx0yr1lan69pyz4o50025mqtu1xi9b5h6zky7y31mkw3_lunyoglxxm0mn4loue8wa5c9kqtw3", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000003e-0000-005f-0000-004b00000038" + }, "id": "0000003e-0000-005f-0000-004b00000038" }, { "conversation_role": "g1lrkbr7ouvsrch981kwrz1k8un", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000008-0000-0030-0000-004000000062" + }, "id": "00000008-0000-0030-0000-004000000062" }, { "conversation_role": "7zc5bbxmb4igwsjplqmnttlwrhs4k5dangjj0zvpflv6q6kqfksglq1xq5992v7ce34w3s_s08jfco91s_c4dhbzcyygwfxaty7", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000071-0000-0074-0000-007500000032" + }, "id": "00000071-0000-0074-0000-007500000032" }, { "conversation_role": "yqpt1iljztlmcsh2u3gt5s_gg1t7x81iwpp8ui501", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000025-0000-003f-0000-000c0000000a" + }, "id": "00000025-0000-003f-0000-000c0000000a" }, { "conversation_role": "vq6envh0bnegl9x1t", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000006f-0000-007f-0000-007300000013" + }, "id": "0000006f-0000-007f-0000-007300000013" }, { "conversation_role": "3ehnf28yt11ip57arzrw7pow5m1jsjmcvd3dd5v36aftd38n0612dzjp2pofintyzuue89h_vgk47j0r4jsz4anewa_vko96m", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000001-0000-006b-0000-00200000006a" + }, "id": "00000001-0000-006b-0000-00200000006a" }, { "conversation_role": "de169f9r4vegvo0tcmv0wd8_tp0jw8c2hpv_q2ya_48gner4ablbfke36imbne2wz2miqc_wsbfp5nmgklu1sv9dnar5ftny4s7_w", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000000-0000-0009-0000-003f00000060" + }, "id": "00000000-0000-0009-0000-003f00000060" }, { "conversation_role": "191um99jwj93l_cv5zdb6op2a5j3tkismgxlv0jzf90zbw4hi9i611nilzp2i3dq16fj1naa0mdqou9", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000071-0000-0077-0000-004600000064" + }, "id": "00000071-0000-0077-0000-004600000064" }, { "conversation_role": "b0oxc3cm4deaiuhqlip8cerktwoqbdp_z56h8jeyfc5any", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000005d-0000-0060-0000-000500000063" + }, "id": "0000005d-0000-0060-0000-000500000063" }, { "conversation_role": "pti7ldmszyimj_wsjq9k0p0z5jb5z3kar759v7tmwifoxgv1mkz2n4igze26p53mr34a4ghcv67fhvdqq4p7h6klye7ndhoezo6hd243gtibdr", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000074-0000-0013-0000-005700000074" + }, "id": "00000074-0000-0013-0000-005700000074" }, { "conversation_role": "5tsp_2", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000063-0000-0078-0000-001000000046" + }, "id": "00000063-0000-0078-0000-001000000046" }, { "conversation_role": "xn825hf3etf479oc7vjahb", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000006c-0000-0062-0000-00440000002e" + }, "id": "0000006c-0000-0062-0000-00440000002e" }, { "conversation_role": "6lyro5zz2erfgps9u1hpzlefe364l1uhhfmynczytotfna4wta_z9gkbxkhsn4zcz6ct1yyliz6fkb1fo4fqlgjs5toi44o81j1e8_oldj", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000070-0000-0030-0000-000e00000075" + }, "id": "00000070-0000-0030-0000-000e00000075" }, { "conversation_role": "iabgwa1qc9g1jvz8qvs2zf8knqstfk7uxbg8ok9i6jgb7ngqk9f441bxnxgb35uerdky5atdda5g0h8ywv3x83qt", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000007b-0000-0058-0000-003000000071" + }, "id": "0000007b-0000-0058-0000-003000000071" }, { "conversation_role": "88__aymok2p9flpv0xp5nujwww7ubyxmojd74cim22ixoig78e7ov7vf4s39x3nh85wtr2z0wvsd5lcr48ut9gjgrt1bc7qpo", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000007f-0000-0070-0000-007700000034" + }, "id": "0000007f-0000-0070-0000-007700000034" }, { "conversation_role": "2ogp8swsxisn1w2bohi8rcvl_1rtx0m34lr6x8sqkt9", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000042-0000-001c-0000-005900000054" + }, "id": "00000042-0000-001c-0000-005900000054" }, { "conversation_role": "xu52_xbb5yijobss5ls1kkdn_mhgvqkasyfcn1o99ds1pi7zp8lbypszkarhji_bbsdpqylore9zd_woft67s", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000000c-0000-0072-0000-001100000014" + }, "id": "0000000c-0000-0072-0000-001100000014" }, { "conversation_role": "pma4ikgggpi_q0rvtdvjoff8fztnbolrl6oty_yvxm3qksaeg0l9bh8byrde5mto2f2a1rmn", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000073-0000-0042-0000-005a0000001c" + }, "id": "00000073-0000-0042-0000-005a0000001c" }, { "conversation_role": "njm9ltp6fr3yk2ke5skszy0xspo7blk", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000029-0000-0042-0000-001a00000071" + }, "id": "00000029-0000-0042-0000-001a00000071" }, { "conversation_role": "2itlnpkl2w0wh1pso963adsg8psnf8sql_ez6o9qcmy_scfvcvjcin6khn6ye_fqh5z1n52nyqis3wllwnnym6itdqccgr9fk9ttne_h0", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000057-0000-0025-0000-002400000040" + }, "id": "00000057-0000-0025-0000-002400000040" }, { "conversation_role": "x61tv07e4higron1y", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000009-0000-0034-0000-006c00000009" + }, "id": "00000009-0000-0034-0000-006c00000009" }, { "conversation_role": "y7ttveh1qbqrww6el6rpjbz13kla3873tu2t", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000071-0000-0069-0000-00310000002b" + }, "id": "00000071-0000-0069-0000-00310000002b" }, { "conversation_role": "y2791q0e6ve5oof9ep", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000007a-0000-0016-0000-005a0000001f" + }, "id": "0000007a-0000-0016-0000-005a0000001f" }, { "conversation_role": "db051rwfps8foxf3bqqk8", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000003b-0000-0075-0000-000500000008" + }, "id": "0000003b-0000-0075-0000-000500000008" } ], diff --git a/libs/wire-api/test/golden/testObject_SimpleMembers_user_20.json b/libs/wire-api/test/golden/testObject_SimpleMembers_user_20.json index 75bbaada33a..c73e366fa1c 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMembers_user_20.json +++ b/libs/wire-api/test/golden/testObject_SimpleMembers_user_20.json @@ -2,58 +2,114 @@ "users": [ { "conversation_role": "wmx8molqscfxab9_imrcssdgf0_4m2ik51npx6i23vig82mer1rji1xwvddqxasyw6jqmy0xzykd2ums", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000001-0000-0026-0000-00580000001f" + }, "id": "00000001-0000-0026-0000-00580000001f" }, { "conversation_role": "u0n8uiinlswpdr1oqstlmu1hfv3pfoo7ew8z00r2jvzkpkjpfd3u6kb39_sj73exbhv6a0779b1y69momnis84f5w_3uqlmqcp6on3zj6of7t63nwuxn", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000002b-0000-003b-0000-007600000012" + }, "id": "0000002b-0000-003b-0000-007600000012" }, { "conversation_role": "lvczhtpd0dgdsvzxtzyelmrbh6dkl17j3drta713mm4i", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000005b-0000-005f-0000-006500000034" + }, "id": "0000005b-0000-005f-0000-006500000034" }, { "conversation_role": "mhpxkbgdx02x3v2hsjtfm3phl92n4w9ka70i004and0apz620h97vhlp2pxy_moo1op2ipoettcczcxdugw_wus5inhfxzd4fn_jndz0n6wb0kapf76e5r4hldsqqft8", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000002b-0000-0003-0000-001700000060" + }, "id": "0000002b-0000-0003-0000-001700000060" }, { "conversation_role": "sjkd77e2wg_ddyj59wpadnncaup_41e7m8ayhs936zwkfy5", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000072-0000-0012-0000-000500000052" + }, "id": "00000072-0000-0012-0000-000500000052" }, { "conversation_role": "3bvwtadqp5w2ode0z", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000003a-0000-002b-0000-00050000002d" + }, "id": "0000003a-0000-002b-0000-00050000002d" }, { "conversation_role": "2x_5ctyin9ildjj5gs1kwwiw1ipbsdeaqslm8dn8zh02vs1q7id3_whp40e2jgkogpdza5_zm8czqm9ykl_v1", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000047-0000-006c-0000-00500000003b" + }, "id": "00000047-0000-006c-0000-00500000003b" }, { "conversation_role": "rspqdh94do5jxbxub9t7", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000000-0000-0075-0000-000b0000000b" + }, "id": "00000000-0000-0075-0000-000b0000000b" }, { "conversation_role": "fqkwb05s1i7aww45jcx5hptvdzd856n2y_8uy5v35zcxhu07jp6v19ax1juyczkgtiiw", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000006d-0000-002b-0000-003800000003" + }, "id": "0000006d-0000-002b-0000-003800000003" }, { "conversation_role": "fq7zom614_e", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000005c-0000-003c-0000-003d00000059" + }, "id": "0000005c-0000-003c-0000-003d00000059" }, { "conversation_role": "j3kukcuzzfid3ecr70nzd", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000015-0000-0050-0000-002200000061" + }, "id": "00000015-0000-0050-0000-002200000061" }, { "conversation_role": "4r6cieh3t_a2ydpm8shzvl_q9ellq1k4sfdpvng5xzqfnwrwwet5wb0m2nzu8ze_dd7nxnauw2ylvv2y57ykt5k9899capc4ke2l2h2yq1wfjzb4zck38xmec61bvl", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000002e-0000-002e-0000-006100000030" + }, "id": "0000002e-0000-002e-0000-006100000030" }, { "conversation_role": "5v8e6cih_ueu_a2wd28uj8boqxv3gmfx15u1chfrbf_1fupa7fo_yqd", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000010-0000-0030-0000-006c0000006b" + }, "id": "00000010-0000-0030-0000-006c0000006b" }, { "conversation_role": "dxwk4qalr3oi4jh6v8e3r4agor5vce0b_5w_b3fwmdwfhc3_mqsk94ngdw", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000037-0000-0048-0000-00460000006a" + }, "id": "00000037-0000-0048-0000-00460000006a" } ], diff --git a/libs/wire-api/test/golden/testObject_SimpleMembers_user_3.json b/libs/wire-api/test/golden/testObject_SimpleMembers_user_3.json index 066131a9267..72d2a3c36e0 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMembers_user_3.json +++ b/libs/wire-api/test/golden/testObject_SimpleMembers_user_3.json @@ -2,26 +2,50 @@ "users": [ { "conversation_role": "cfz_d4ungmducvtxdmamhrfwox3_ixnvu3lgxutif4hvhqh2gpcdheclk_t1tc2fo6o1f1l4olzojelbqaktba77gshp4jsodxnlvuhfjv_2yc3xd4hqcjatvqibrf0t", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000003-0000-001c-0000-004200000050" + }, "id": "00000003-0000-001c-0000-004200000050" }, { "conversation_role": "3qmhpz4xwoe0esh_q57fof2a0dntyt1rzwsrii_srhk067ashevn25ypd9ulscohnonbk99kka6lo1fvh2405_", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000025-0000-000b-0000-005200000004" + }, "id": "00000025-0000-000b-0000-005200000004" }, { "conversation_role": "so7mgd7pd8f5bl2hc28161aqhqht1ii3ysfmj", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000022-0000-0022-0000-00560000005b" + }, "id": "00000022-0000-0022-0000-00560000005b" }, { "conversation_role": "dcd0mqj2i4w35js", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000065-0000-001d-0000-00530000001a" + }, "id": "00000065-0000-001d-0000-00530000001a" }, { "conversation_role": "0n5d40stfqajajw2_q70xrtjct7oursrdqbr", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000021-0000-003e-0000-00140000005d" + }, "id": "00000021-0000-003e-0000-00140000005d" }, { "conversation_role": "6xsb6xh6qstehp328c8pbh4z4nnkjqtv8", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000016-0000-001d-0000-002400000078" + }, "id": "00000016-0000-001d-0000-002400000078" } ], diff --git a/libs/wire-api/test/golden/testObject_SimpleMembers_user_4.json b/libs/wire-api/test/golden/testObject_SimpleMembers_user_4.json index 560447a7157..6378f102c82 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMembers_user_4.json +++ b/libs/wire-api/test/golden/testObject_SimpleMembers_user_4.json @@ -2,10 +2,18 @@ "users": [ { "conversation_role": "ev2phc8z5r_qnawlxzgf7ba70oq8yebweiuaoe0cslzfoffdpos4edxi24p1fi09o7535laz7vuh4c96g2tracz4ofyu5fw", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000007f-0000-007b-0000-002c00000013" + }, "id": "0000007f-0000-007b-0000-002c00000013" }, { "conversation_role": "2dpw9m0sf8_", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000079-0000-0021-0000-007000000061" + }, "id": "00000079-0000-0021-0000-007000000061" } ], diff --git a/libs/wire-api/test/golden/testObject_SimpleMembers_user_5.json b/libs/wire-api/test/golden/testObject_SimpleMembers_user_5.json index 5c96f0d01b4..be881b86578 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMembers_user_5.json +++ b/libs/wire-api/test/golden/testObject_SimpleMembers_user_5.json @@ -2,62 +2,122 @@ "users": [ { "conversation_role": "rus8lexaw6nztct_zjcjucxjrs4_atd_3spmbofo3nzlh5ia3llctfiqjs46jw8l6mqazv2pwp93akrkbh6ialmv23yk58_52c34qnbkgdvvephp28", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000053-0000-0076-0000-00100000004e" + }, "id": "00000053-0000-0076-0000-00100000004e" }, { "conversation_role": "rirdp8hwy4qbgbjktu7oonchq2s_kpntqqffd7eh24isbfkwwq0lgmeo3o7rxbuehhwe6dt99xhao3fswgm0xqa2_ag5as", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000001-0000-0075-0000-006500000014" + }, "id": "00000001-0000-0075-0000-006500000014" }, { "conversation_role": "48idob6a3qg0k4cyr4x5b3gvqafdeogqtnh_69ov347xwn54j", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000000a-0000-0068-0000-00100000000c" + }, "id": "0000000a-0000-0068-0000-00100000000c" }, { "conversation_role": "u4ruh9mhqk3m_u6e4guj7ee40_svakap_92pwi89sdme0pkh6inwk4ttg1xmoottx1uy6ryv52w_2lf340g7ohndxa2r3iwue2k3r6c084kifr914ulcon", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000070-0000-000f-0000-002400000032" + }, "id": "00000070-0000-000f-0000-002400000032" }, { "conversation_role": "rc779wbhz5nabuxyzdrv6n9oiq06olf0", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000002c-0000-0000-0000-007500000037" + }, "id": "0000002c-0000-0000-0000-007500000037" }, { "conversation_role": "1yeunp1yvablh18tnsoaa8xnggbpbviyabkfh6abd9vw0mrcy3x3gu3m2jvnjhroe44y55c9", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000005c-0000-0009-0000-001700000033" + }, "id": "0000005c-0000-0009-0000-001700000033" }, { "conversation_role": "opmdgq5u1h4ersm_ydrpyydfv2cdlsj7uwkqaz892ajcmuwi28c197", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000011-0000-004f-0000-007400000055" + }, "id": "00000011-0000-004f-0000-007400000055" }, { "conversation_role": "nkencc_183b83h8xpvgbgub80wyn9y2mrdj4b3at0t1iuc39e4szcufloiluzpfm1p63ozppoj_xrd0yen3ain9jpmb6nbhjw", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000005b-0000-0076-0000-007f00000034" + }, "id": "0000005b-0000-0076-0000-007f00000034" }, { "conversation_role": "q12f4o68fsu7kmvmha9h7pqadr37mr7anszmrm4gzyij_ejo78kbtxr85ko8ewzbrz6wuuzm1fwjir67o_0x66_gca2up99w4dzvtjhwsonumkcxx8ffhkln2y7i", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000044-0000-0065-0000-004f00000039" + }, "id": "00000044-0000-0065-0000-004f00000039" }, { "conversation_role": "d87qu8t82u8q8isnqw_0_55hpuuwnjfvra2ieaogqqdn6iwv8b", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000000f-0000-0059-0000-002100000019" + }, "id": "0000000f-0000-0059-0000-002100000019" }, { "conversation_role": "flgbw825uiqbe3zydw97iha4be77fnoey3ppqzf6nmwkm8w8gqlwidk6dubc6id4iqqrxb8gbgdrfwwiye1j371xkb2_786vzon9", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000076-0000-0044-0000-00110000002b" + }, "id": "00000076-0000-0044-0000-00110000002b" }, { "conversation_role": "g43z_vqs1w3nubu3uuvq7eycshex3ug1mz7h50o8k4mu9q1tm_z", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000007c-0000-0016-0000-001200000027" + }, "id": "0000007c-0000-0016-0000-001200000027" }, { "conversation_role": "toatgflm9kmzec4xpbt596ti99yjqh96g4tp", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000003b-0000-0005-0000-002a00000003" + }, "id": "0000003b-0000-0005-0000-002a00000003" }, { "conversation_role": "xgpcwa43", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000002c-0000-005d-0000-005e0000005e" + }, "id": "0000002c-0000-005d-0000-005e0000005e" }, { "conversation_role": "jpp1rdcx0mto46xxx26moxicgo2c2voj_ufk9czxpjt9na71urpd9pyllrnpot4cfj7hjqr1renpy0d2tntwnsq303mws_vxbiyitlavo9yszzlv4s4b996336bt", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000004b-0000-004c-0000-001300000001" + }, "id": "0000004b-0000-004c-0000-001300000001" } ], diff --git a/libs/wire-api/test/golden/testObject_SimpleMembers_user_6.json b/libs/wire-api/test/golden/testObject_SimpleMembers_user_6.json index b1e931d7e5d..5c0ce6fb0fa 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMembers_user_6.json +++ b/libs/wire-api/test/golden/testObject_SimpleMembers_user_6.json @@ -2,94 +2,186 @@ "users": [ { "conversation_role": "9adipks6ebghvg1g9a9w1h_oto9w98k8v6i81qpp7l0hk874ixzqqt3qcsjfbscqfyszyz_miodcsoxoz8qlc4405cth5mlo646en1e", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000079-0000-002a-0000-004d0000001d" + }, "id": "00000079-0000-002a-0000-004d0000001d" }, { "conversation_role": "99uoa6zruc85ailr9e9lu5537qrixoaq1ufioh4uepukbae", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001f-0000-0042-0000-00530000002e" + }, "id": "0000001f-0000-0042-0000-00530000002e" }, { "conversation_role": "v7wd6iz93y9034f6eq7u__okr92zkjvkwgtbidzo1wm1r2g1qv7r9vab4mgqiicw3k1i_z21zrf3tfp717rb04q7e", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000049-0000-0022-0000-003f00000045" + }, "id": "00000049-0000-0022-0000-003f00000045" }, { "conversation_role": "xxj8_x7sgu_7j6fjxshorrc5pn_nwrx1_kft7yl8w2383w5eti15qiu0xzmaqa3913938f_", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000011-0000-002d-0000-004e0000003c" + }, "id": "00000011-0000-002d-0000-004e0000003c" }, { "conversation_role": "jr8qjzzzoqzxh67eh8qsqp531s0a7ji3a7vtji48tcf56g_fnjn3nax", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000039-0000-0032-0000-006b0000007c" + }, "id": "00000039-0000-0032-0000-006b0000007c" }, { "conversation_role": "74mkhdsejovwuzzul9lpdysdt1viedz37o1li8o5lxay9hy2il4_7puyks95krk_7w2t4m9lbadx1ay3abk_mxkq0d6ufg2f9ytx_", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000071-0000-0033-0000-006e00000063" + }, "id": "00000071-0000-0033-0000-006e00000063" }, { "conversation_role": "rk088vrknhjb1qmbzz5b44yziqkeospcorqg3y3f01phq9d7c5ngwhlnq7lich87au3m2yas35ss1vnscom1wv", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000005e-0000-0062-0000-00220000003f" + }, "id": "0000005e-0000-0062-0000-00220000003f" }, { "conversation_role": "v3m955rl1j5st0fk3t8l0ist2rq5lefq_wt2uwd_h6b1obaa3mt115ph0ukx", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000036-0000-003e-0000-00330000002b" + }, "id": "00000036-0000-003e-0000-00330000002b" }, { "conversation_role": "zay_s86wwogz16lz8f7rsq40uxgt1j7z0wgj6_t0e6pjvj1n9ri0cpjmjywyqq951ye3jhql4yqb2tjtgc7g6u9yp2_92dcesgftj6l", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000026-0000-0070-0000-006f00000029" + }, "id": "00000026-0000-0070-0000-006f00000029" }, { "conversation_role": "l_1m2", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000059-0000-0053-0000-005e00000079" + }, "id": "00000059-0000-0053-0000-005e00000079" }, { "conversation_role": "e65xwo7h8khwqvfvmvj02jj2jkz3wa8bei_", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001a-0000-0069-0000-002e00000072" + }, "id": "0000001a-0000-0069-0000-002e00000072" }, { "conversation_role": "ly60ylpqtqx3vqe00gw", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000006c-0000-000a-0000-00470000007f" + }, "id": "0000006c-0000-000a-0000-00470000007f" }, { "conversation_role": "0obmr5yj455s75alew", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001c-0000-0019-0000-007300000070" + }, "id": "0000001c-0000-0019-0000-007300000070" }, { "conversation_role": "zlbldhai8hpxijlergrh38ixsxhau35d5_gkejdkgeuz1w6_ojxzrscj3r2wbmhyi175ls73yp0w4schak_f_e8", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000017-0000-0046-0000-003e0000005c" + }, "id": "00000017-0000-0046-0000-003e0000005c" }, { "conversation_role": "y9dwyc8k9u40pa5h684208vcrlnoryjjekb_l623h1f05gm__mwvcr41m08r4t1kcjrvyfm559vc3_h63gpe2", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000000f-0000-005f-0000-006200000042" + }, "id": "0000000f-0000-005f-0000-006200000042" }, { "conversation_role": "_b64sbeqrp8ou_09bincmxn3", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000000d-0000-0027-0000-002300000072" + }, "id": "0000000d-0000-0027-0000-002300000072" }, { "conversation_role": "vm28h5wk3tzyeng8e0_kge5k61ws2ab21l5hl5fhf63n2171lxrnibaju6wy9oqhy9804c5sry_0xqw6_hb4ebrddbb1i3huqtz_cbdudqglp3yap74qjol1m2vtx", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000005a-0000-004f-0000-00700000006b" + }, "id": "0000005a-0000-004f-0000-00700000006b" }, { "conversation_role": "jstp31co2rpas6er_oyazeow51_1aho0uqvdvu6uqv2", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000001-0000-0015-0000-000a0000000c" + }, "id": "00000001-0000-0015-0000-000a0000000c" }, { "conversation_role": "0gk_nlyr50ot8v0s39c1wgjry6z3e78hcjtv2wmcb397ojix5l8p47tlmsvw", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000005f-0000-003c-0000-007600000061" + }, "id": "0000005f-0000-003c-0000-007600000061" }, { "conversation_role": "cm", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000076-0000-002c-0000-002d00000016" + }, "id": "00000076-0000-002c-0000-002d00000016" }, { "conversation_role": "e9kre1i15j22d", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000074-0000-001e-0000-007400000071" + }, "id": "00000074-0000-001e-0000-007400000071" }, { "conversation_role": "nb8blnutjrsntylz671x", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000051-0000-007c-0000-007b00000025" + }, "id": "00000051-0000-007c-0000-007b00000025" }, { "conversation_role": "sq3if4ijdg5pndfza05zyqz5u6ae3oa2u23bazsc870ijzlsvgj41s2b88zu2d3gvi7h3s_byd35y2izjlblss3v712a3_7v", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000046-0000-0031-0000-004400000018" + }, "id": "00000046-0000-0031-0000-004400000018" } ], diff --git a/libs/wire-api/test/golden/testObject_SimpleMembers_user_7.json b/libs/wire-api/test/golden/testObject_SimpleMembers_user_7.json index c154b385c7d..419ca63fb14 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMembers_user_7.json +++ b/libs/wire-api/test/golden/testObject_SimpleMembers_user_7.json @@ -2,122 +2,242 @@ "users": [ { "conversation_role": "eldahjnjgyux49p6u4qxz9a0q7e", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000054-0000-0012-0000-005900000011" + }, "id": "00000054-0000-0012-0000-005900000011" }, { "conversation_role": "yw31a4ikpn_zfb5fd0vee3e1536ak74rqp_qtok7xrhsn5pa", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000000e-0000-004f-0000-003b0000004e" + }, "id": "0000000e-0000-004f-0000-003b0000004e" }, { "conversation_role": "9unyjjpklvq_r33t7qkqerx02wummtzrlrscqdm7gyi3vp4t9elyttg0rob3cv3lz8gni_fqr_df3rvt2o7gv", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000062-0000-0055-0000-00600000003d" + }, "id": "00000062-0000-0055-0000-00600000003d" }, { "conversation_role": "810s8rqja", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000049-0000-0058-0000-005000000000" + }, "id": "00000049-0000-0058-0000-005000000000" }, { "conversation_role": "yb41udiftgjzo36lbvwtw9xj5qlohvljde90frfx0r26jzgpq08xeo4xw2tepnvx", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000005a-0000-0020-0000-005400000016" + }, "id": "0000005a-0000-0020-0000-005400000016" }, { "conversation_role": "eyqn_qzpmumu9cvf_6zn8ya0eucpkdjjwwb41pce90xd4buem9o1tp4bprvjzkudtsyvphunmxanf0ej4uad7pbj48t5xemr93bcqb1j97owyuome59njkvznhlpew", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000018-0000-002f-0000-006b00000044" + }, "id": "00000018-0000-002f-0000-006b00000044" }, { "conversation_role": "zze7ew9qk8gurfh", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000007a-0000-0058-0000-001200000069" + }, "id": "0000007a-0000-0058-0000-001200000069" }, { "conversation_role": "n_roifhghi_l_9b_75beixjh703zyg806b1hin3fui2nj3nj040_7r3ijtyfox4o3o", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000006f-0000-0018-0000-006f00000076" + }, "id": "0000006f-0000-0018-0000-006f00000076" }, { "conversation_role": "pgdgmdhjek3iah8ywvcdue4k6yn43l5_zme6o6_yatkktrw5s_ovqmyrwgu_z_5rp9z97jgtv620f0_177cv1s3urmbx406w50dot_yojdsjncunk9hqnl8j", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000002d-0000-0074-0000-003f00000059" + }, "id": "0000002d-0000-0074-0000-003f00000059" }, { "conversation_role": "kue8gimoaxn3wdbzwb2l9ygk0", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000057-0000-0078-0000-005700000001" + }, "id": "00000057-0000-0078-0000-005700000001" }, { "conversation_role": "jzojg1avl60svt8cnpecbdisbcd6eq9ru2nql33f9ccivtelrga_ls_3iao_dlfh9vj8jrne_nbwmb_73ay2bs3qoyamx5qgd", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000078-0000-0080-0000-002b0000005c" + }, "id": "00000078-0000-0080-0000-002b0000005c" }, { "conversation_role": "oz_bg293nizgs3gz2bm2mnulgpnb9jm_pd8uox2qiok86rndsgyqpj5c6l4iqrh4sj8y5ifgo23lja2tq6kwj9e9m07s59112xdypqgaxzf9py_muyd9", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000004-0000-007f-0000-007c00000022" + }, "id": "00000004-0000-007f-0000-007c00000022" }, { "conversation_role": "hdirky_2tz3se2ehu7by2csj7a_jy7qyo1oghueqc_4h118v79xz49olrwkojns", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000006f-0000-0011-0000-004100000002" + }, "id": "0000006f-0000-0011-0000-004100000002" }, { "conversation_role": "9122iz2g941gnqs08mcaqa33l58irkmohj5r", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000042-0000-002f-0000-00030000007d" + }, "id": "00000042-0000-002f-0000-00030000007d" }, { "conversation_role": "0lyosg4pvc5q1dazb5z1v59plf2nqgs", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000027-0000-0014-0000-00250000003b" + }, "id": "00000027-0000-0014-0000-00250000003b" }, { "conversation_role": "01yernwfzht9wjtfyi_jr3mq9cjcsobvwlenbkhpqlmhu9clagiiyoaw2b48mfzx_mgqib99ol3vezr0t0qeu", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000000e-0000-0055-0000-002200000000" + }, "id": "0000000e-0000-0055-0000-002200000000" }, { "conversation_role": "qb122l4lbi0oy7n5jsv1brin8k4gn1c_5_w0dq4avhnbvd32flikjynd_s0myf3sn2l1c7freo1uvflhcvjuvtrtpwumg5h8atn933stgizpnrc_1kfo0", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000006a-0000-0009-0000-003d0000007f" + }, "id": "0000006a-0000-0009-0000-003d0000007f" }, { "conversation_role": "mzqpku2_1n5f5_c8_zcmv4tejpe4ny41dkg1n067dupdvy7snm24y8syoe2agwc1h8yts_lp59v1aj4dr4sna8cpsgpd2td66xlw1hj_rm27lpiqn", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000018-0000-000d-0000-006d00000072" + }, "id": "00000018-0000-000d-0000-006d00000072" }, { "conversation_role": "hcy75iscpnouf9aqpon3edkh4uln4gma0niecrde5", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000031-0000-0023-0000-005f0000004a" + }, "id": "00000031-0000-0023-0000-005f0000004a" }, { "conversation_role": "3jw7u98t20zwu57swxs82genekuvg_hol6pcq5597l858iwgx8vs6anpiguoxetm8_l2e18ww09_xeiytzs64m5dadcmzpn5okzf35moy271z", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000063-0000-0061-0000-006900000077" + }, "id": "00000063-0000-0061-0000-006900000077" }, { "conversation_role": "y0u0avpt3orbo6xcee13613ik0sb8xcz308vkb5u33q9np2ws_pvhakw3gjbtihe3", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000002e-0000-0003-0000-00790000001d" + }, "id": "0000002e-0000-0003-0000-00790000001d" }, { "conversation_role": "ltula3ev2qfdixfbbpspfniw6xgmt4nmn0l1omcihhhkezinnxivgv81d13juourjrc0uqyl7gia0igc4keazm2avjra_ncnbfwy34uv95nbqopikwtb8d2", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000052-0000-0054-0000-003e0000005b" + }, "id": "00000052-0000-0054-0000-003e0000005b" }, { "conversation_role": "3n2q64e9ea8hxbcwm9n4mlyy330f1zoiaq_ao1d_t90kr4sahr365ji7svmbr6k58bx7o0bjeqij", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000062-0000-0049-0000-005000000022" + }, "id": "00000062-0000-0049-0000-005000000022" }, { "conversation_role": "x7shwqzfrj3qnlvus111ufwgzstnmmob_xhzern6niel5pahgi1_", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000007-0000-0069-0000-000f00000032" + }, "id": "00000007-0000-0069-0000-000f00000032" }, { "conversation_role": "1tv5og06r1a2al4kc", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000003-0000-0057-0000-00680000003c" + }, "id": "00000003-0000-0057-0000-00680000003c" }, { "conversation_role": "l_qq7b7wyz3ulnpim8dbd9g9bfv89yo_ioq9txnktyl81tkyvw0kx35u658o2_xuiuabbdslo9gxvb7p3i93nc7_tqm", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000047-0000-006c-0000-003200000031" + }, "id": "00000047-0000-006c-0000-003200000031" }, { "conversation_role": "uvsqtx_7v0_odhu95uke30sh454iruq9", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000074-0000-0059-0000-006800000037" + }, "id": "00000074-0000-0059-0000-006800000037" }, { "conversation_role": "gs2uzo7gnwot5qm61hyvd7n12n3mra138j0wex17zdhp01hwewiklyvz39e554xf_8us1abd_pysw_rjso9ujz35prg5g68omtevrtb7n1pcp9io681k77jpvj474tkw", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000050-0000-0053-0000-006f0000005d" + }, "id": "00000050-0000-0053-0000-006f0000005d" }, { "conversation_role": "ccqqr3w57f9exl7xuhqnr305fqteeziw7hr374is9pkpjtt_z", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000037-0000-004d-0000-003e00000004" + }, "id": "00000037-0000-004d-0000-003e00000004" }, { "conversation_role": "cbowqop368_f44bm2whf8hhkcu5ljs7u930a2lpwirkq4k3sgl56hvj4t8xj33sikbtxznli2ireniu5zvcm4", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000039-0000-0024-0000-003500000002" + }, "id": "00000039-0000-0024-0000-003500000002" } ], diff --git a/libs/wire-api/test/golden/testObject_SimpleMembers_user_8.json b/libs/wire-api/test/golden/testObject_SimpleMembers_user_8.json index d8fa68906c8..5c9aef25354 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMembers_user_8.json +++ b/libs/wire-api/test/golden/testObject_SimpleMembers_user_8.json @@ -2,42 +2,82 @@ "users": [ { "conversation_role": "bmgvnfheg7304j1af2ha8kzlrdsd94sla01p8e32cfuchc4n4d4j_1", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000067-0000-003f-0000-003300000052" + }, "id": "00000067-0000-003f-0000-003300000052" }, { "conversation_role": "3z44kbvkfmhwt3cxvztk91xwigzfsqgmwx43rsi2ew7_663q5kd04afdhwes23ea8_7nn4j6hol2k1o", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000066-0000-001c-0000-005900000006" + }, "id": "00000066-0000-001c-0000-005900000006" }, { "conversation_role": "_5xab39_3f5_n1jexf9q06jn5c0kx2wszftbp77dq3p5wxon_cg0sgxn38hr4p28i1u20rtg01mhf_xjn3tradschh7vm2ek6hpp788h4w47cnmzwo17lp56h5k", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000013-0000-0072-0000-005000000019" + }, "id": "00000013-0000-0072-0000-005000000019" }, { "conversation_role": "qann8z5wp43fncbnzkxuqeskdrnxclmj1qoiri6zb4ro8jzbsewewgi27xi6pnc", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000006d-0000-003f-0000-007f00000025" + }, "id": "0000006d-0000-003f-0000-007f00000025" }, { "conversation_role": "552en9ubk7gjrv", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000019-0000-003a-0000-006500000036" + }, "id": "00000019-0000-003a-0000-006500000036" }, { "conversation_role": "4fq8ylocoheanwuq9kg6amnrks", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000005d-0000-0008-0000-006000000011" + }, "id": "0000005d-0000-0008-0000-006000000011" }, { "conversation_role": "9ptg6nyzbr58czopzu0a26w3d1kvnl1zbyqij9j2p10o75869aargj9p3b5vxl9r27eryt6z5o85rlhgvrb4l50tb3jfil3hrlylru05", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000007b-0000-0072-0000-00690000000e" + }, "id": "0000007b-0000-0072-0000-00690000000e" }, { "conversation_role": "tq", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000032-0000-0039-0000-007700000022" + }, "id": "00000032-0000-0039-0000-007700000022" }, { "conversation_role": "as91oohpdy", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001a-0000-003b-0000-001e00000080" + }, "id": "0000001a-0000-003b-0000-001e00000080" }, { "conversation_role": "0jr8eycubw7cut6ukuegnxp5b2obst6ry8y76fe2qjro3xpp3bjvxg4c707rs1jlf", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000056-0000-005b-0000-007c00000078" + }, "id": "00000056-0000-005b-0000-007c00000078" } ], diff --git a/libs/wire-api/test/golden/testObject_SimpleMembers_user_9.json b/libs/wire-api/test/golden/testObject_SimpleMembers_user_9.json index de993083ee0..061568889f3 100644 --- a/libs/wire-api/test/golden/testObject_SimpleMembers_user_9.json +++ b/libs/wire-api/test/golden/testObject_SimpleMembers_user_9.json @@ -2,78 +2,154 @@ "users": [ { "conversation_role": "85wkc4m6uzi3t_s5sb488cxhjl7i_av_erwfdtgya58oc", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001a-0000-0051-0000-001100000064" + }, "id": "0000001a-0000-0051-0000-001100000064" }, { "conversation_role": "34mo_jfmsyatdcjbdl_o0hpvrc8uutf8ni3vukdy6bozbmf5itp3wsy502jw3b3y9oudqo2lh71ro8id7yvebq_4pxi98i3jdzyrx", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000053-0000-007f-0000-00140000007a" + }, "id": "00000053-0000-007f-0000-00140000007a" }, { "conversation_role": "pc12u7vhdqloizph96i1elxofyps02qanrr2z6_kdvl3zakyappxu7nksvj6oe6yz_ygrgii0v", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001b-0000-0042-0000-003800000032" + }, "id": "0000001b-0000-0042-0000-003800000032" }, { "conversation_role": "3v2qmyq9xk_tk7nywcco8dz4s_hgsd99cyu73lq8imj7xi09i8ha6nxj0mid6meivcq5wanubww2kpdpiousiel3ea7g5g7e1dggpuctjvbo9n5", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000032-0000-0032-0000-002000000005" + }, "id": "00000032-0000-0032-0000-002000000005" }, { "conversation_role": "jcr0d3sv5pm89mkbhinm7aw5njyj0oft6vh8ste7xfn6feqkmx176x93ie9lc58kcik7", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000001-0000-0021-0000-007000000010" + }, "id": "00000001-0000-0021-0000-007000000010" }, { "conversation_role": "x2qhpqv6n90nosm7tt6xs_zwathnk0l2jgp3om52fmpsz7x54y9061oxncf4v_3_10tlvx11vi57riuxn25gotw7", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001b-0000-004b-0000-00480000000a" + }, "id": "0000001b-0000-004b-0000-00480000000a" }, { "conversation_role": "xeyznxh248frdc3jix0_32kir1jobft0g60b75rx9c0x4wk171xseai9irwra9eypmmbplmw6hckha8f0i6zz", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000012-0000-0000-0000-00690000005d" + }, "id": "00000012-0000-0000-0000-00690000005d" }, { "conversation_role": "40d1mp1rlpq_toli_xsrzzp6azj7abwn9kwyyexu8mzqanezqlkwgzs_maqszagustta7197hluh", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000024-0000-002c-0000-000a0000002b" + }, "id": "00000024-0000-002c-0000-000a0000002b" }, { "conversation_role": "bcxu51qy7gzxryiesnjqirt5dn7kb0lz0nsdf2fbgxjatcf486n210ndta21lli8b64ub3xnerb84atj9_1xjz4kaowbda_rhxgz5qq264g6ikd6r7m1", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000000e-0000-002f-0000-006c0000007e" + }, "id": "0000000e-0000-002f-0000-006c0000007e" }, { "conversation_role": "8qz3xbrnjl34e24fvc96wl34jw", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000001d-0000-000c-0000-001200000072" + }, "id": "0000001d-0000-000c-0000-001200000072" }, { "conversation_role": "3mcna2fo1fuhmz50gevjyc5iacna3hon9fylu4o9u48", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000065-0000-0005-0000-00160000007a" + }, "id": "00000065-0000-0005-0000-00160000007a" }, { "conversation_role": "q451zrfmym52a86mm41yg1zhb3hgv38i_3qe5l4uhjlz0cum77qlytubryh5s8oya7ql_s5cnseh27vi1rzzcow", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000002e-0000-0028-0000-00240000001f" + }, "id": "0000002e-0000-0028-0000-00240000001f" }, { "conversation_role": "cxx03t4219b0e3b7u5lwxb4ua_3qif069vharpluygxmxq5vd1hcx4_3yjmtgw99yz", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000061-0000-0035-0000-005100000068" + }, "id": "00000061-0000-0035-0000-005100000068" }, { "conversation_role": "p5ro0m08a808fnqrib4ikm2bz71wvwxs_qa0b7xeneh6q38ucu8n3nq6uw3w3yelajevfdbsw64vqbsbvx0fsmpis3zbwr73pm7srdls_8nrdr4urapsui3goem5zy", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000003-0000-0034-0000-00520000005a" + }, "id": "00000003-0000-0034-0000-00520000005a" }, { "conversation_role": "op23mrkoau967yyy74znf7smfsr1j46m", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000007-0000-0049-0000-004c00000028" + }, "id": "00000007-0000-0049-0000-004c00000028" }, { "conversation_role": "zzcga0i7uawt0riq_mknqyn98zmawbd__zaf1s0hihhmp3o8vucuv3hlmeem5247e_1i2vml18qcoez3epg9kpnufn_w704s3t74u4yc27d0hkg3a6flr", + "qualified_id": { + "domain": "faraway.example.com", + "id": "0000006c-0000-0074-0000-004100000005" + }, "id": "0000006c-0000-0074-0000-004100000005" }, { "conversation_role": "66z2l9nijttcg_yu5krtv_llxbwwkdyosut9qmra_3bpeithetio5snkbicofi58z6gr4a_benvx87km99ffgi320rz454xd9s_42kzu8h8g3x0rx98xymh_3", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000000-0000-004d-0000-002a00000020" + }, "id": "00000000-0000-004d-0000-002a00000020" }, { "conversation_role": "uw5x_u9rn2zu0nc6f7eb_v40", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000058-0000-005d-0000-00100000000a" + }, "id": "00000058-0000-005d-0000-00100000000a" }, { "conversation_role": "u0pnq5ipcjjbf2tdndpn5pt0hic9tj6hjrzbscf9_mr5dimm_5e1i1xvo1lppo3ccvlh610tldxpgg2tjpf_nhhqz_gff", + "qualified_id": { + "domain": "faraway.example.com", + "id": "00000045-0000-0044-0000-00070000005c" + }, "id": "00000045-0000-0044-0000-00070000005c" } ], diff --git a/libs/wire-api/test/unit/Test/Wire/API/Golden/FromJSON.hs b/libs/wire-api/test/unit/Test/Wire/API/Golden/FromJSON.hs index 15bc955d468..f5df12de783 100644 --- a/libs/wire-api/test/unit/Test/Wire/API/Golden/FromJSON.hs +++ b/libs/wire-api/test/unit/Test/Wire/API/Golden/FromJSON.hs @@ -22,6 +22,7 @@ import Test.Tasty import Test.Tasty.HUnit import Test.Wire.API.Golden.Generated.NewConvUnmanaged_user import Test.Wire.API.Golden.Generated.NewOtrMessage_user +import Test.Wire.API.Golden.Generated.SimpleMember_user import Test.Wire.API.Golden.Runner tests :: TestTree @@ -31,6 +32,9 @@ tests = [ testCase ("NewOtrMessage") $ testFromJSONObjects [(testObject_NewOtrMessage_user_1, "testObject_NewOtrMessage_user_1.json")], + testCase "SimpleMember" $ + testFromJSONObjects + [(testObject_SimpleMember_user_1, "testObject_SimpleMember_user_1.json")], testCase "NewConv" $ testFromJSONObjects [(testObject_NewConvUnmanaged_user_1, "testObject_NewConvUnmanaged_user_1.json")] diff --git a/libs/wire-api/test/unit/Test/Wire/API/Golden/Generated/AddBotResponse_user.hs b/libs/wire-api/test/unit/Test/Wire/API/Golden/Generated/AddBotResponse_user.hs index 6f87f962d23..202b309446b 100644 --- a/libs/wire-api/test/unit/Test/Wire/API/Golden/Generated/AddBotResponse_user.hs +++ b/libs/wire-api/test/unit/Test/Wire/API/Golden/Generated/AddBotResponse_user.hs @@ -20,8 +20,10 @@ module Test.Wire.API.Golden.Generated.AddBotResponse_user where import Data.Code (Key (Key, asciiKey), Value (Value, asciiValue)) import Data.Coerce (coerce) +import Data.Domain import Data.Id (BotId (BotId), ClientId (ClientId, client), Id (Id)) import Data.Misc (HttpsUrl (HttpsUrl), Milliseconds (Ms, ms)) +import Data.Qualified import Data.Range (unsafeRange) import Data.Text.Ascii (AsciiChars (validate)) import qualified Data.UUID as UUID (fromString) @@ -135,7 +137,7 @@ import Wire.API.Event.Conversation misOtrMutedStatus, misTarget ), - SimpleMember (SimpleMember, smConvRoleName, smId), + SimpleMember (..), SimpleMembers (SimpleMembers, mMembers), UserIdList (UserIdList, mUsers), ) @@ -162,8 +164,8 @@ testObject_AddBotResponse_user_1 = rsAddBotEvent = ( Event (ConvRename) - ((Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000200000003")))) - ((Id (fromJust (UUID.fromString "00000004-0000-0004-0000-000400000004")))) + (Qualified (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000200000003"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00000004-0000-0004-0000-000400000004"))) (Domain "faraway.example.com")) (read "1864-05-12 19:20:22.286 UTC") ((EdConvRename (ConversationRename {cupName = "6"}))) ) @@ -184,8 +186,8 @@ testObject_AddBotResponse_user_2 = rsAddBotEvent = ( Event (Typing) - ((Id (fromJust (UUID.fromString "00000000-0000-0002-0000-000300000001")))) - ((Id (fromJust (UUID.fromString "00000004-0000-0000-0000-000300000001")))) + (Qualified (Id (fromJust (UUID.fromString "00000000-0000-0002-0000-000300000001"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00000004-0000-0000-0000-000300000001"))) (Domain "faraway.example.com")) (read "1864-05-08 19:02:58.6 UTC") ((EdTyping (TypingData {tdStatus = StartedTyping}))) ) @@ -211,8 +213,8 @@ testObject_AddBotResponse_user_3 = rsAddBotEvent = ( Event (ConvCreate) - ((Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000003")))) - ((Id (fromJust (UUID.fromString "00000000-0000-0004-0000-000400000004")))) + (Qualified (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000003"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00000000-0000-0004-0000-000400000004"))) (Domain "faraway.example.com")) (read "1864-05-10 11:22:13.523 UTC") ( ( EdConversation ( Conversation @@ -264,8 +266,8 @@ testObject_AddBotResponse_user_4 = rsAddBotEvent = ( Event (ConvDelete) - ((Id (fromJust (UUID.fromString "00000003-0000-0002-0000-000300000003")))) - ((Id (fromJust (UUID.fromString "00000001-0000-0002-0000-000300000001")))) + (Qualified (Id (fromJust (UUID.fromString "00000003-0000-0002-0000-000300000003"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00000001-0000-0002-0000-000300000001"))) (Domain "faraway.example.com")) (read "1864-05-06 03:03:10.788 UTC") (EdConvDelete) ) @@ -290,8 +292,8 @@ testObject_AddBotResponse_user_5 = rsAddBotEvent = ( Event (ConvCreate) - ((Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000001")))) - ((Id (fromJust (UUID.fromString "00000001-0000-0004-0000-000000000002")))) + (Qualified (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000001"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00000001-0000-0004-0000-000000000002"))) (Domain "faraway.example.com")) (read "1864-05-13 21:19:26.488 UTC") ( ( EdConversation ( Conversation @@ -356,8 +358,8 @@ testObject_AddBotResponse_user_6 = rsAddBotEvent = ( Event (ConvCodeUpdate) - ((Id (fromJust (UUID.fromString "00000003-0000-0001-0000-000000000003")))) - ((Id (fromJust (UUID.fromString "00000002-0000-0004-0000-000300000001")))) + (Qualified (Id (fromJust (UUID.fromString "00000003-0000-0001-0000-000000000003"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00000002-0000-0004-0000-000300000001"))) (Domain "faraway.example.com")) (read "1864-05-14 23:40:44.551 UTC") ( ( EdConvCodeUpdate ( ConversationCode @@ -405,8 +407,8 @@ testObject_AddBotResponse_user_7 = rsAddBotEvent = ( Event (ConvReceiptModeUpdate) - ((Id (fromJust (UUID.fromString "00000000-0000-0004-0000-000300000004")))) - ((Id (fromJust (UUID.fromString "00000003-0000-0001-0000-000400000001")))) + (Qualified (Id (fromJust (UUID.fromString "00000000-0000-0004-0000-000300000004"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00000003-0000-0001-0000-000400000001"))) (Domain "faraway.example.com")) (read "1864-05-07 22:30:05.775 UTC") ((EdConvReceiptModeUpdate (ConversationReceiptModeUpdate {cruReceiptMode = ReceiptMode {unReceiptMode = -4}}))) ) @@ -427,8 +429,8 @@ testObject_AddBotResponse_user_8 = rsAddBotEvent = ( Event (ConvAccessUpdate) - ((Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000200000003")))) - ((Id (fromJust (UUID.fromString "00000004-0000-0000-0000-000400000000")))) + (Qualified (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000200000003"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00000004-0000-0000-0000-000400000000"))) (Domain "faraway.example.com")) (read "1864-05-05 09:04:05.078 UTC") ( ( EdConvAccessUpdate (ConversationAccessUpdate {cupAccess = [LinkAccess, PrivateAccess], cupAccessRole = ActivatedAccessRole}) @@ -453,8 +455,8 @@ testObject_AddBotResponse_user_9 = rsAddBotEvent = ( Event (MemberStateUpdate) - ((Id (fromJust (UUID.fromString "00000002-0000-0004-0000-000000000004")))) - ((Id (fromJust (UUID.fromString "00000002-0000-0002-0000-000100000002")))) + (Qualified (Id (fromJust (UUID.fromString "00000002-0000-0004-0000-000000000004"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00000002-0000-0002-0000-000100000002"))) (Domain "faraway.example.com")) (read "1864-05-07 17:13:06.966 UTC") ( ( EdMemberUpdate ( MemberUpdateData @@ -489,8 +491,8 @@ testObject_AddBotResponse_user_10 = rsAddBotEvent = ( Event (MemberLeave) - ((Id (fromJust (UUID.fromString "00000002-0000-0004-0000-000400000001")))) - ((Id (fromJust (UUID.fromString "00000002-0000-0001-0000-000200000000")))) + (Qualified (Id (fromJust (UUID.fromString "00000002-0000-0004-0000-000400000001"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00000002-0000-0001-0000-000200000000"))) (Domain "faraway.example.com")) (read "1864-05-04 10:22:33.842 UTC") ((EdMembersLeave (UserIdList {mUsers = []}))) ) @@ -511,8 +513,8 @@ testObject_AddBotResponse_user_11 = rsAddBotEvent = ( Event (ConvAccessUpdate) - ((Id (fromJust (UUID.fromString "00000000-0000-0003-0000-000300000004")))) - ((Id (fromJust (UUID.fromString "00000003-0000-0003-0000-000100000000")))) + (Qualified (Id (fromJust (UUID.fromString "00000000-0000-0003-0000-000300000004"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00000003-0000-0003-0000-000100000000"))) (Domain "faraway.example.com")) (read "1864-05-04 14:10:34.032 UTC") ( ( EdConvAccessUpdate (ConversationAccessUpdate {cupAccess = [CodeAccess], cupAccessRole = ActivatedAccessRole}) @@ -532,8 +534,8 @@ testObject_AddBotResponse_user_12 = rsAddBotEvent = ( Event (ConvConnect) - ((Id (fromJust (UUID.fromString "00000003-0000-0000-0000-000200000000")))) - ((Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000002")))) + (Qualified (Id (fromJust (UUID.fromString "00000003-0000-0000-0000-000200000000"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000002"))) (Domain "faraway.example.com")) (read "1864-05-05 01:06:47.245 UTC") ( ( EdConnect ( Connect @@ -569,8 +571,8 @@ testObject_AddBotResponse_user_13 = rsAddBotEvent = ( Event (ConvReceiptModeUpdate) - ((Id (fromJust (UUID.fromString "00000000-0000-0003-0000-000100000001")))) - ((Id (fromJust (UUID.fromString "00000004-0000-0001-0000-000400000002")))) + (Qualified (Id (fromJust (UUID.fromString "00000000-0000-0003-0000-000100000001"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00000004-0000-0001-0000-000400000002"))) (Domain "faraway.example.com")) (read "1864-05-13 05:09:37.371 UTC") ((EdConvReceiptModeUpdate (ConversationReceiptModeUpdate {cruReceiptMode = ReceiptMode {unReceiptMode = 3}}))) ) @@ -591,8 +593,8 @@ testObject_AddBotResponse_user_14 = rsAddBotEvent = ( Event (MemberStateUpdate) - ((Id (fromJust (UUID.fromString "00000001-0000-0004-0000-000000000004")))) - ((Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000200000001")))) + (Qualified (Id (fromJust (UUID.fromString "00000001-0000-0004-0000-000000000004"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000200000001"))) (Domain "faraway.example.com")) (read "1864-05-13 06:48:06.601 UTC") ( ( EdMemberUpdate ( MemberUpdateData @@ -632,14 +634,14 @@ testObject_AddBotResponse_user_15 = rsAddBotEvent = ( Event (MemberJoin) - ((Id (fromJust (UUID.fromString "00000002-0000-0001-0000-000100000000")))) - ((Id (fromJust (UUID.fromString "00000003-0000-0001-0000-000200000003")))) + (Qualified (Id (fromJust (UUID.fromString "00000002-0000-0001-0000-000100000000"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00000003-0000-0001-0000-000200000003"))) (Domain "faraway.example.com")) (read "1864-05-11 04:21:51.377 UTC") ( ( EdMembersJoin ( SimpleMembers { mMembers = [ SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000002-0000-0002-0000-000200000001"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000002-0000-0002-0000-000200000001"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -648,7 +650,7 @@ testObject_AddBotResponse_user_15 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000001"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000001"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -657,12 +659,12 @@ testObject_AddBotResponse_user_15 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000002"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000002"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "jf7f75hkum6_zxqiabxu8zix2_1kutsjijedcjckapwmymcxx11")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000002"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000002"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -693,8 +695,8 @@ testObject_AddBotResponse_user_16 = rsAddBotEvent = ( Event (ConvRename) - ((Id (fromJust (UUID.fromString "00000004-0000-0003-0000-000200000000")))) - ((Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000200000001")))) + (Qualified (Id (fromJust (UUID.fromString "00000004-0000-0003-0000-000200000000"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000200000001"))) (Domain "faraway.example.com")) (read "1864-05-07 11:54:38.133 UTC") ((EdConvRename (ConversationRename {cupName = "\72291)@\16969"}))) ) @@ -711,8 +713,8 @@ testObject_AddBotResponse_user_17 = rsAddBotEvent = ( Event (ConvAccessUpdate) - ((Id (fromJust (UUID.fromString "00000003-0000-0002-0000-000100000002")))) - ((Id (fromJust (UUID.fromString "00000003-0000-0000-0000-000400000001")))) + (Qualified (Id (fromJust (UUID.fromString "00000003-0000-0002-0000-000100000002"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00000003-0000-0000-0000-000400000001"))) (Domain "faraway.example.com")) (read "1864-05-09 16:18:32.395 UTC") ( ( EdConvAccessUpdate ( ConversationAccessUpdate @@ -746,8 +748,8 @@ testObject_AddBotResponse_user_18 = rsAddBotEvent = ( Event (ConvRename) - ((Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000001")))) - ((Id (fromJust (UUID.fromString "00000001-0000-0002-0000-000000000003")))) + (Qualified (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000001"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00000001-0000-0002-0000-000000000003"))) (Domain "faraway.example.com")) (read "1864-05-13 04:14:10.186 UTC") ((EdConvRename (ConversationRename {cupName = "+S\994417x1"}))) ) @@ -764,8 +766,8 @@ testObject_AddBotResponse_user_19 = rsAddBotEvent = ( Event (ConvCodeDelete) - ((Id (fromJust (UUID.fromString "00000003-0000-0003-0000-000000000000")))) - ((Id (fromJust (UUID.fromString "00000004-0000-0003-0000-000400000002")))) + (Qualified (Id (fromJust (UUID.fromString "00000003-0000-0003-0000-000000000000"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00000004-0000-0003-0000-000400000002"))) (Domain "faraway.example.com")) (read "1864-05-14 03:03:50.569 UTC") (EdConvCodeDelete) ) @@ -786,8 +788,8 @@ testObject_AddBotResponse_user_20 = rsAddBotEvent = ( Event (ConvMessageTimerUpdate) - ((Id (fromJust (UUID.fromString "00000003-0000-0002-0000-000200000004")))) - ((Id (fromJust (UUID.fromString "00000002-0000-0003-0000-000200000004")))) + (Qualified (Id (fromJust (UUID.fromString "00000003-0000-0002-0000-000200000004"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00000002-0000-0003-0000-000200000004"))) (Domain "faraway.example.com")) (read "1864-05-08 05:48:34.348 UTC") ( ( EdConvMessageTimerUpdate (ConversationMessageTimerUpdate {cupMessageTimer = Just (Ms {ms = 3346692440762670})}) diff --git a/libs/wire-api/test/unit/Test/Wire/API/Golden/Generated/Event_user.hs b/libs/wire-api/test/unit/Test/Wire/API/Golden/Generated/Event_user.hs index 3decf1acaca..8ff7e219437 100644 --- a/libs/wire-api/test/unit/Test/Wire/API/Golden/Generated/Event_user.hs +++ b/libs/wire-api/test/unit/Test/Wire/API/Golden/Generated/Event_user.hs @@ -64,7 +64,7 @@ import Wire.API.Event.Conversation otrRecipient, otrSender ), - SimpleMember (SimpleMember, smConvRoleName, smId), + SimpleMember (..), SimpleMembers (SimpleMembers, mMembers), UserIdList (UserIdList, mUsers), ) @@ -77,8 +77,8 @@ testObject_Event_user_1 :: Event testObject_Event_user_1 = ( Event (ConvDelete) - ((Id (fromJust (UUID.fromString "00005d81-0000-0d71-0000-1d8f00007d32")))) - ((Id (fromJust (UUID.fromString "00003b8b-0000-3395-0000-076a00007830")))) + (Qualified (Id (fromJust (UUID.fromString "00005d81-0000-0d71-0000-1d8f00007d32"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00003b8b-0000-3395-0000-076a00007830"))) (Domain "faraway.example.com")) (read "1864-05-22 09:51:07.104 UTC") (EdConvDelete) ) @@ -87,8 +87,8 @@ testObject_Event_user_2 :: Event testObject_Event_user_2 = ( Event (ConvAccessUpdate) - ((Id (fromJust (UUID.fromString "0000064d-0000-7a7f-0000-5749000029e1")))) - ((Id (fromJust (UUID.fromString "00006a88-0000-2acb-0000-6aa0000061b2")))) + (Qualified (Id (fromJust (UUID.fromString "0000064d-0000-7a7f-0000-5749000029e1"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00006a88-0000-2acb-0000-6aa0000061b2"))) (Domain "faraway.example.com")) (read "1864-06-05 23:01:18.769 UTC") ( ( EdConvAccessUpdate ( ConversationAccessUpdate @@ -104,8 +104,8 @@ testObject_Event_user_3 :: Event testObject_Event_user_3 = ( Event (OtrMessageAdd) - ((Id (fromJust (UUID.fromString "00006f8c-0000-00d6-0000-1568000001e9")))) - ((Id (fromJust (UUID.fromString "00004b11-0000-5504-0000-55d800002188")))) + (Qualified (Id (fromJust (UUID.fromString "00006f8c-0000-00d6-0000-1568000001e9"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00004b11-0000-5504-0000-55d800002188"))) (Domain "faraway.example.com")) (read "1864-04-27 15:44:23.844 UTC") ( ( EdOtrMessage ( OtrMessage @@ -123,8 +123,8 @@ testObject_Event_user_4 :: Event testObject_Event_user_4 = ( Event (ConvCodeDelete) - ((Id (fromJust (UUID.fromString "00004f04-0000-3939-0000-472d0000316b")))) - ((Id (fromJust (UUID.fromString "00007c90-0000-766a-0000-01b700002ab7")))) + (Qualified (Id (fromJust (UUID.fromString "00004f04-0000-3939-0000-472d0000316b"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00007c90-0000-766a-0000-01b700002ab7"))) (Domain "faraway.example.com")) (read "1864-05-12 00:59:09.2 UTC") (EdConvCodeDelete) ) @@ -133,8 +133,8 @@ testObject_Event_user_5 :: Event testObject_Event_user_5 = ( Event (MemberStateUpdate) - ((Id (fromJust (UUID.fromString "00003c8c-0000-6394-0000-294b0000098b")))) - ((Id (fromJust (UUID.fromString "00002a12-0000-73e1-0000-71f700002ec9")))) + (Qualified (Id (fromJust (UUID.fromString "00003c8c-0000-6394-0000-294b0000098b"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00002a12-0000-73e1-0000-71f700002ec9"))) (Domain "faraway.example.com")) (read "1864-04-12 03:04:00.298 UTC") ( ( EdMemberUpdate ( MemberUpdateData @@ -161,8 +161,8 @@ testObject_Event_user_6 :: Event testObject_Event_user_6 = ( Event (ConvMessageTimerUpdate) - ((Id (fromJust (UUID.fromString "00001fdb-0000-3127-0000-23ef00007183")))) - ((Id (fromJust (UUID.fromString "0000705a-0000-0b62-0000-425c000049c8")))) + (Qualified (Id (fromJust (UUID.fromString "00001fdb-0000-3127-0000-23ef00007183"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "0000705a-0000-0b62-0000-425c000049c8"))) (Domain "faraway.example.com")) (read "1864-05-09 05:44:41.382 UTC") ((EdConvMessageTimerUpdate (ConversationMessageTimerUpdate {cupMessageTimer = Just (Ms {ms = 5029817038083912})}))) ) @@ -171,8 +171,8 @@ testObject_Event_user_7 :: Event testObject_Event_user_7 = ( Event (Typing) - ((Id (fromJust (UUID.fromString "00006ac1-0000-543e-0000-7c8f00000be7")))) - ((Id (fromJust (UUID.fromString "0000355a-0000-2979-0000-083000002d5e")))) + (Qualified (Id (fromJust (UUID.fromString "00006ac1-0000-543e-0000-7c8f00000be7"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "0000355a-0000-2979-0000-083000002d5e"))) (Domain "faraway.example.com")) (read "1864-04-18 05:01:13.761 UTC") ((EdTyping (TypingData {tdStatus = StoppedTyping}))) ) @@ -181,8 +181,8 @@ testObject_Event_user_8 :: Event testObject_Event_user_8 = ( Event (ConvCodeDelete) - ((Id (fromJust (UUID.fromString "00000892-0000-53c7-0000-0c870000027a")))) - ((Id (fromJust (UUID.fromString "000008e8-0000-43fa-0000-4dd1000034cc")))) + (Qualified (Id (fromJust (UUID.fromString "00000892-0000-53c7-0000-0c870000027a"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "000008e8-0000-43fa-0000-4dd1000034cc"))) (Domain "faraway.example.com")) (read "1864-06-08 15:19:01.916 UTC") (EdConvCodeDelete) ) @@ -191,8 +191,8 @@ testObject_Event_user_9 :: Event testObject_Event_user_9 = ( Event (ConvAccessUpdate) - ((Id (fromJust (UUID.fromString "00004847-0000-1eb9-0000-2973000039ca")))) - ((Id (fromJust (UUID.fromString "000044e3-0000-1c36-0000-42fd00006e01")))) + (Qualified (Id (fromJust (UUID.fromString "00004847-0000-1eb9-0000-2973000039ca"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "000044e3-0000-1c36-0000-42fd00006e01"))) (Domain "faraway.example.com")) (read "1864-05-21 16:22:14.886 UTC") ( ( EdConvAccessUpdate ( ConversationAccessUpdate @@ -209,8 +209,8 @@ testObject_Event_user_10 :: Event testObject_Event_user_10 = ( Event (ConvCreate) - ((Id (fromJust (UUID.fromString "000019e1-0000-1dc6-0000-68de0000246d")))) - ((Id (fromJust (UUID.fromString "00000457-0000-0689-0000-77a00000021c")))) + (Qualified (Id (fromJust (UUID.fromString "000019e1-0000-1dc6-0000-68de0000246d"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00000457-0000-0689-0000-77a00000021c"))) (Domain "faraway.example.com")) (read "1864-05-29 19:31:31.226 UTC") ( ( EdConversation ( Conversation @@ -326,8 +326,8 @@ testObject_Event_user_11 :: Event testObject_Event_user_11 = ( Event (MemberStateUpdate) - ((Id (fromJust (UUID.fromString "000031c2-0000-108c-0000-10a500000882")))) - ((Id (fromJust (UUID.fromString "00005335-0000-2983-0000-46460000082f")))) + (Qualified (Id (fromJust (UUID.fromString "000031c2-0000-108c-0000-10a500000882"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00005335-0000-2983-0000-46460000082f"))) (Domain "faraway.example.com")) (read "1864-05-03 06:49:41.178 UTC") ( ( EdMemberUpdate ( MemberUpdateData @@ -350,8 +350,8 @@ testObject_Event_user_12 :: Event testObject_Event_user_12 = ( Event (ConvDelete) - ((Id (fromJust (UUID.fromString "00007474-0000-2a7b-0000-125900006ac9")))) - ((Id (fromJust (UUID.fromString "00000795-0000-709d-0000-11270000007a")))) + (Qualified (Id (fromJust (UUID.fromString "00007474-0000-2a7b-0000-125900006ac9"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00000795-0000-709d-0000-11270000007a"))) (Domain "faraway.example.com")) (read "1864-05-23 17:16:29.326 UTC") (EdConvDelete) ) @@ -360,8 +360,8 @@ testObject_Event_user_13 :: Event testObject_Event_user_13 = ( Event (OtrMessageAdd) - ((Id (fromJust (UUID.fromString "00006355-0000-5f6e-0000-592c0000680c")))) - ((Id (fromJust (UUID.fromString "000029eb-0000-06f8-0000-514100000a84")))) + (Qualified (Id (fromJust (UUID.fromString "00006355-0000-5f6e-0000-592c0000680c"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "000029eb-0000-06f8-0000-514100000a84"))) (Domain "faraway.example.com")) (read "1864-05-21 03:22:42.926 UTC") ( ( EdOtrMessage ( OtrMessage @@ -379,8 +379,8 @@ testObject_Event_user_14 :: Event testObject_Event_user_14 = ( Event (ConvReceiptModeUpdate) - ((Id (fromJust (UUID.fromString "00000b98-0000-618d-0000-19e200004651")))) - ((Id (fromJust (UUID.fromString "00004bee-0000-45a0-0000-2c0300005726")))) + (Qualified (Id (fromJust (UUID.fromString "00000b98-0000-618d-0000-19e200004651"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00004bee-0000-45a0-0000-2c0300005726"))) (Domain "faraway.example.com")) (read "1864-05-01 11:57:35.123 UTC") ((EdConvReceiptModeUpdate (ConversationReceiptModeUpdate {cruReceiptMode = ReceiptMode {unReceiptMode = -10505}}))) ) @@ -389,8 +389,8 @@ testObject_Event_user_15 :: Event testObject_Event_user_15 = ( Event (ConvConnect) - ((Id (fromJust (UUID.fromString "00005e43-0000-3b56-0000-7c270000538c")))) - ((Id (fromJust (UUID.fromString "00007f28-0000-40b1-0000-56ab0000748d")))) + (Qualified (Id (fromJust (UUID.fromString "00005e43-0000-3b56-0000-7c270000538c"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00007f28-0000-40b1-0000-56ab0000748d"))) (Domain "faraway.example.com")) (read "1864-05-25 01:31:49.802 UTC") ( ( EdConnect ( Connect @@ -408,8 +408,8 @@ testObject_Event_user_16 :: Event testObject_Event_user_16 = ( Event (ConvAccessUpdate) - ((Id (fromJust (UUID.fromString "00004b59-0000-55d6-0000-5aad00007373")))) - ((Id (fromJust (UUID.fromString "0000211e-0000-0b37-0000-563100003a5d")))) + (Qualified (Id (fromJust (UUID.fromString "00004b59-0000-55d6-0000-5aad00007373"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "0000211e-0000-0b37-0000-563100003a5d"))) (Domain "faraway.example.com")) (read "1864-05-24 00:49:37.413 UTC") ((EdConvAccessUpdate (ConversationAccessUpdate {cupAccess = [], cupAccessRole = ActivatedAccessRole}))) ) @@ -418,8 +418,8 @@ testObject_Event_user_17 :: Event testObject_Event_user_17 = ( Event (Typing) - ((Id (fromJust (UUID.fromString "00006ac8-0000-1342-0000-76880000021d")))) - ((Id (fromJust (UUID.fromString "0000145f-0000-2ce0-0000-4ca800006c72")))) + (Qualified (Id (fromJust (UUID.fromString "00006ac8-0000-1342-0000-76880000021d"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "0000145f-0000-2ce0-0000-4ca800006c72"))) (Domain "faraway.example.com")) (read "1864-04-17 07:39:54.846 UTC") ((EdTyping (TypingData {tdStatus = StoppedTyping}))) ) @@ -428,8 +428,8 @@ testObject_Event_user_18 :: Event testObject_Event_user_18 = ( Event (MemberLeave) - ((Id (fromJust (UUID.fromString "0000303b-0000-23a9-0000-25de00002f80")))) - ((Id (fromJust (UUID.fromString "000043a6-0000-1627-0000-490300002017")))) + (Qualified (Id (fromJust (UUID.fromString "0000303b-0000-23a9-0000-25de00002f80"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "000043a6-0000-1627-0000-490300002017"))) (Domain "faraway.example.com")) (read "1864-04-12 01:28:25.705 UTC") ( ( EdMembersLeave ( UserIdList @@ -470,18 +470,18 @@ testObject_Event_user_19 :: Event testObject_Event_user_19 = ( Event (MemberJoin) - ((Id (fromJust (UUID.fromString "00000838-0000-1bc6-0000-686d00003565")))) - ((Id (fromJust (UUID.fromString "0000114a-0000-7da8-0000-40cb00007fcf")))) + (Qualified (Id (fromJust (UUID.fromString "00000838-0000-1bc6-0000-686d00003565"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "0000114a-0000-7da8-0000-40cb00007fcf"))) (Domain "faraway.example.com")) (read "1864-05-12 20:29:47.483 UTC") ( ( EdMembersJoin ( SimpleMembers { mMembers = [ SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000055-0000-004d-0000-005100000037"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000055-0000-004d-0000-005100000037"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "dlkagbmicz0f95d")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000004c-0000-0051-0000-00220000005c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000004c-0000-0051-0000-00220000005c"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -490,7 +490,7 @@ testObject_Event_user_19 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000014-0000-0027-0000-003400000023"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000014-0000-0027-0000-003400000023"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -499,15 +499,15 @@ testObject_Event_user_19 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000001-0000-001f-0000-001500000009"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000001-0000-001f-0000-001500000009"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "2e")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000005d-0000-0064-0000-00590000007d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000005d-0000-0064-0000-00590000007d"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "f3nxp18px4kup3nrarx5wsp1o_eh69")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000068-0000-007a-0000-005a0000006c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000068-0000-007a-0000-005a0000006c"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -516,32 +516,32 @@ testObject_Event_user_19 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000074-0000-0036-0000-00780000007d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000074-0000-0036-0000-00780000007d"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "f9i5d2wd01ijp53en5bq8lch__jlnu8_v2xsgkctpin98byh1009f_v63")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001c-0000-000a-0000-004800000063"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001c-0000-000a-0000-004800000063"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "o_oqigzovv9oc2uxckvk5eofmc")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000056-0000-0028-0000-004f00000079"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000056-0000-0028-0000-004f00000079"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust (parseRoleName "5snj8s5t7nicihwspcp4sg4ny1pa1yb2s6601vjyxhksbciotoi_rvivybk1iviuz8buw") ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001e-0000-0054-0000-002300000053"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001e-0000-0054-0000-002300000053"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "73e9u2hpffjb5ids29tbtcceg0i9v2")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000004d-0000-0027-0000-007500000042"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000004d-0000-0027-0000-007500000042"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "d2s4mc_qt1cc2rox8c9gak_qivlha7q259lsz7y5bz6dxsv8igx9r")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000050-0000-006e-0000-007000000057"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000050-0000-006e-0000-007000000057"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -550,11 +550,11 @@ testObject_Event_user_19 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000007a-0000-003c-0000-005300000013"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000007a-0000-003c-0000-005300000013"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "v7ldb8mov4an62t6")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000001-0000-0064-0000-005e00000072"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000001-0000-0064-0000-005e00000072"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -563,7 +563,7 @@ testObject_Event_user_19 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000020-0000-0012-0000-000500000036"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000020-0000-0012-0000-000500000036"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "s6creybsl300lqkhu0wv_ikgattm3bd1r")) } ] @@ -577,8 +577,8 @@ testObject_Event_user_20 :: Event testObject_Event_user_20 = ( Event (MemberLeave) - ((Id (fromJust (UUID.fromString "00000c88-0000-433f-0000-669100006374")))) - ((Id (fromJust (UUID.fromString "00007547-0000-26d8-0000-52280000157c")))) + (Qualified (Id (fromJust (UUID.fromString "00000c88-0000-433f-0000-669100006374"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00007547-0000-26d8-0000-52280000157c"))) (Domain "faraway.example.com")) (read "1864-04-21 23:40:54.462 UTC") ( ( EdMembersLeave ( UserIdList diff --git a/libs/wire-api/test/unit/Test/Wire/API/Golden/Generated/RemoveBotResponse_user.hs b/libs/wire-api/test/unit/Test/Wire/API/Golden/Generated/RemoveBotResponse_user.hs index 72431d7ad0e..ee3cffb3dec 100644 --- a/libs/wire-api/test/unit/Test/Wire/API/Golden/Generated/RemoveBotResponse_user.hs +++ b/libs/wire-api/test/unit/Test/Wire/API/Golden/Generated/RemoveBotResponse_user.hs @@ -20,8 +20,10 @@ module Test.Wire.API.Golden.Generated.RemoveBotResponse_user where import Data.Code (Key (Key, asciiKey), Value (Value, asciiValue)) import Data.Coerce (coerce) +import Data.Domain import Data.Id (ClientId (ClientId, client), Id (Id)) import Data.Misc (HttpsUrl (HttpsUrl), Milliseconds (Ms, ms)) +import Data.Qualified import Data.Range (unsafeRange) import Data.Text.Ascii (AsciiChars (validate)) import qualified Data.UUID as UUID (fromString) @@ -94,7 +96,7 @@ import Wire.API.Event.Conversation otrRecipient, otrSender ), - SimpleMember (SimpleMember, smConvRoleName, smId), + SimpleMember (..), SimpleMembers (SimpleMembers, mMembers), UserIdList (UserIdList, mUsers), ) @@ -105,8 +107,8 @@ testObject_RemoveBotResponse_user_1 = { rsRemoveBotEvent = ( Event (MemberLeave) - ((Id (fromJust (UUID.fromString "00003ab8-0000-0cff-0000-427f000000df")))) - ((Id (fromJust (UUID.fromString "00004166-0000-1e32-0000-52cb0000428d")))) + (Qualified (Id (fromJust (UUID.fromString "00003ab8-0000-0cff-0000-427f000000df"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00004166-0000-1e32-0000-52cb0000428d"))) (Domain "faraway.example.com")) (read "1864-05-07 01:13:35.741 UTC") ( ( EdMembersLeave ( UserIdList @@ -155,8 +157,8 @@ testObject_RemoveBotResponse_user_2 = { rsRemoveBotEvent = ( Event (ConvDelete) - ((Id (fromJust (UUID.fromString "00005a06-0000-10ab-0000-4999000058de")))) - ((Id (fromJust (UUID.fromString "00004247-0000-0560-0000-07df00005850")))) + (Qualified (Id (fromJust (UUID.fromString "00005a06-0000-10ab-0000-4999000058de"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00004247-0000-0560-0000-07df00005850"))) (Domain "faraway.example.com")) (read "1864-04-23 16:56:18.982 UTC") (EdConvDelete) ) @@ -168,22 +170,22 @@ testObject_RemoveBotResponse_user_3 = { rsRemoveBotEvent = ( Event (MemberJoin) - ((Id (fromJust (UUID.fromString "000031b6-0000-7f2c-0000-22ca000012a0")))) - ((Id (fromJust (UUID.fromString "00005a35-0000-3751-0000-76fe000044c2")))) + (Qualified (Id (fromJust (UUID.fromString "000031b6-0000-7f2c-0000-22ca000012a0"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00005a35-0000-3751-0000-76fe000044c2"))) (Domain "faraway.example.com")) (read "1864-04-23 02:07:23.62 UTC") ( ( EdMembersJoin ( SimpleMembers { mMembers = [ SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000042-0000-0046-0000-005e0000001f"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000042-0000-0046-0000-005e0000001f"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "3jqe4rv30oxjs05p0vjx_gv")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000073-0000-003c-0000-005800000069"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000073-0000-003c-0000-005800000069"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "gv66owx6jn8")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000003a-0000-0056-0000-000e00000038"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000003a-0000-0056-0000-000e00000038"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -192,14 +194,14 @@ testObject_RemoveBotResponse_user_3 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000007c-0000-0075-0000-006500000036"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000007c-0000-0075-0000-006500000036"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust (parseRoleName "_6hbn84l_4xly84ic0hrz_m4unx_i2_5sfotmu2xjmylyly_qilavdw54n1reep") ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000031-0000-0004-0000-005e00000060"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000031-0000-0004-0000-005e00000060"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -208,12 +210,12 @@ testObject_RemoveBotResponse_user_3 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000007b-0000-0019-0000-002a00000000"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000007b-0000-0019-0000-002a00000000"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "4agujelz62r_o96qfxja1h60hqmsbuowdhmqb1zvrlhtru6b66vl1lu5oc1")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000000c-0000-0069-0000-006600000032"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000000c-0000-0069-0000-006600000032"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -222,11 +224,11 @@ testObject_RemoveBotResponse_user_3 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001d-0000-0006-0000-00540000005a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001d-0000-0006-0000-00540000005a"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "ii7eljki45zqe819xzx16tkvbgb85")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000007f-0000-005d-0000-000700000035"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000007f-0000-005d-0000-000700000035"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -235,7 +237,7 @@ testObject_RemoveBotResponse_user_3 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000006b-0000-005e-0000-003d0000007c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000006b-0000-005e-0000-003d0000007c"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -244,7 +246,7 @@ testObject_RemoveBotResponse_user_3 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000005e-0000-000e-0000-00300000005f"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000005e-0000-000e-0000-00300000005f"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -253,7 +255,7 @@ testObject_RemoveBotResponse_user_3 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000060-0000-0000-0000-001e0000003b"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000060-0000-0000-0000-001e0000003b"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -262,24 +264,24 @@ testObject_RemoveBotResponse_user_3 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000030-0000-000e-0000-006f0000001d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000030-0000-000e-0000-006f0000001d"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "rw50gu92raxvq87hqpf7r_xyl")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000003f-0000-005e-0000-003200000062"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000003f-0000-005e-0000-003200000062"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "5bizt8d567yjavituolq2unxfh0qyih7_9dep7cpix5bucbevifs2m0")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000002e-0000-007d-0000-005e0000004d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000002e-0000-007d-0000-005e0000004d"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "1kit803b528tmtyvlkespy")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000007c-0000-0013-0000-007100000049"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000007c-0000-0013-0000-007100000049"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "74l03am2b")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000012-0000-0058-0000-00500000004d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000012-0000-0058-0000-00500000004d"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -288,7 +290,7 @@ testObject_RemoveBotResponse_user_3 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000060-0000-007f-0000-003c0000001d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000060-0000-007f-0000-003c0000001d"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -297,7 +299,7 @@ testObject_RemoveBotResponse_user_3 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000034-0000-005a-0000-003600000063"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000034-0000-005a-0000-003600000063"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -306,7 +308,7 @@ testObject_RemoveBotResponse_user_3 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000006a-0000-007f-0000-006700000068"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000006a-0000-007f-0000-006700000068"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "wf0v8gr2oqqdm")) } ] @@ -323,8 +325,8 @@ testObject_RemoveBotResponse_user_4 = { rsRemoveBotEvent = ( Event (ConvAccessUpdate) - ((Id (fromJust (UUID.fromString "000057d8-0000-4ce9-0000-2a9a00001ced")))) - ((Id (fromJust (UUID.fromString "00005b30-0000-0805-0000-116700000485")))) + (Qualified (Id (fromJust (UUID.fromString "000057d8-0000-4ce9-0000-2a9a00001ced"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00005b30-0000-0805-0000-116700000485"))) (Domain "faraway.example.com")) (read "1864-05-21 00:12:51.49 UTC") ((EdConvAccessUpdate (ConversationAccessUpdate {cupAccess = [], cupAccessRole = ActivatedAccessRole}))) ) @@ -336,8 +338,8 @@ testObject_RemoveBotResponse_user_5 = { rsRemoveBotEvent = ( Event (ConvAccessUpdate) - ((Id (fromJust (UUID.fromString "00004615-0000-2e80-0000-552b0000353c")))) - ((Id (fromJust (UUID.fromString "0000134e-0000-6a75-0000-470a00006537")))) + (Qualified (Id (fromJust (UUID.fromString "00004615-0000-2e80-0000-552b0000353c"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "0000134e-0000-6a75-0000-470a00006537"))) (Domain "faraway.example.com")) (read "1864-04-14 01:56:55.057 UTC") ( ( EdConvAccessUpdate ( ConversationAccessUpdate @@ -356,14 +358,14 @@ testObject_RemoveBotResponse_user_6 = { rsRemoveBotEvent = ( Event (MemberJoin) - ((Id (fromJust (UUID.fromString "00002aa8-0000-7a99-0000-660700000bd3")))) - ((Id (fromJust (UUID.fromString "000036f7-0000-6d15-0000-0ff200006a4c")))) + (Qualified (Id (fromJust (UUID.fromString "00002aa8-0000-7a99-0000-660700000bd3"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "000036f7-0000-6d15-0000-0ff200006a4c"))) (Domain "faraway.example.com")) (read "1864-05-31 11:11:10.792 UTC") ( ( EdMembersJoin ( SimpleMembers { mMembers = [ SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000041-0000-004b-0000-002300000030"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000041-0000-004b-0000-002300000030"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -372,7 +374,7 @@ testObject_RemoveBotResponse_user_6 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000055-0000-0065-0000-005000000065"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000055-0000-0065-0000-005000000065"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -381,7 +383,7 @@ testObject_RemoveBotResponse_user_6 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000000e-0000-0042-0000-00580000000a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000000e-0000-0042-0000-00580000000a"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -390,26 +392,26 @@ testObject_RemoveBotResponse_user_6 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000006b-0000-0080-0000-00360000000c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000006b-0000-0080-0000-00360000000c"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust (parseRoleName "kf14jpkab__n0g0ssfw21_3q52t2op841s0zl8edy11acgb218rr4nmkodozdim") ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000031-0000-0006-0000-003f00000069"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000031-0000-0006-0000-003f00000069"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "06i5vil75hof_mqn8_7cuglrizks")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000006f-0000-0026-0000-006000000045"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000006f-0000-0026-0000-006000000045"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "cux_igluvokgr7z7ikcqcmm9dhskcimfufmsxwb11vfv")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000002a-0000-0080-0000-003e00000014"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000002a-0000-0080-0000-003e00000014"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "es0p")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001d-0000-006f-0000-003e0000003d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001d-0000-006f-0000-003e0000003d"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -418,15 +420,15 @@ testObject_RemoveBotResponse_user_6 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000004c-0000-0065-0000-007d00000026"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000004c-0000-0065-0000-007d00000026"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "4pgdip19fs0")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000028-0000-005b-0000-007d00000042"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000028-0000-005b-0000-007d00000042"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "x76ykqupchbjeozez7aqxynobvjd38xuqb")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000011-0000-0031-0000-001e00000055"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000011-0000-0031-0000-001e00000055"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -435,11 +437,11 @@ testObject_RemoveBotResponse_user_6 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000039-0000-003b-0000-002200000013"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000039-0000-003b-0000-002200000013"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "73c37ry1xfsx")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000007c-0000-0065-0000-001b00000046"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000007c-0000-0065-0000-001b00000046"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -448,7 +450,7 @@ testObject_RemoveBotResponse_user_6 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000034-0000-004c-0000-001c0000007c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000034-0000-004c-0000-001c0000007c"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -457,7 +459,7 @@ testObject_RemoveBotResponse_user_6 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000004-0000-0028-0000-002300000045"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000004-0000-0028-0000-002300000045"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -466,7 +468,7 @@ testObject_RemoveBotResponse_user_6 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000000f-0000-007d-0000-00650000006b"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000000f-0000-007d-0000-00650000006b"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -475,18 +477,18 @@ testObject_RemoveBotResponse_user_6 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000006c-0000-0028-0000-004000000067"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000006c-0000-0028-0000-004000000067"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "2130v11uf_bzjod2p35u_vhotitn")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000059-0000-007e-0000-00580000006c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000059-0000-007e-0000-00580000006c"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust (parseRoleName "6idgmk_1d_g5ii1sfpfcrenr8m2afbe2d71llw8xrlzdhxw_g7vn3foj5_abaul9j71_") ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000007f-0000-0057-0000-004c00000005"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000007f-0000-0057-0000-004c00000005"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -495,16 +497,16 @@ testObject_RemoveBotResponse_user_6 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000004a-0000-000b-0000-001000000004"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000004a-0000-000b-0000-001000000004"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "57guddz98hnzetk8xjme1h_gtmczis9jv3xt73rtjgz6jsentre2s7d2")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000000a-0000-0039-0000-005c00000048"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000000a-0000-0039-0000-005c00000048"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "x0qcthwpdmzimnfqh4rd4sf")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000006a-0000-000d-0000-006300000074"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000006a-0000-000d-0000-006300000074"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -513,11 +515,11 @@ testObject_RemoveBotResponse_user_6 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000003-0000-0078-0000-00310000002b"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000003-0000-0078-0000-00310000002b"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "9ble9wkz5sx4fof474zgb")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000006-0000-0042-0000-007e00000013"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000006-0000-0042-0000-007e00000013"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -526,7 +528,7 @@ testObject_RemoveBotResponse_user_6 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000002d-0000-0043-0000-004f00000078"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000002d-0000-0043-0000-004f00000078"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -535,12 +537,12 @@ testObject_RemoveBotResponse_user_6 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000015-0000-0069-0000-005400000018"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000015-0000-0069-0000-005400000018"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "jiyr52auzomq5ui457z209fcszalvj_wy09_zgc05pfp9x304nwxni")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000064-0000-007d-0000-006b00000055"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000064-0000-007d-0000-006b00000055"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -549,11 +551,11 @@ testObject_RemoveBotResponse_user_6 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000006d-0000-007a-0000-007a00000017"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000006d-0000-007a-0000-007a00000017"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "hcfut6_dj")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000005-0000-0065-0000-002600000007"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000005-0000-0065-0000-002600000007"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "q5_32a257neednc3")) } ] @@ -570,8 +572,8 @@ testObject_RemoveBotResponse_user_7 = { rsRemoveBotEvent = ( Event (OtrMessageAdd) - ((Id (fromJust (UUID.fromString "00006a93-0000-005c-0000-361e00000180")))) - ((Id (fromJust (UUID.fromString "00007bb6-0000-07cc-0000-687c00002703")))) + (Qualified (Id (fromJust (UUID.fromString "00006a93-0000-005c-0000-361e00000180"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00007bb6-0000-07cc-0000-687c00002703"))) (Domain "faraway.example.com")) (read "1864-04-25 18:08:10.735 UTC") ( ( EdOtrMessage ( OtrMessage @@ -592,8 +594,8 @@ testObject_RemoveBotResponse_user_8 = { rsRemoveBotEvent = ( Event (ConvConnect) - ((Id (fromJust (UUID.fromString "000022d4-0000-6167-0000-519f0000134c")))) - ((Id (fromJust (UUID.fromString "0000200d-0000-386f-0000-0de000003b71")))) + (Qualified (Id (fromJust (UUID.fromString "000022d4-0000-6167-0000-519f0000134c"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "0000200d-0000-386f-0000-0de000003b71"))) (Domain "faraway.example.com")) (read "1864-05-29 09:46:28.943 UTC") ( ( EdConnect ( Connect @@ -614,8 +616,8 @@ testObject_RemoveBotResponse_user_9 = { rsRemoveBotEvent = ( Event (OtrMessageAdd) - ((Id (fromJust (UUID.fromString "0000324b-0000-23a4-0000-0fbb00006c87")))) - ((Id (fromJust (UUID.fromString "00006234-0000-7d47-0000-0b95000079f2")))) + (Qualified (Id (fromJust (UUID.fromString "0000324b-0000-23a4-0000-0fbb00006c87"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00006234-0000-7d47-0000-0b95000079f2"))) (Domain "faraway.example.com")) (read "1864-05-18 05:11:02.885 UTC") ( ( EdOtrMessage ( OtrMessage @@ -636,8 +638,8 @@ testObject_RemoveBotResponse_user_10 = { rsRemoveBotEvent = ( Event (Typing) - ((Id (fromJust (UUID.fromString "00005788-0000-327b-0000-7ef80000017e")))) - ((Id (fromJust (UUID.fromString "0000588d-0000-6704-0000-153f00001692")))) + (Qualified (Id (fromJust (UUID.fromString "00005788-0000-327b-0000-7ef80000017e"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "0000588d-0000-6704-0000-153f00001692"))) (Domain "faraway.example.com")) (read "1864-04-11 02:49:27.442 UTC") ((EdTyping (TypingData {tdStatus = StartedTyping}))) ) @@ -649,8 +651,8 @@ testObject_RemoveBotResponse_user_11 = { rsRemoveBotEvent = ( Event (ConvRename) - ((Id (fromJust (UUID.fromString "00001db4-0000-575c-0000-5b9200002c33")))) - ((Id (fromJust (UUID.fromString "000009b3-0000-04dc-0000-310100002b5f")))) + (Qualified (Id (fromJust (UUID.fromString "00001db4-0000-575c-0000-5b9200002c33"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "000009b3-0000-04dc-0000-310100002b5f"))) (Domain "faraway.example.com")) (read "1864-05-25 16:08:53.052 UTC") ( ( EdConvRename ( ConversationRename @@ -668,8 +670,8 @@ testObject_RemoveBotResponse_user_12 = { rsRemoveBotEvent = ( Event (ConvConnect) - ((Id (fromJust (UUID.fromString "00004c29-0000-0214-0000-1d7300001cdc")))) - ((Id (fromJust (UUID.fromString "00003ba8-0000-448c-0000-769e00004cdf")))) + (Qualified (Id (fromJust (UUID.fromString "00004c29-0000-0214-0000-1d7300001cdc"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00003ba8-0000-448c-0000-769e00004cdf"))) (Domain "faraway.example.com")) (read "1864-04-23 00:31:51.842 UTC") ( ( EdConnect ( Connect @@ -690,8 +692,8 @@ testObject_RemoveBotResponse_user_13 = { rsRemoveBotEvent = ( Event (ConvMessageTimerUpdate) - ((Id (fromJust (UUID.fromString "000062a2-0000-46ad-0000-0f8100005bbe")))) - ((Id (fromJust (UUID.fromString "000065a2-0000-1aaa-0000-311000003d69")))) + (Qualified (Id (fromJust (UUID.fromString "000062a2-0000-46ad-0000-0f8100005bbe"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "000065a2-0000-1aaa-0000-311000003d69"))) (Domain "faraway.example.com")) (read "1864-05-06 22:47:56.147 UTC") ((EdConvMessageTimerUpdate (ConversationMessageTimerUpdate {cupMessageTimer = Nothing}))) ) @@ -703,8 +705,8 @@ testObject_RemoveBotResponse_user_14 = { rsRemoveBotEvent = ( Event (ConvCodeUpdate) - ((Id (fromJust (UUID.fromString "0000060f-0000-6d7d-0000-33a800005d07")))) - ((Id (fromJust (UUID.fromString "00005c4c-0000-226a-0000-04b70000100a")))) + (Qualified (Id (fromJust (UUID.fromString "0000060f-0000-6d7d-0000-33a800005d07"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00005c4c-0000-226a-0000-04b70000100a"))) (Domain "faraway.example.com")) (read "1864-04-21 02:44:02.145 UTC") ( ( EdConvCodeUpdate ( ConversationCode @@ -726,8 +728,8 @@ testObject_RemoveBotResponse_user_15 = { rsRemoveBotEvent = ( Event (ConvMessageTimerUpdate) - ((Id (fromJust (UUID.fromString "00006421-0000-0363-0000-192100003398")))) - ((Id (fromJust (UUID.fromString "000005cd-0000-7897-0000-1fc700002d35")))) + (Qualified (Id (fromJust (UUID.fromString "00006421-0000-0363-0000-192100003398"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "000005cd-0000-7897-0000-1fc700002d35"))) (Domain "faraway.example.com")) (read "1864-04-30 23:29:02.24 UTC") ( ( EdConvMessageTimerUpdate (ConversationMessageTimerUpdate {cupMessageTimer = Just (Ms {ms = 8977358108702637})}) @@ -742,8 +744,8 @@ testObject_RemoveBotResponse_user_16 = { rsRemoveBotEvent = ( Event (ConvCodeUpdate) - ((Id (fromJust (UUID.fromString "0000067f-0000-0d9b-0000-039f0000033f")))) - ((Id (fromJust (UUID.fromString "0000030b-0000-5943-0000-6cd900006eae")))) + (Qualified (Id (fromJust (UUID.fromString "0000067f-0000-0d9b-0000-039f0000033f"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "0000030b-0000-5943-0000-6cd900006eae"))) (Domain "faraway.example.com")) (read "1864-04-27 19:16:49.866 UTC") ( ( EdConvCodeUpdate ( ConversationCode @@ -782,8 +784,8 @@ testObject_RemoveBotResponse_user_17 = { rsRemoveBotEvent = ( Event (ConvMessageTimerUpdate) - ((Id (fromJust (UUID.fromString "00005994-0000-5c94-0000-519300002727")))) - ((Id (fromJust (UUID.fromString "00003ddd-0000-21a2-0000-6a54000023c3")))) + (Qualified (Id (fromJust (UUID.fromString "00005994-0000-5c94-0000-519300002727"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00003ddd-0000-21a2-0000-6a54000023c3"))) (Domain "faraway.example.com")) (read "1864-04-24 18:38:55.053 UTC") ( ( EdConvMessageTimerUpdate (ConversationMessageTimerUpdate {cupMessageTimer = Just (Ms {ms = 3685837512701220})}) @@ -798,8 +800,8 @@ testObject_RemoveBotResponse_user_18 = { rsRemoveBotEvent = ( Event (ConvConnect) - ((Id (fromJust (UUID.fromString "000005bf-0000-3fdd-0000-089a0000544e")))) - ((Id (fromJust (UUID.fromString "00003c0a-0000-3d64-0000-7f74000011e9")))) + (Qualified (Id (fromJust (UUID.fromString "000005bf-0000-3fdd-0000-089a0000544e"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00003c0a-0000-3d64-0000-7f74000011e9"))) (Domain "faraway.example.com")) (read "1864-05-05 05:34:43.386 UTC") ( ( EdConnect ( Connect @@ -820,8 +822,8 @@ testObject_RemoveBotResponse_user_19 = { rsRemoveBotEvent = ( Event (ConvCodeDelete) - ((Id (fromJust (UUID.fromString "00000c59-0000-51c7-0000-1b6500001384")))) - ((Id (fromJust (UUID.fromString "00003046-0000-14df-0000-5a5900005ef2")))) + (Qualified (Id (fromJust (UUID.fromString "00000c59-0000-51c7-0000-1b6500001384"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00003046-0000-14df-0000-5a5900005ef2"))) (Domain "faraway.example.com")) (read "1864-04-19 14:51:39.037 UTC") (EdConvCodeDelete) ) @@ -833,8 +835,8 @@ testObject_RemoveBotResponse_user_20 = { rsRemoveBotEvent = ( Event (ConvMessageTimerUpdate) - ((Id (fromJust (UUID.fromString "00004e98-0000-2ec5-0000-31870000098c")))) - ((Id (fromJust (UUID.fromString "00006cb0-0000-6547-0000-1fe500000270")))) + (Qualified (Id (fromJust (UUID.fromString "00004e98-0000-2ec5-0000-31870000098c"))) (Domain "faraway.example.com")) + (Qualified (Id (fromJust (UUID.fromString "00006cb0-0000-6547-0000-1fe500000270"))) (Domain "faraway.example.com")) (read "1864-05-18 03:54:11.412 UTC") ( ( EdConvMessageTimerUpdate (ConversationMessageTimerUpdate {cupMessageTimer = Just (Ms {ms = 5776200192005000})}) diff --git a/libs/wire-api/test/unit/Test/Wire/API/Golden/Generated/SimpleMember_user.hs b/libs/wire-api/test/unit/Test/Wire/API/Golden/Generated/SimpleMember_user.hs index cf7f5c597d4..01c9bde30eb 100644 --- a/libs/wire-api/test/unit/Test/Wire/API/Golden/Generated/SimpleMember_user.hs +++ b/libs/wire-api/test/unit/Test/Wire/API/Golden/Generated/SimpleMember_user.hs @@ -18,7 +18,9 @@ -- with this program. If not, see . module Test.Wire.API.Golden.Generated.SimpleMember_user where +import Data.Domain import Data.Id (Id (Id)) +import Data.Qualified import qualified Data.UUID as UUID (fromString) import Imports (fromJust) import Wire.API.Conversation.Role (parseRoleName) @@ -27,11 +29,10 @@ import Wire.API.Event.Conversation (SimpleMember (..)) testObject_SimpleMember_user_1 :: SimpleMember testObject_SimpleMember_user_1 = SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000003a-0000-0042-0000-007500000037"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000003a-0000-0042-0000-007500000037"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust - ( parseRoleName - "qbyp4d5whcwd0owjlrr6oktss00oxflwtid8_ram9r3c2nywq7skew91tok1xxivpkbw6n5l8o5ww4zm220_3pozpvt0obaicadhku7f6e93" + ( parseRoleName "wire_admin" ) ) } @@ -39,11 +40,10 @@ testObject_SimpleMember_user_1 = testObject_SimpleMember_user_2 :: SimpleMember testObject_SimpleMember_user_2 = SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000046-0000-0027-0000-003c00000022"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000046-0000-0027-0000-003c00000022"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust - ( parseRoleName - "ofyvdxbbaf291eyoxm1i16mv2wfa52snql2p9os7shshqpfiw7ivbstjt_nkdqt6_9lz3on3r1nnur8ydc4xae4xf8i2iuu7" + ( parseRoleName "wire_member" ) ) } @@ -51,28 +51,28 @@ testObject_SimpleMember_user_2 = testObject_SimpleMember_user_3 :: SimpleMember testObject_SimpleMember_user_3 = SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000039-0000-0070-0000-005700000019"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000039-0000-0070-0000-005700000019"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "7uzp7961dyf_666xqxwvq6uro")) } testObject_SimpleMember_user_4 :: SimpleMember testObject_SimpleMember_user_4 = SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000007c-0000-0075-0000-005b00000049"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000007c-0000-0075-0000-005b00000049"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "4vr9oed4nvhs625ri_cz1cv5kodntk3edmkpu")) } testObject_SimpleMember_user_5 :: SimpleMember testObject_SimpleMember_user_5 = SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000004c-0000-004e-0000-002400000009"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000004c-0000-004e-0000-002400000009"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "wst92x")) } testObject_SimpleMember_user_6 :: SimpleMember testObject_SimpleMember_user_6 = SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000052-0000-0053-0000-000400000000"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000052-0000-0053-0000-000400000000"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "nkyx6ypx0p0b_fvx6mt6w5w6n2qpivv9svj2myn5n86isy7n2e07m92t7ostflj4lq1py50bqzdi4smzd")) } @@ -80,14 +80,14 @@ testObject_SimpleMember_user_6 = testObject_SimpleMember_user_7 :: SimpleMember testObject_SimpleMember_user_7 = SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000003d-0000-006f-0000-00480000006e"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000003d-0000-006f-0000-00480000006e"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "d8027w_w7pr9fj")) } testObject_SimpleMember_user_8 :: SimpleMember testObject_SimpleMember_user_8 = SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000004c-0000-006c-0000-000800000044"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000004c-0000-006c-0000-000800000044"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -99,21 +99,21 @@ testObject_SimpleMember_user_8 = testObject_SimpleMember_user_9 :: SimpleMember testObject_SimpleMember_user_9 = SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000000a-0000-007a-0000-003f0000001b"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000000a-0000-007a-0000-003f0000001b"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "sr5pfubd0_cpdp")) } testObject_SimpleMember_user_10 :: SimpleMember testObject_SimpleMember_user_10 = SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001d-0000-000f-0000-002900000072"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001d-0000-000f-0000-002900000072"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "paru")) } testObject_SimpleMember_user_11 :: SimpleMember testObject_SimpleMember_user_11 = SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000007d-0000-0076-0000-001e00000019"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000007d-0000-0076-0000-001e00000019"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust (parseRoleName "e0u15rrzql4y8jymut86vv84l4tjzpfti0_b1w44gy13j3d0dq1y22ws75tkgd4n_9tju4pq34_ddk_g9qpypwu4z3b5") @@ -123,7 +123,7 @@ testObject_SimpleMember_user_11 = testObject_SimpleMember_user_12 :: SimpleMember testObject_SimpleMember_user_12 = SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000003c-0000-0001-0000-004a00000014"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000003c-0000-0001-0000-004a00000014"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust (parseRoleName "telj17ej33ilgtqvqajp0ofng9qm6v9b1n32n_l6_vw_xxtk4o7n6r50ea3w1xgzh3eapah1jytfpz0f65utf9xqc4pv") @@ -133,14 +133,14 @@ testObject_SimpleMember_user_12 = testObject_SimpleMember_user_13 :: SimpleMember testObject_SimpleMember_user_13 = SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000052-0000-002c-0000-004500000067"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000052-0000-002c-0000-004500000067"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "bfamau83n6sskso4rod8fz1tb4tf1zfz8mfd1v0ae1sx17po1")) } testObject_SimpleMember_user_14 :: SimpleMember testObject_SimpleMember_user_14 = SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000018-0000-006d-0000-000600000017"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000018-0000-006d-0000-000600000017"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -152,28 +152,28 @@ testObject_SimpleMember_user_14 = testObject_SimpleMember_user_15 :: SimpleMember testObject_SimpleMember_user_15 = SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000006e-0000-0037-0000-00610000007e"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000006e-0000-0037-0000-00610000007e"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "rt25zies0df")) } testObject_SimpleMember_user_16 :: SimpleMember testObject_SimpleMember_user_16 = SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000042-0000-006a-0000-000800000052"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000042-0000-006a-0000-000800000052"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "pknq1f2x")) } testObject_SimpleMember_user_17 :: SimpleMember testObject_SimpleMember_user_17 = SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000020-0000-0000-0000-00500000005c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000020-0000-0000-0000-00500000005c"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "w1bcl23oz4ax6dg14h3y8nxqb77sx9ajonsvx7qd")) } testObject_SimpleMember_user_18 :: SimpleMember testObject_SimpleMember_user_18 = SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000049-0000-000c-0000-004d00000043"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000049-0000-000c-0000-004d00000043"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -185,7 +185,7 @@ testObject_SimpleMember_user_18 = testObject_SimpleMember_user_19 :: SimpleMember testObject_SimpleMember_user_19 = SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000031-0000-003d-0000-003800000024"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000031-0000-003d-0000-003800000024"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -197,7 +197,7 @@ testObject_SimpleMember_user_19 = testObject_SimpleMember_user_20 :: SimpleMember testObject_SimpleMember_user_20 = SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000074-0000-0010-0000-001600000078"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000074-0000-0010-0000-001600000078"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName diff --git a/libs/wire-api/test/unit/Test/Wire/API/Golden/Generated/SimpleMembers_user.hs b/libs/wire-api/test/unit/Test/Wire/API/Golden/Generated/SimpleMembers_user.hs index 5f6b74ecd3c..1ec3f17abfe 100644 --- a/libs/wire-api/test/unit/Test/Wire/API/Golden/Generated/SimpleMembers_user.hs +++ b/libs/wire-api/test/unit/Test/Wire/API/Golden/Generated/SimpleMembers_user.hs @@ -18,18 +18,20 @@ -- with this program. If not, see . module Test.Wire.API.Golden.Generated.SimpleMembers_user where +import Data.Domain import Data.Id (Id (Id)) +import Data.Qualified import qualified Data.UUID as UUID (fromString) import Imports (fromJust) import Wire.API.Conversation.Role (parseRoleName) -import Wire.API.Event.Conversation (SimpleMember (SimpleMember, smConvRoleName, smId), SimpleMembers (..)) +import Wire.API.Event.Conversation (SimpleMember (..), SimpleMembers (..)) testObject_SimpleMembers_user_1 :: SimpleMembers testObject_SimpleMembers_user_1 = SimpleMembers { mMembers = [ SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000048-0000-0011-0000-002300000050"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000048-0000-0011-0000-002300000050"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -38,7 +40,7 @@ testObject_SimpleMembers_user_1 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000030-0000-003d-0000-00620000002a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000030-0000-003d-0000-00620000002a"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -47,29 +49,29 @@ testObject_SimpleMembers_user_1 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001f-0000-002b-0000-005500000013"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001f-0000-002b-0000-005500000013"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust (parseRoleName "n0_wuagfmm6ltcjr0n2ib7l2mdg3i0zwtzmb6aribmg2107sirkgo17wjt9d2h66nj3lerw_blivsh6by09a") ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000062-0000-0017-0000-005a00000019"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000062-0000-0017-0000-005a00000019"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "4q8i3kin7cuo_xpa")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000065-0000-002e-0000-00730000002f"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000065-0000-002e-0000-00730000002f"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "e52wem88ym9kubyydku")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000048-0000-0068-0000-002300000042"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000048-0000-0068-0000-002300000042"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust (parseRoleName "yson37f_88qcp5chnwpjnwin427qoptb7bmlx5u2454vw95vvt241red8i1pkavlha4l9vx3cr1ajgklb") ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000021-0000-0057-0000-005d00000055"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000021-0000-0057-0000-005d00000055"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -78,19 +80,19 @@ testObject_SimpleMembers_user_1 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000080-0000-0071-0000-003400000066"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000080-0000-0071-0000-003400000066"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "0otsqpgjh2ctmp22nsof114767_vow59km_e")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000036-0000-0050-0000-002a0000005b"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000036-0000-0050-0000-002a0000005b"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "406ogeb8o68w")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000044-0000-0025-0000-002e00000026"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000044-0000-0025-0000-002e00000026"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "vgwq1mfqei0embh6msg2q0ucobreh9jl61ql0fge66e9xe")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000059-0000-0000-0000-002e0000002d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000059-0000-0000-0000-002e0000002d"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -99,15 +101,15 @@ testObject_SimpleMembers_user_1 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000014-0000-0003-0000-002600000025"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000014-0000-0003-0000-002600000025"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "9pryu0zv3nw_xtb3xr1naukqs0e")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000002c-0000-0006-0000-007300000061"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000002c-0000-0006-0000-007300000061"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "iy")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000003f-0000-002c-0000-00670000002f"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000003f-0000-002c-0000-00670000002f"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -116,15 +118,15 @@ testObject_SimpleMembers_user_1 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000006c-0000-0072-0000-00400000002d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000006c-0000-0072-0000-00400000002d"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "5v6_cttr3ctgrijw4h1_gsyi41f4t3dgyh64dhcgeoxvao1h68")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000064-0000-0070-0000-000800000049"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000064-0000-0070-0000-000800000049"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "x0")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000006a-0000-002e-0000-006000000070"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000006a-0000-002e-0000-006000000070"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -133,7 +135,7 @@ testObject_SimpleMembers_user_1 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000059-0000-005a-0000-002300000061"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000059-0000-005a-0000-002300000061"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "vb_ng523gxc0ci13cmxscmusff8uw12hvbsvfsa")) } ] @@ -144,7 +146,7 @@ testObject_SimpleMembers_user_2 = SimpleMembers { mMembers = [ SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000004c-0000-0022-0000-00720000007c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000004c-0000-0022-0000-00720000007c"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -153,15 +155,15 @@ testObject_SimpleMembers_user_2 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000002c-0000-0079-0000-004b0000002a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000002c-0000-0079-0000-004b0000002a"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "jhrez7dufl3ne050doxot1f7mhup7a0rr59472xmcvukln0cw")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000006d-0000-0033-0000-006d00000070"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000006d-0000-0033-0000-006d00000070"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "t9e5nbirc5uv1n4jda1bo8mwc72si1wi0_hngmo0sw")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000018-0000-0022-0000-001b00000048"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000018-0000-0022-0000-001b00000048"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -170,14 +172,14 @@ testObject_SimpleMembers_user_2 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000000-0000-004e-0000-002f00000038"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000000-0000-004e-0000-002f00000038"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust (parseRoleName "4o0ctcw73niokwjhjo8_65khxlxx_1o9ktctoq5kdmm39640gc2f3uc3nq99bq_93sgnhvd04wx3pgw1n1l") ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000003e-0000-005f-0000-004b00000038"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000003e-0000-005f-0000-004b00000038"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -186,11 +188,11 @@ testObject_SimpleMembers_user_2 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000008-0000-0030-0000-004000000062"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000008-0000-0030-0000-004000000062"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "g1lrkbr7ouvsrch981kwrz1k8un")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000071-0000-0074-0000-007500000032"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000071-0000-0074-0000-007500000032"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -199,15 +201,15 @@ testObject_SimpleMembers_user_2 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000025-0000-003f-0000-000c0000000a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000025-0000-003f-0000-000c0000000a"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "yqpt1iljztlmcsh2u3gt5s_gg1t7x81iwpp8ui501")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000006f-0000-007f-0000-007300000013"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000006f-0000-007f-0000-007300000013"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "vq6envh0bnegl9x1t")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000001-0000-006b-0000-00200000006a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000001-0000-006b-0000-00200000006a"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -216,7 +218,7 @@ testObject_SimpleMembers_user_2 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000000-0000-0009-0000-003f00000060"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000000-0000-0009-0000-003f00000060"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -225,18 +227,18 @@ testObject_SimpleMembers_user_2 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000071-0000-0077-0000-004600000064"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000071-0000-0077-0000-004600000064"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust (parseRoleName "191um99jwj93l_cv5zdb6op2a5j3tkismgxlv0jzf90zbw4hi9i611nilzp2i3dq16fj1naa0mdqou9") ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000005d-0000-0060-0000-000500000063"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000005d-0000-0060-0000-000500000063"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "b0oxc3cm4deaiuhqlip8cerktwoqbdp_z56h8jeyfc5any")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000074-0000-0013-0000-005700000074"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000074-0000-0013-0000-005700000074"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -245,15 +247,15 @@ testObject_SimpleMembers_user_2 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000063-0000-0078-0000-001000000046"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000063-0000-0078-0000-001000000046"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "5tsp_2")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000006c-0000-0062-0000-00440000002e"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000006c-0000-0062-0000-00440000002e"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "xn825hf3etf479oc7vjahb")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000070-0000-0030-0000-000e00000075"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000070-0000-0030-0000-000e00000075"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -262,7 +264,7 @@ testObject_SimpleMembers_user_2 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000007b-0000-0058-0000-003000000071"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000007b-0000-0058-0000-003000000071"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -271,7 +273,7 @@ testObject_SimpleMembers_user_2 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000007f-0000-0070-0000-007700000034"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000007f-0000-0070-0000-007700000034"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -280,11 +282,11 @@ testObject_SimpleMembers_user_2 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000042-0000-001c-0000-005900000054"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000042-0000-001c-0000-005900000054"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "2ogp8swsxisn1w2bohi8rcvl_1rtx0m34lr6x8sqkt9")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000000c-0000-0072-0000-001100000014"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000000c-0000-0072-0000-001100000014"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -293,16 +295,16 @@ testObject_SimpleMembers_user_2 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000073-0000-0042-0000-005a0000001c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000073-0000-0042-0000-005a0000001c"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "pma4ikgggpi_q0rvtdvjoff8fztnbolrl6oty_yvxm3qksaeg0l9bh8byrde5mto2f2a1rmn")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000029-0000-0042-0000-001a00000071"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000029-0000-0042-0000-001a00000071"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "njm9ltp6fr3yk2ke5skszy0xspo7blk")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000057-0000-0025-0000-002400000040"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000057-0000-0025-0000-002400000040"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -311,19 +313,19 @@ testObject_SimpleMembers_user_2 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000009-0000-0034-0000-006c00000009"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000009-0000-0034-0000-006c00000009"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "x61tv07e4higron1y")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000071-0000-0069-0000-00310000002b"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000071-0000-0069-0000-00310000002b"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "y7ttveh1qbqrww6el6rpjbz13kla3873tu2t")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000007a-0000-0016-0000-005a0000001f"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000007a-0000-0016-0000-005a0000001f"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "y2791q0e6ve5oof9ep")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000003b-0000-0075-0000-000500000008"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000003b-0000-0075-0000-000500000008"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "db051rwfps8foxf3bqqk8")) } ] @@ -334,7 +336,7 @@ testObject_SimpleMembers_user_3 = SimpleMembers { mMembers = [ SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000003-0000-001c-0000-004200000050"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000003-0000-001c-0000-004200000050"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -343,7 +345,7 @@ testObject_SimpleMembers_user_3 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000025-0000-000b-0000-005200000004"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000025-0000-000b-0000-005200000004"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -352,19 +354,19 @@ testObject_SimpleMembers_user_3 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000022-0000-0022-0000-00560000005b"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000022-0000-0022-0000-00560000005b"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "so7mgd7pd8f5bl2hc28161aqhqht1ii3ysfmj")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000065-0000-001d-0000-00530000001a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000065-0000-001d-0000-00530000001a"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "dcd0mqj2i4w35js")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000021-0000-003e-0000-00140000005d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000021-0000-003e-0000-00140000005d"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "0n5d40stfqajajw2_q70xrtjct7oursrdqbr")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000016-0000-001d-0000-002400000078"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000016-0000-001d-0000-002400000078"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "6xsb6xh6qstehp328c8pbh4z4nnkjqtv8")) } ] @@ -375,7 +377,7 @@ testObject_SimpleMembers_user_4 = SimpleMembers { mMembers = [ SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000007f-0000-007b-0000-002c00000013"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000007f-0000-007b-0000-002c00000013"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -384,7 +386,7 @@ testObject_SimpleMembers_user_4 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000079-0000-0021-0000-007000000061"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000079-0000-0021-0000-007000000061"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "2dpw9m0sf8_")) } ] @@ -395,7 +397,7 @@ testObject_SimpleMembers_user_5 = SimpleMembers { mMembers = [ SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000053-0000-0076-0000-00100000004e"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000053-0000-0076-0000-00100000004e"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -404,7 +406,7 @@ testObject_SimpleMembers_user_5 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000001-0000-0075-0000-006500000014"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000001-0000-0075-0000-006500000014"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -413,11 +415,11 @@ testObject_SimpleMembers_user_5 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000000a-0000-0068-0000-00100000000c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000000a-0000-0068-0000-00100000000c"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "48idob6a3qg0k4cyr4x5b3gvqafdeogqtnh_69ov347xwn54j")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000070-0000-000f-0000-002400000032"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000070-0000-000f-0000-002400000032"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -426,20 +428,20 @@ testObject_SimpleMembers_user_5 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000002c-0000-0000-0000-007500000037"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000002c-0000-0000-0000-007500000037"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "rc779wbhz5nabuxyzdrv6n9oiq06olf0")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000005c-0000-0009-0000-001700000033"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000005c-0000-0009-0000-001700000033"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "1yeunp1yvablh18tnsoaa8xnggbpbviyabkfh6abd9vw0mrcy3x3gu3m2jvnjhroe44y55c9")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000011-0000-004f-0000-007400000055"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000011-0000-004f-0000-007400000055"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "opmdgq5u1h4ersm_ydrpyydfv2cdlsj7uwkqaz892ajcmuwi28c197")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000005b-0000-0076-0000-007f00000034"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000005b-0000-0076-0000-007f00000034"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -448,7 +450,7 @@ testObject_SimpleMembers_user_5 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000044-0000-0065-0000-004f00000039"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000044-0000-0065-0000-004f00000039"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -457,11 +459,11 @@ testObject_SimpleMembers_user_5 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000000f-0000-0059-0000-002100000019"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000000f-0000-0059-0000-002100000019"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "d87qu8t82u8q8isnqw_0_55hpuuwnjfvra2ieaogqqdn6iwv8b")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000076-0000-0044-0000-00110000002b"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000076-0000-0044-0000-00110000002b"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -470,19 +472,19 @@ testObject_SimpleMembers_user_5 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000007c-0000-0016-0000-001200000027"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000007c-0000-0016-0000-001200000027"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "g43z_vqs1w3nubu3uuvq7eycshex3ug1mz7h50o8k4mu9q1tm_z")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000003b-0000-0005-0000-002a00000003"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000003b-0000-0005-0000-002a00000003"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "toatgflm9kmzec4xpbt596ti99yjqh96g4tp")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000002c-0000-005d-0000-005e0000005e"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000002c-0000-005d-0000-005e0000005e"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "xgpcwa43")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000004b-0000-004c-0000-001300000001"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000004b-0000-004c-0000-001300000001"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -498,7 +500,7 @@ testObject_SimpleMembers_user_6 = SimpleMembers { mMembers = [ SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000079-0000-002a-0000-004d0000001d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000079-0000-002a-0000-004d0000001d"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -507,11 +509,11 @@ testObject_SimpleMembers_user_6 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001f-0000-0042-0000-00530000002e"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001f-0000-0042-0000-00530000002e"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "99uoa6zruc85ailr9e9lu5537qrixoaq1ufioh4uepukbae")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000049-0000-0022-0000-003f00000045"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000049-0000-0022-0000-003f00000045"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -520,16 +522,16 @@ testObject_SimpleMembers_user_6 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000011-0000-002d-0000-004e0000003c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000011-0000-002d-0000-004e0000003c"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "xxj8_x7sgu_7j6fjxshorrc5pn_nwrx1_kft7yl8w2383w5eti15qiu0xzmaqa3913938f_")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000039-0000-0032-0000-006b0000007c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000039-0000-0032-0000-006b0000007c"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "jr8qjzzzoqzxh67eh8qsqp531s0a7ji3a7vtji48tcf56g_fnjn3nax")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000071-0000-0033-0000-006e00000063"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000071-0000-0033-0000-006e00000063"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -538,7 +540,7 @@ testObject_SimpleMembers_user_6 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000005e-0000-0062-0000-00220000003f"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000005e-0000-0062-0000-00220000003f"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -547,11 +549,11 @@ testObject_SimpleMembers_user_6 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000036-0000-003e-0000-00330000002b"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000036-0000-003e-0000-00330000002b"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "v3m955rl1j5st0fk3t8l0ist2rq5lefq_wt2uwd_h6b1obaa3mt115ph0ukx")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000026-0000-0070-0000-006f00000029"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000026-0000-0070-0000-006f00000029"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -560,23 +562,23 @@ testObject_SimpleMembers_user_6 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000059-0000-0053-0000-005e00000079"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000059-0000-0053-0000-005e00000079"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "l_1m2")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001a-0000-0069-0000-002e00000072"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001a-0000-0069-0000-002e00000072"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "e65xwo7h8khwqvfvmvj02jj2jkz3wa8bei_")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000006c-0000-000a-0000-00470000007f"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000006c-0000-000a-0000-00470000007f"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "ly60ylpqtqx3vqe00gw")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001c-0000-0019-0000-007300000070"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001c-0000-0019-0000-007300000070"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "0obmr5yj455s75alew")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000017-0000-0046-0000-003e0000005c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000017-0000-0046-0000-003e0000005c"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -585,7 +587,7 @@ testObject_SimpleMembers_user_6 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000000f-0000-005f-0000-006200000042"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000000f-0000-005f-0000-006200000042"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -594,11 +596,11 @@ testObject_SimpleMembers_user_6 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000000d-0000-0027-0000-002300000072"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000000d-0000-0027-0000-002300000072"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "_b64sbeqrp8ou_09bincmxn3")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000005a-0000-004f-0000-00700000006b"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000005a-0000-004f-0000-00700000006b"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -607,27 +609,27 @@ testObject_SimpleMembers_user_6 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000001-0000-0015-0000-000a0000000c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000001-0000-0015-0000-000a0000000c"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "jstp31co2rpas6er_oyazeow51_1aho0uqvdvu6uqv2")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000005f-0000-003c-0000-007600000061"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000005f-0000-003c-0000-007600000061"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "0gk_nlyr50ot8v0s39c1wgjry6z3e78hcjtv2wmcb397ojix5l8p47tlmsvw")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000076-0000-002c-0000-002d00000016"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000076-0000-002c-0000-002d00000016"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "cm")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000074-0000-001e-0000-007400000071"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000074-0000-001e-0000-007400000071"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "e9kre1i15j22d")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000051-0000-007c-0000-007b00000025"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000051-0000-007c-0000-007b00000025"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "nb8blnutjrsntylz671x")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000046-0000-0031-0000-004400000018"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000046-0000-0031-0000-004400000018"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -643,15 +645,15 @@ testObject_SimpleMembers_user_7 = SimpleMembers { mMembers = [ SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000054-0000-0012-0000-005900000011"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000054-0000-0012-0000-005900000011"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "eldahjnjgyux49p6u4qxz9a0q7e")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000000e-0000-004f-0000-003b0000004e"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000000e-0000-004f-0000-003b0000004e"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "yw31a4ikpn_zfb5fd0vee3e1536ak74rqp_qtok7xrhsn5pa")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000062-0000-0055-0000-00600000003d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000062-0000-0055-0000-00600000003d"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -660,16 +662,16 @@ testObject_SimpleMembers_user_7 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000049-0000-0058-0000-005000000000"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000049-0000-0058-0000-005000000000"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "810s8rqja")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000005a-0000-0020-0000-005400000016"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000005a-0000-0020-0000-005400000016"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "yb41udiftgjzo36lbvwtw9xj5qlohvljde90frfx0r26jzgpq08xeo4xw2tepnvx")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000018-0000-002f-0000-006b00000044"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000018-0000-002f-0000-006b00000044"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -678,16 +680,16 @@ testObject_SimpleMembers_user_7 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000007a-0000-0058-0000-001200000069"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000007a-0000-0058-0000-001200000069"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "zze7ew9qk8gurfh")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000006f-0000-0018-0000-006f00000076"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000006f-0000-0018-0000-006f00000076"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "n_roifhghi_l_9b_75beixjh703zyg806b1hin3fui2nj3nj040_7r3ijtyfox4o3o")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000002d-0000-0074-0000-003f00000059"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000002d-0000-0074-0000-003f00000059"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -696,11 +698,11 @@ testObject_SimpleMembers_user_7 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000057-0000-0078-0000-005700000001"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000057-0000-0078-0000-005700000001"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "kue8gimoaxn3wdbzwb2l9ygk0")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000078-0000-0080-0000-002b0000005c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000078-0000-0080-0000-002b0000005c"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -709,7 +711,7 @@ testObject_SimpleMembers_user_7 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000004-0000-007f-0000-007c00000022"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000004-0000-007f-0000-007c00000022"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -718,20 +720,20 @@ testObject_SimpleMembers_user_7 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000006f-0000-0011-0000-004100000002"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000006f-0000-0011-0000-004100000002"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "hdirky_2tz3se2ehu7by2csj7a_jy7qyo1oghueqc_4h118v79xz49olrwkojns")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000042-0000-002f-0000-00030000007d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000042-0000-002f-0000-00030000007d"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "9122iz2g941gnqs08mcaqa33l58irkmohj5r")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000027-0000-0014-0000-00250000003b"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000027-0000-0014-0000-00250000003b"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "0lyosg4pvc5q1dazb5z1v59plf2nqgs")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000000e-0000-0055-0000-002200000000"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000000e-0000-0055-0000-002200000000"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -740,7 +742,7 @@ testObject_SimpleMembers_user_7 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000006a-0000-0009-0000-003d0000007f"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000006a-0000-0009-0000-003d0000007f"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -749,7 +751,7 @@ testObject_SimpleMembers_user_7 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000018-0000-000d-0000-006d00000072"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000018-0000-000d-0000-006d00000072"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -758,11 +760,11 @@ testObject_SimpleMembers_user_7 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000031-0000-0023-0000-005f0000004a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000031-0000-0023-0000-005f0000004a"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "hcy75iscpnouf9aqpon3edkh4uln4gma0niecrde5")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000063-0000-0061-0000-006900000077"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000063-0000-0061-0000-006900000077"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -771,12 +773,12 @@ testObject_SimpleMembers_user_7 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000002e-0000-0003-0000-00790000001d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000002e-0000-0003-0000-00790000001d"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "y0u0avpt3orbo6xcee13613ik0sb8xcz308vkb5u33q9np2ws_pvhakw3gjbtihe3")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000052-0000-0054-0000-003e0000005b"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000052-0000-0054-0000-003e0000005b"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -785,20 +787,20 @@ testObject_SimpleMembers_user_7 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000062-0000-0049-0000-005000000022"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000062-0000-0049-0000-005000000022"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "3n2q64e9ea8hxbcwm9n4mlyy330f1zoiaq_ao1d_t90kr4sahr365ji7svmbr6k58bx7o0bjeqij")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000007-0000-0069-0000-000f00000032"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000007-0000-0069-0000-000f00000032"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "x7shwqzfrj3qnlvus111ufwgzstnmmob_xhzern6niel5pahgi1_")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000003-0000-0057-0000-00680000003c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000003-0000-0057-0000-00680000003c"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "1tv5og06r1a2al4kc")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000047-0000-006c-0000-003200000031"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000047-0000-006c-0000-003200000031"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -807,11 +809,11 @@ testObject_SimpleMembers_user_7 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000074-0000-0059-0000-006800000037"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000074-0000-0059-0000-006800000037"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "uvsqtx_7v0_odhu95uke30sh454iruq9")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000050-0000-0053-0000-006f0000005d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000050-0000-0053-0000-006f0000005d"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -820,11 +822,11 @@ testObject_SimpleMembers_user_7 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000037-0000-004d-0000-003e00000004"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000037-0000-004d-0000-003e00000004"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "ccqqr3w57f9exl7xuhqnr305fqteeziw7hr374is9pkpjtt_z")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000039-0000-0024-0000-003500000002"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000039-0000-0024-0000-003500000002"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -840,18 +842,18 @@ testObject_SimpleMembers_user_8 = SimpleMembers { mMembers = [ SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000067-0000-003f-0000-003300000052"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000067-0000-003f-0000-003300000052"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "bmgvnfheg7304j1af2ha8kzlrdsd94sla01p8e32cfuchc4n4d4j_1")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000066-0000-001c-0000-005900000006"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000066-0000-001c-0000-005900000006"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust (parseRoleName "3z44kbvkfmhwt3cxvztk91xwigzfsqgmwx43rsi2ew7_663q5kd04afdhwes23ea8_7nn4j6hol2k1o") ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000013-0000-0072-0000-005000000019"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000013-0000-0072-0000-005000000019"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -860,20 +862,20 @@ testObject_SimpleMembers_user_8 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000006d-0000-003f-0000-007f00000025"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000006d-0000-003f-0000-007f00000025"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "qann8z5wp43fncbnzkxuqeskdrnxclmj1qoiri6zb4ro8jzbsewewgi27xi6pnc")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000019-0000-003a-0000-006500000036"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000019-0000-003a-0000-006500000036"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "552en9ubk7gjrv")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000005d-0000-0008-0000-006000000011"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000005d-0000-0008-0000-006000000011"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "4fq8ylocoheanwuq9kg6amnrks")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000007b-0000-0072-0000-00690000000e"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000007b-0000-0072-0000-00690000000e"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -882,15 +884,15 @@ testObject_SimpleMembers_user_8 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000032-0000-0039-0000-007700000022"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000032-0000-0039-0000-007700000022"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "tq")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001a-0000-003b-0000-001e00000080"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001a-0000-003b-0000-001e00000080"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "as91oohpdy")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000056-0000-005b-0000-007c00000078"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000056-0000-005b-0000-007c00000078"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "0jr8eycubw7cut6ukuegnxp5b2obst6ry8y76fe2qjro3xpp3bjvxg4c707rs1jlf")) } @@ -902,11 +904,11 @@ testObject_SimpleMembers_user_9 = SimpleMembers { mMembers = [ SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001a-0000-0051-0000-001100000064"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001a-0000-0051-0000-001100000064"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "85wkc4m6uzi3t_s5sb488cxhjl7i_av_erwfdtgya58oc")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000053-0000-007f-0000-00140000007a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000053-0000-007f-0000-00140000007a"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -915,12 +917,12 @@ testObject_SimpleMembers_user_9 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001b-0000-0042-0000-003800000032"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001b-0000-0042-0000-003800000032"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "pc12u7vhdqloizph96i1elxofyps02qanrr2z6_kdvl3zakyappxu7nksvj6oe6yz_ygrgii0v")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000032-0000-0032-0000-002000000005"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000032-0000-0032-0000-002000000005"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -929,12 +931,12 @@ testObject_SimpleMembers_user_9 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000001-0000-0021-0000-007000000010"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000001-0000-0021-0000-007000000010"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "jcr0d3sv5pm89mkbhinm7aw5njyj0oft6vh8ste7xfn6feqkmx176x93ie9lc58kcik7")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001b-0000-004b-0000-00480000000a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001b-0000-004b-0000-00480000000a"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -943,7 +945,7 @@ testObject_SimpleMembers_user_9 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000012-0000-0000-0000-00690000005d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000012-0000-0000-0000-00690000005d"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -952,12 +954,12 @@ testObject_SimpleMembers_user_9 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000024-0000-002c-0000-000a0000002b"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000024-0000-002c-0000-000a0000002b"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "40d1mp1rlpq_toli_xsrzzp6azj7abwn9kwyyexu8mzqanezqlkwgzs_maqszagustta7197hluh")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000000e-0000-002f-0000-006c0000007e"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000000e-0000-002f-0000-006c0000007e"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -966,15 +968,15 @@ testObject_SimpleMembers_user_9 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001d-0000-000c-0000-001200000072"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001d-0000-000c-0000-001200000072"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "8qz3xbrnjl34e24fvc96wl34jw")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000065-0000-0005-0000-00160000007a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000065-0000-0005-0000-00160000007a"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "3mcna2fo1fuhmz50gevjyc5iacna3hon9fylu4o9u48")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000002e-0000-0028-0000-00240000001f"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000002e-0000-0028-0000-00240000001f"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -983,12 +985,12 @@ testObject_SimpleMembers_user_9 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000061-0000-0035-0000-005100000068"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000061-0000-0035-0000-005100000068"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "cxx03t4219b0e3b7u5lwxb4ua_3qif069vharpluygxmxq5vd1hcx4_3yjmtgw99yz")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000003-0000-0034-0000-00520000005a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000003-0000-0034-0000-00520000005a"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -997,11 +999,11 @@ testObject_SimpleMembers_user_9 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000007-0000-0049-0000-004c00000028"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000007-0000-0049-0000-004c00000028"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "op23mrkoau967yyy74znf7smfsr1j46m")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000006c-0000-0074-0000-004100000005"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000006c-0000-0074-0000-004100000005"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1010,7 +1012,7 @@ testObject_SimpleMembers_user_9 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000000-0000-004d-0000-002a00000020"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000000-0000-004d-0000-002a00000020"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1019,11 +1021,11 @@ testObject_SimpleMembers_user_9 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000058-0000-005d-0000-00100000000a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000058-0000-005d-0000-00100000000a"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "uw5x_u9rn2zu0nc6f7eb_v40")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000045-0000-0044-0000-00070000005c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000045-0000-0044-0000-00070000005c"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1039,7 +1041,7 @@ testObject_SimpleMembers_user_10 = SimpleMembers { mMembers = [ SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000047-0000-0044-0000-005c0000003c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000047-0000-0044-0000-005c0000003c"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1048,7 +1050,7 @@ testObject_SimpleMembers_user_10 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000068-0000-006a-0000-002c00000071"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000068-0000-006a-0000-002c00000071"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1057,7 +1059,7 @@ testObject_SimpleMembers_user_10 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000040-0000-0068-0000-001300000019"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000040-0000-0068-0000-001300000019"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1073,12 +1075,12 @@ testObject_SimpleMembers_user_11 = SimpleMembers { mMembers = [ SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000069-0000-0074-0000-006800000058"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000069-0000-0074-0000-006800000058"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "yprw788nm_1n_l3i6g1xn1xjokilmavqko9otxa26hobs7e7s1fgruka4iom01i00aoyui37so")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001c-0000-007e-0000-003300000074"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001c-0000-007e-0000-003300000074"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1087,7 +1089,7 @@ testObject_SimpleMembers_user_11 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000025-0000-0064-0000-007000000046"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000025-0000-0064-0000-007000000046"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1096,7 +1098,7 @@ testObject_SimpleMembers_user_11 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000037-0000-000a-0000-00140000001a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000037-0000-000a-0000-00140000001a"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1105,12 +1107,12 @@ testObject_SimpleMembers_user_11 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000004b-0000-004b-0000-005000000005"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000004b-0000-004b-0000-005000000005"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "tddu3qs3p60da19ibmx92unwy8mu9goocijbeamqw4bn3d5kt6_zkm2x1j2mawr_ygt")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000005b-0000-004a-0000-000f00000029"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000005b-0000-004a-0000-000f00000029"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1119,7 +1121,7 @@ testObject_SimpleMembers_user_11 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000069-0000-003e-0000-002300000076"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000069-0000-003e-0000-002300000076"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1128,44 +1130,44 @@ testObject_SimpleMembers_user_11 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000003e-0000-0047-0000-005e0000006a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000003e-0000-0047-0000-005e0000006a"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "ku38a6jk6fswgsgegqka_b33d6gqkwcy7egbx2rpr4pyravsymugig8l6flqxjyyl")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000003d-0000-0034-0000-001100000003"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000003d-0000-0034-0000-001100000003"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "x3th543fq4asgv")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000042-0000-0018-0000-006f00000063"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000042-0000-0018-0000-006f00000063"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "qc679x0r4twf5feu87fjf1dukbgbjil0otcoyim397")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000066-0000-0065-0000-00640000006c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000066-0000-0065-0000-00640000006c"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "neniwbge16i_igh4jj_02qflp698pz5xy6hv435ma6q2qlxn3dyz2oao0b43gg93m")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000005b-0000-0068-0000-006300000031"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000005b-0000-0068-0000-006300000031"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "mbsnb3cb9i2dxlbz6h0l9_ocpa6zdmtt6708g6bi6b5o59v3s")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000025-0000-000d-0000-000000000008"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000025-0000-000d-0000-000000000008"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "bv8e7m3xfc3bt639goa1tied4")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000010-0000-0007-0000-005700000011"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000010-0000-0007-0000-005700000011"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust (parseRoleName "oejuw0rpkxojd7lwdvvmypnw5jga0w0i7kf84ryviznjgm_3nd1ls5ykcij2b_xqx9dc36hafa1lvk4x_vo_") ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000059-0000-0001-0000-005e00000073"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000059-0000-0001-0000-005e00000073"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "nzqm5_qyv5uj1f47xveo_2hlkqt5n6jrb5o14invzlhe2ddo66")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000063-0000-0061-0000-005f00000045"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000063-0000-0061-0000-005f00000045"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1174,7 +1176,7 @@ testObject_SimpleMembers_user_11 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000002e-0000-001e-0000-00350000001a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000002e-0000-001e-0000-00350000001a"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1183,7 +1185,7 @@ testObject_SimpleMembers_user_11 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000013-0000-005c-0000-006100000023"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000013-0000-005c-0000-006100000023"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1192,11 +1194,11 @@ testObject_SimpleMembers_user_11 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000000e-0000-0031-0000-00300000000c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000000e-0000-0031-0000-00300000000c"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "c3ydrescfgmvsgks6xy866xluancois0b4vl6ypsl6810rlnu")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000007e-0000-002a-0000-007c0000004f"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000007e-0000-002a-0000-007c0000004f"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1205,11 +1207,11 @@ testObject_SimpleMembers_user_11 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000011-0000-001e-0000-001e00000054"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000011-0000-001e-0000-001e00000054"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "bhpymrq9y__8p")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000005f-0000-000d-0000-004e00000016"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000005f-0000-000d-0000-004e00000016"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1218,11 +1220,11 @@ testObject_SimpleMembers_user_11 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001f-0000-005c-0000-00570000002a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001f-0000-005c-0000-00570000002a"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "xyep0gej_kghofx50j3bbolxbm2i58wwp0t_l0pscq4")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000003-0000-0050-0000-00110000004d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000003-0000-0050-0000-00110000004d"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1231,18 +1233,18 @@ testObject_SimpleMembers_user_11 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000055-0000-006f-0000-002f0000007a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000055-0000-006f-0000-002f0000007a"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "04n6")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000005a-0000-0067-0000-00600000006b"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000005a-0000-0067-0000-00600000006b"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust (parseRoleName "m1vbstno19orwr77zwq8q8ak1xxdhotqyn30kdv9fq44n2zr0rn46gqfrw8lxp7mt7eywgku3gudup") ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000048-0000-007b-0000-001500000034"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000048-0000-007b-0000-001500000034"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "v_ahoalwm78dh_ggai7wusblsnlwhibegsuxe5w1ibm2cnj79a64r_s72hwigx1cw")) } @@ -1254,7 +1256,7 @@ testObject_SimpleMembers_user_12 = SimpleMembers { mMembers = [ SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000003b-0000-0016-0000-003600000008"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000003b-0000-0016-0000-003600000008"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1263,25 +1265,25 @@ testObject_SimpleMembers_user_12 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000056-0000-0050-0000-00040000006d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000056-0000-0050-0000-00040000006d"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust (parseRoleName "xf6x34y4hcbgklhrr9a7jkjiclu5dv89m59b5sn40ui8iof88mse47t57ti7zch5cf866tzqua171us") ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000006e-0000-004e-0000-005200000050"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000006e-0000-004e-0000-005200000050"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust (parseRoleName "07bbbbgwl0gkv1pfj719wn3z0n8nehby_fk3h6gs39csow68u4_3pbly54fqkng37jqxwr6ym6injx") ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000069-0000-001a-0000-005c0000007b"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000069-0000-001a-0000-005c0000007b"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "bj5m")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000004d-0000-0002-0000-005700000067"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000004d-0000-0002-0000-005700000067"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1290,14 +1292,14 @@ testObject_SimpleMembers_user_12 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001b-0000-0076-0000-002800000008"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001b-0000-0076-0000-002800000008"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust (parseRoleName "z3dbyprvipeu8kl4fabnh24fo77t7gqcs0chxw34ovuru0mxeu6e_jl3s744uggcnwqcyhuzkn1ueko_k0") ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000032-0000-0007-0000-000400000047"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000032-0000-0007-0000-000400000047"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1306,15 +1308,15 @@ testObject_SimpleMembers_user_12 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000054-0000-0055-0000-002800000002"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000054-0000-0055-0000-002800000002"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "dnrdny")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001c-0000-004b-0000-002c00000037"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001c-0000-004b-0000-002c00000037"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "gf52")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000034-0000-007e-0000-006100000061"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000034-0000-007e-0000-006100000061"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1323,7 +1325,7 @@ testObject_SimpleMembers_user_12 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000030-0000-000b-0000-00790000002a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000030-0000-000b-0000-00790000002a"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1332,24 +1334,24 @@ testObject_SimpleMembers_user_12 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000004f-0000-0043-0000-004c0000002b"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000004f-0000-0043-0000-004c0000002b"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "gnpcz5crw82yyqtlvvvfdps3b5uxqr0a")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000079-0000-004b-0000-005e00000033"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000079-0000-004b-0000-005e00000033"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "h84nu68fxxen4b8d5i8br4gixwyntx3o597v_ds147th29_vkuxblstg9af6x3p7")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000003b-0000-006c-0000-000f00000059"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000003b-0000-006c-0000-000f00000059"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "uboc5sab9w92")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000080-0000-001e-0000-002100000043"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000080-0000-001e-0000-002100000043"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "1mcw_zxelu_doxdkqrc5tf660toco4vdv99oecl106z1ygzfnqo6buoysg_s")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000069-0000-0047-0000-00000000004e"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000069-0000-0047-0000-00000000004e"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1358,7 +1360,7 @@ testObject_SimpleMembers_user_12 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001d-0000-007e-0000-004300000036"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001d-0000-007e-0000-004300000036"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1367,7 +1369,7 @@ testObject_SimpleMembers_user_12 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000061-0000-005f-0000-00280000002d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000061-0000-005f-0000-00280000002d"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "xyb65ic8vzt9x9k1i_a81f6cngzuoii")) } ] @@ -1378,7 +1380,7 @@ testObject_SimpleMembers_user_13 = SimpleMembers { mMembers = [ SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000050-0000-0074-0000-00260000002b"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000050-0000-0074-0000-00260000002b"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1387,7 +1389,7 @@ testObject_SimpleMembers_user_13 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000000-0000-001d-0000-005f00000055"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000000-0000-001d-0000-005f00000055"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1396,12 +1398,12 @@ testObject_SimpleMembers_user_13 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000005-0000-0010-0000-003b00000043"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000005-0000-0010-0000-003b00000043"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "4kkuwyima3ztybzpf3ccy2_mrgcz2sv0nvb29bxjm90dgk6ft_14r7p0qyy12crv_z")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000040-0000-0065-0000-007000000049"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000040-0000-0065-0000-007000000049"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1410,20 +1412,20 @@ testObject_SimpleMembers_user_13 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000015-0000-007f-0000-006c0000004d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000015-0000-007f-0000-006c0000004d"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "qylzcwu0dvtjvra93ocg8fyuyzzowac5yo5410wh4sveczmfq0t2y2e6cae4fux96q")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000000e-0000-007b-0000-003400000043"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000000e-0000-007b-0000-003400000043"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "z3id3idffe8rl53wpyrd3f2l0y56qxz")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000005d-0000-000d-0000-004500000021"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000005d-0000-000d-0000-004500000021"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "2voj8d_5ydou6phiassv9tzhnw185814n90y8rbx5i")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000002d-0000-003c-0000-003e0000000f"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000002d-0000-003c-0000-003e0000000f"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1432,7 +1434,7 @@ testObject_SimpleMembers_user_13 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000000b-0000-0042-0000-00740000003b"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000000b-0000-0042-0000-00740000003b"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1441,7 +1443,7 @@ testObject_SimpleMembers_user_13 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000048-0000-0039-0000-008000000004"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000048-0000-0039-0000-008000000004"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "nmhc57h6qa7lzv0d0scl8_53iwuitrlmmujkwf_vgjgn4s027b5i9hbt2nxhm1d")) } @@ -1453,27 +1455,27 @@ testObject_SimpleMembers_user_14 = SimpleMembers { mMembers = [ SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000049-0000-0018-0000-002200000071"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000049-0000-0018-0000-002200000071"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "5qxti74lbqe_tgvvnq7ub2xxn0e2w0")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000003f-0000-004e-0000-005800000030"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000003f-0000-004e-0000-005800000030"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "mwzccu_p4zazafbgnvf")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000017-0000-007e-0000-006f00000027"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000017-0000-007e-0000-006f00000027"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "rmr13bsn9lo1dil9j12jj31qdod3izckzpsrflf653suq328bmnd_kirumpr")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000005-0000-003f-0000-00280000005e"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000005-0000-003f-0000-00280000005e"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "_tae")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000002b-0000-0003-0000-004a0000002d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000002b-0000-0003-0000-004a0000002d"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "kaa5_qbk5nvvgx4jowierx")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000005d-0000-0054-0000-002500000028"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000005d-0000-0054-0000-002500000028"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1482,28 +1484,28 @@ testObject_SimpleMembers_user_14 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000005e-0000-0002-0000-004b00000045"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000005e-0000-0002-0000-004b00000045"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "o1bfk_p6xvxp7t1i6f3d57jv2_yl4nq5or1zy4vd2dh22ue895yoduwjo3wc5qzostuhbw369j")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000005e-0000-0027-0000-003d00000065"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000005e-0000-0027-0000-003d00000065"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "vf6s6yc5eavaytm7_6")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000035-0000-0035-0000-00010000001f"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000035-0000-0035-0000-00010000001f"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "n7r9vlgda6kn7ehvrz_hrl6t1p07xr42_rgp")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000054-0000-0069-0000-002e0000007c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000054-0000-0069-0000-002e0000007c"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "qtfn187ab22rzoan9jy9ug2qyjisshxdeo184e8cjm")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000056-0000-005a-0000-006a0000004c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000056-0000-005a-0000-006a0000004c"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "lxynbdsl575ahtb1fzz_0ucdcsmeiu4baq0ziei5")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000041-0000-0013-0000-007700000017"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000041-0000-0013-0000-007700000017"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1512,7 +1514,7 @@ testObject_SimpleMembers_user_14 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000022-0000-0071-0000-000f00000072"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000022-0000-0071-0000-000f00000072"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1521,28 +1523,28 @@ testObject_SimpleMembers_user_14 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000003b-0000-003c-0000-003500000028"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000003b-0000-003c-0000-003500000028"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "vitd82h50v")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000047-0000-0005-0000-001a0000007b"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000047-0000-0005-0000-001a0000007b"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "io1uuzbdi7sfvy93f6kgdq31xskuwc8mxphwwrpv9rxc4o8ycdu4l4_0_26hm1g03g2")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000000a-0000-0039-0000-00530000006f"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000000a-0000-0039-0000-00530000006f"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "cksijt3o36xuu324i61apsuwdi32k3l1x_oalfaqqtk")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000047-0000-0062-0000-007700000025"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000047-0000-0062-0000-007700000025"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "ru1kksg2ef5_yo7i5uwq")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000049-0000-000c-0000-002400000060"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000049-0000-000c-0000-002400000060"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "lyspep_wcyu0fegqwpmns9lzjpy49i_6ufmhkft3bbmf_yi76hzdacj7")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000028-0000-001d-0000-005000000045"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000028-0000-001d-0000-005000000045"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1551,7 +1553,7 @@ testObject_SimpleMembers_user_14 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000071-0000-0014-0000-002000000080"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000071-0000-0014-0000-002000000080"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1560,7 +1562,7 @@ testObject_SimpleMembers_user_14 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000037-0000-004c-0000-006800000015"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000037-0000-004c-0000-006800000015"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1569,22 +1571,22 @@ testObject_SimpleMembers_user_14 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000005a-0000-0014-0000-005c0000000b"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000005a-0000-0014-0000-005c0000000b"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust (parseRoleName "r7xed76rtgltedolcrxbq67tyo5u5arm9ip49bo5szs24skzui_3h65_2j0md66gjlz850waloiuiqsd") ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000000c-0000-0059-0000-004600000053"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000000c-0000-0059-0000-004600000053"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "80_0tuom0zml0hz7q8ioxscxusk7ghx63wp5o83lax5")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000050-0000-0080-0000-00350000007c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000050-0000-0080-0000-00350000007c"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "ae3h61opsksj5x5if1tt3a74ehzw02ds6dqisz_5l")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000014-0000-0046-0000-008000000048"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000014-0000-0046-0000-008000000048"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1600,32 +1602,32 @@ testObject_SimpleMembers_user_15 = SimpleMembers { mMembers = [ SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000006a-0000-0032-0000-004f0000001e"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000006a-0000-0032-0000-004f0000001e"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "da1vnxfznxggp6c2qcjdx4sbo4usg7jb58hmd_ylzyr_97m9rpyg6gmw9ikw")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001f-0000-005a-0000-001a00000078"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001f-0000-005a-0000-001a00000078"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "asfpn3xoxsvsz8ubdt6b3b")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001a-0000-0017-0000-007e0000000c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001a-0000-0017-0000-007e0000000c"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "ftkjnuoy9i1h0yyf1x87m97flhx21n2475_rsnn76nkpl9toieae7wk0y_f83ji")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001e-0000-0019-0000-00180000004c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001e-0000-0019-0000-00180000004c"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "g22_kcj2fae4nspxpz30n5f6ib5bhrb")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000006d-0000-001b-0000-00050000003f"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000006d-0000-001b-0000-00050000003f"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "qzkowgmbm3t4ck1lzb96ero0d6yw79kzdf2q")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000037-0000-001c-0000-000c0000002f"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000037-0000-001c-0000-000c0000002f"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "cyiw0yfayzt_ynv0h94pdv0hl5u46adyyyb6n")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000047-0000-0014-0000-007e00000049"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000047-0000-0014-0000-007e00000049"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1634,16 +1636,16 @@ testObject_SimpleMembers_user_15 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000028-0000-002f-0000-004a00000063"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000028-0000-002f-0000-004a00000063"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "s1cu0tibrwjvgpa49x9sk9kuzyd4hco7pj3gnbcc8ie519vmobd70ln2im2dx_yg_qoh4rc8")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000027-0000-0075-0000-003f00000016"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000027-0000-0075-0000-003f00000016"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "e6t98s2m_0jqjwibfan257dq0tbxl452q0dcs5mkl4kn")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000045-0000-007a-0000-003900000015"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000045-0000-007a-0000-003900000015"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1652,7 +1654,7 @@ testObject_SimpleMembers_user_15 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000000-0000-0040-0000-002e0000007c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000000-0000-0040-0000-002e0000007c"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1661,11 +1663,11 @@ testObject_SimpleMembers_user_15 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000057-0000-0060-0000-006e0000001d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000057-0000-0060-0000-006e0000001d"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "hq3mg17cd7p27q00dhyjrdu7pr4kdplicp4ipm")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000037-0000-0007-0000-006600000055"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000037-0000-0007-0000-006600000055"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1674,7 +1676,7 @@ testObject_SimpleMembers_user_15 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000032-0000-0078-0000-005100000021"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000032-0000-0078-0000-005100000021"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "8_lth324f81q1zr6nhz1jw5oeu4ovjqnl8lobb9t3azlu7hj3s62_xm30b3fie4s")) } @@ -1686,7 +1688,7 @@ testObject_SimpleMembers_user_16 = SimpleMembers { mMembers = [ SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001c-0000-0079-0000-006800000001"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001c-0000-0079-0000-006800000001"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1695,26 +1697,26 @@ testObject_SimpleMembers_user_16 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000005c-0000-0056-0000-00780000001a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000005c-0000-0056-0000-00780000001a"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "5roj3c12kqt7")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000032-0000-007f-0000-00270000002a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000032-0000-007f-0000-00270000002a"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "r_ivn3ruci8x4pl6bl1g_jex4")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000002b-0000-000e-0000-003400000009"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000002b-0000-000e-0000-003400000009"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "x__i5068zhcdautdjavpic3zi7u950hdw_iy63gdd0h6zbs1pfviyyui2zl")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000007a-0000-0017-0000-005800000050"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000007a-0000-0017-0000-005800000050"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust (parseRoleName "g5ignr39a41zundyudm1rovkz6a3rjy3dodkwk0ht3jnsqp1maz2ulc7yx93z7uy_dyqso9ofxblm2xqs") ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000061-0000-0036-0000-006700000071"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000061-0000-0036-0000-006700000071"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1723,11 +1725,11 @@ testObject_SimpleMembers_user_16 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000060-0000-007e-0000-004f0000005a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000060-0000-007e-0000-004f0000005a"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "ox94nzepea1423z47_yd1txi")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000002e-0000-0016-0000-001e0000001a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000002e-0000-0016-0000-001e0000001a"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1736,15 +1738,15 @@ testObject_SimpleMembers_user_16 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000006b-0000-0038-0000-006a0000004d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000006b-0000-0038-0000-006a0000004d"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "307w5bmxkox9r8klphxtmjge_8jgawjnotx_r0krsadx_n7")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000043-0000-003e-0000-005a0000007d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000043-0000-003e-0000-005a0000007d"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "j6_h0zam0_k8x6coroh4ixk9m3pk5acmwx_cg1q7mpnmn1zha_i")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000002d-0000-0010-0000-00010000000f"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000002d-0000-0010-0000-00010000000f"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1753,15 +1755,15 @@ testObject_SimpleMembers_user_16 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000043-0000-0070-0000-006400000045"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000043-0000-0070-0000-006400000045"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "ds4scvwxorxgxtlskf27hu")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000026-0000-002a-0000-00150000005d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000026-0000-002a-0000-00150000005d"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "1j2p5d49kfu8omp83fr67o4qpdb07")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000079-0000-0040-0000-006100000033"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000079-0000-0040-0000-006100000033"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1770,14 +1772,14 @@ testObject_SimpleMembers_user_16 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000007b-0000-0033-0000-005a00000007"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000007b-0000-0033-0000-005a00000007"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust (parseRoleName "u0lw_wyfzjmmu17s65cau3i295l_0c4hu823csp473bry2cn2zr24vsay4w2m2936y9ja0mvapjxafww89o") ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000078-0000-0058-0000-006300000019"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000078-0000-0058-0000-006300000019"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1786,15 +1788,15 @@ testObject_SimpleMembers_user_16 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000068-0000-0042-0000-007b0000002b"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000068-0000-0042-0000-007b0000002b"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "cgx4sx81so7w8wyohtqvr53bzf_8od3j77")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000004b-0000-002a-0000-007000000043"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000004b-0000-002a-0000-007000000043"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "p35w8lh2_arnf44pbqrk3g4ln0881ml0b4t")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000006d-0000-007b-0000-006b00000005"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000006d-0000-007b-0000-006b00000005"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "0z7pdm65ezdilg_qqnzz34l5e1zi8gsw78qbwitnu2ng")) } ] @@ -1805,7 +1807,7 @@ testObject_SimpleMembers_user_17 = SimpleMembers { mMembers = [ SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000071-0000-0050-0000-006200000041"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000071-0000-0050-0000-006200000041"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1814,25 +1816,25 @@ testObject_SimpleMembers_user_17 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000003-0000-0074-0000-004e0000003c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000003-0000-0074-0000-004e0000003c"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "qsowevndt0gqwh1yvpqxd_4u3junr66dhuerv38qrhzv5kf9i38fkd")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000000b-0000-003a-0000-003900000026"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000000b-0000-003a-0000-003900000026"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "dq1mag9bzqoenu3chbc2mn91ivbh")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001b-0000-0058-0000-000500000057"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001b-0000-0058-0000-000500000057"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "9ij9p1jla54lbtk66mhbakd7m7p502p6tz1ryyaep94rz7upsquixaaf6eoewz_oziw_ok7xbo49")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000007a-0000-001d-0000-005800000052"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000007a-0000-001d-0000-005800000052"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "13tjs8e20xxqd296duhver4er47dj47v2yyspcpfz5pdhbmnmlxyzar0w2recatb6r4_20zcd")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001a-0000-001e-0000-00360000007b"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001a-0000-001e-0000-00360000007b"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "gy3s_2c0r9lzi08hjnkbc9pbhdu3yvg409ipjztpmthie_j834nn12zjq_m56w1dqqi8mpde")) } @@ -1844,14 +1846,14 @@ testObject_SimpleMembers_user_18 = SimpleMembers { mMembers = [ SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000013-0000-003e-0000-006000000058"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000013-0000-003e-0000-006000000058"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust (parseRoleName "3me5rxn2utoa25v5xxht8ulguq6yxi7tp38dwoyvs_4o40u1to2j5nrtykcbqmxuefqoulfptt90s") ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000002-0000-0026-0000-005d00000007"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000002-0000-0026-0000-005d00000007"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1860,7 +1862,7 @@ testObject_SimpleMembers_user_18 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000078-0000-005b-0000-00580000004f"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000078-0000-005b-0000-00580000004f"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1869,11 +1871,11 @@ testObject_SimpleMembers_user_18 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000054-0000-0053-0000-00340000006e"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000054-0000-0053-0000-00340000006e"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "tg_h0qkv4aijetsz83m1kgblaem7q")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000023-0000-002f-0000-002000000063"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000023-0000-002f-0000-002000000063"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1882,7 +1884,7 @@ testObject_SimpleMembers_user_18 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000022-0000-0057-0000-006f00000014"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000022-0000-0057-0000-006f00000014"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1891,28 +1893,28 @@ testObject_SimpleMembers_user_18 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000003-0000-0013-0000-003b0000002d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000003-0000-0013-0000-003b0000002d"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "b72qpthui23k7cbxz8m3226h")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000052-0000-0046-0000-002e0000003a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000052-0000-0046-0000-002e0000003a"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "4ndtltebfabogp8i9skodvx86xbu_")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000048-0000-0028-0000-001b00000006"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000048-0000-0028-0000-001b00000006"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "r9jg4")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000007b-0000-004d-0000-005500000006"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000007b-0000-004d-0000-005500000006"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "1_r3da_nqzfzbs_6j8sztfleq4ov3zk7e6lhjg04")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000000f-0000-0056-0000-002a00000066"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000000f-0000-0056-0000-002a00000066"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "_v361ue5c23jdmlu43s7eckol6hzqgdvd49z_ga87_gtfu6s6j49c2g12tfsv")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000014-0000-006d-0000-00600000005f"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000014-0000-006d-0000-00600000005f"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1921,7 +1923,7 @@ testObject_SimpleMembers_user_18 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000005c-0000-0022-0000-007c00000001"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000005c-0000-0022-0000-007c00000001"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1930,15 +1932,15 @@ testObject_SimpleMembers_user_18 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000008-0000-0042-0000-00250000007a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000008-0000-0042-0000-00250000007a"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "0_lettu8qvkqk6krt4_nez4e95b7y")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001f-0000-0022-0000-007c00000028"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001f-0000-0022-0000-007c00000028"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "z3o8c78vi1ynsrc_s6ebpnz96960dez7lnlijjz843un77jtnj9a5pah")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000022-0000-0045-0000-007d00000007"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000022-0000-0045-0000-007d00000007"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1947,11 +1949,11 @@ testObject_SimpleMembers_user_18 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000007f-0000-006c-0000-006f0000005a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000007f-0000-006c-0000-006f0000005a"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "fnxibm1l1089wzrxa")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000022-0000-0020-0000-006900000033"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000022-0000-0020-0000-006900000033"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -1960,19 +1962,19 @@ testObject_SimpleMembers_user_18 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000000-0000-002f-0000-007000000064"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000000-0000-002f-0000-007000000064"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "b6fsp76pbub9rakkxrs7lk8gsh005ajo5m8ap4apvxjxoak95s")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000002-0000-0042-0000-000000000058"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000002-0000-0042-0000-000000000058"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "hinbqrmh843xzsvpu_a6ifnc6lc164f58gkhv")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000005f-0000-0052-0000-005400000002"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000005f-0000-0052-0000-005400000002"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "18os8cjhuuv8ng")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000004b-0000-0046-0000-006e00000024"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000004b-0000-0046-0000-006e00000024"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "4k62w0mz4j2hsstjelh8zx0gpg927v3ggod9z17i")) } ] @@ -1983,16 +1985,16 @@ testObject_SimpleMembers_user_19 = SimpleMembers { mMembers = [ SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000036-0000-0080-0000-004600000006"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000036-0000-0080-0000-004600000006"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "4fex2pu__ri6dlr68us285w6yv4alufdibfd_b8zt7ckdo7ej590lkosvd4be8cg4acr7")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000078-0000-007c-0000-004d0000001c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000078-0000-007c-0000-004d0000001c"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "6lab82iykqaweibdnw89206lrz9vs16h6ae31uruwd0dat90ms")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000002b-0000-0013-0000-006900000050"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000002b-0000-0013-0000-006900000050"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -2001,11 +2003,11 @@ testObject_SimpleMembers_user_19 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000037-0000-0053-0000-00300000001c"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000037-0000-0053-0000-00300000001c"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "u9dnn4lg0fkq7wjm352pnvivghndsyu5dc1v7")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000001a-0000-0014-0000-004100000073"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000001a-0000-0014-0000-004100000073"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -2014,7 +2016,7 @@ testObject_SimpleMembers_user_19 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000001-0000-003c-0000-007f00000051"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000001-0000-003c-0000-007f00000051"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -2023,11 +2025,11 @@ testObject_SimpleMembers_user_19 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000023-0000-001f-0000-001b0000007f"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000023-0000-001f-0000-001b0000007f"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "b3pojvx2wmrpy7q6adcuo5szs")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000055-0000-004d-0000-006900000053"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000055-0000-004d-0000-006900000053"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -2036,15 +2038,15 @@ testObject_SimpleMembers_user_19 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000047-0000-0003-0000-000500000001"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000047-0000-0003-0000-000500000001"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "xbu28z6zird3kd4iqv0j2r7_e0b2qdxzpdeuzvxb__idnrzhib1rud5o98b4")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000004b-0000-003b-0000-007f0000005a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000004b-0000-003b-0000-007f0000005a"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "rl_mm")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000006-0000-0034-0000-007e00000030"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000006-0000-0034-0000-007e00000030"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -2053,7 +2055,7 @@ testObject_SimpleMembers_user_19 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000006d-0000-007e-0000-000f00000060"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000006d-0000-007e-0000-000f00000060"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -2062,11 +2064,11 @@ testObject_SimpleMembers_user_19 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000075-0000-0022-0000-001100000044"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000075-0000-0022-0000-001100000044"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "vcan3ha2ahaaaxbs_rks5vygwuny8zp6st17fv9pk04f_2onxvw_guw")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000069-0000-0024-0000-00790000005f"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000069-0000-0024-0000-00790000005f"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -2075,7 +2077,7 @@ testObject_SimpleMembers_user_19 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000068-0000-0040-0000-003100000045"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000068-0000-0040-0000-003100000045"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -2084,7 +2086,7 @@ testObject_SimpleMembers_user_19 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000004a-0000-0007-0000-005f0000003d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000004a-0000-0007-0000-005f0000003d"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -2093,19 +2095,19 @@ testObject_SimpleMembers_user_19 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000068-0000-0008-0000-006f00000067"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000068-0000-0008-0000-006f00000067"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "qq2hd0")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000002-0000-000d-0000-00320000006b"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000002-0000-000d-0000-00320000006b"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "8hsl7yd_1raa4a")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000001-0000-000f-0000-001800000008"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000001-0000-000f-0000-001800000008"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "ftgvbfyalwkdozipte")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000004e-0000-001f-0000-001e0000007d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000004e-0000-001f-0000-001e0000007d"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -2121,14 +2123,14 @@ testObject_SimpleMembers_user_20 = SimpleMembers { mMembers = [ SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000001-0000-0026-0000-00580000001f"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000001-0000-0026-0000-00580000001f"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust (parseRoleName "wmx8molqscfxab9_imrcssdgf0_4m2ik51npx6i23vig82mer1rji1xwvddqxasyw6jqmy0xzykd2ums") ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000002b-0000-003b-0000-007600000012"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000002b-0000-003b-0000-007600000012"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -2137,11 +2139,11 @@ testObject_SimpleMembers_user_20 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000005b-0000-005f-0000-006500000034"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000005b-0000-005f-0000-006500000034"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "lvczhtpd0dgdsvzxtzyelmrbh6dkl17j3drta713mm4i")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000002b-0000-0003-0000-001700000060"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000002b-0000-0003-0000-001700000060"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -2150,15 +2152,15 @@ testObject_SimpleMembers_user_20 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000072-0000-0012-0000-000500000052"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000072-0000-0012-0000-000500000052"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "sjkd77e2wg_ddyj59wpadnncaup_41e7m8ayhs936zwkfy5")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000003a-0000-002b-0000-00050000002d"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000003a-0000-002b-0000-00050000002d"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "3bvwtadqp5w2ode0z")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000047-0000-006c-0000-00500000003b"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000047-0000-006c-0000-00500000003b"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -2167,24 +2169,24 @@ testObject_SimpleMembers_user_20 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000000-0000-0075-0000-000b0000000b"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000000-0000-0075-0000-000b0000000b"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "rspqdh94do5jxbxub9t7")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000006d-0000-002b-0000-003800000003"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000006d-0000-002b-0000-003800000003"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "fqkwb05s1i7aww45jcx5hptvdzd856n2y_8uy5v35zcxhu07jp6v19ax1juyczkgtiiw")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000005c-0000-003c-0000-003d00000059"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000005c-0000-003c-0000-003d00000059"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "fq7zom614_e")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000015-0000-0050-0000-002200000061"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000015-0000-0050-0000-002200000061"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "j3kukcuzzfid3ecr70nzd")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "0000002e-0000-002e-0000-006100000030"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "0000002e-0000-002e-0000-006100000030"))) (Domain "faraway.example.com"), smConvRoleName = ( fromJust ( parseRoleName @@ -2193,11 +2195,11 @@ testObject_SimpleMembers_user_20 = ) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000010-0000-0030-0000-006c0000006b"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000010-0000-0030-0000-006c0000006b"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "5v8e6cih_ueu_a2wd28uj8boqxv3gmfx15u1chfrbf_1fupa7fo_yqd")) }, SimpleMember - { smId = (Id (fromJust (UUID.fromString "00000037-0000-0048-0000-00460000006a"))), + { smQualifiedId = Qualified (Id (fromJust (UUID.fromString "00000037-0000-0048-0000-00460000006a"))) (Domain "faraway.example.com"), smConvRoleName = (fromJust (parseRoleName "dxwk4qalr3oi4jh6v8e3r4agor5vce0b_5w_b3fwmdwfhc3_mqsk94ngdw")) } ] diff --git a/services/brig/test/integration/API/Provider.hs b/services/brig/test/integration/API/Provider.hs index e5d8dde4a02..574e5445fc1 100644 --- a/services/brig/test/integration/API/Provider.hs +++ b/services/brig/test/integration/API/Provider.hs @@ -46,6 +46,7 @@ import qualified Data.ByteString as BS import qualified Data.ByteString.Char8 as C8 import Data.ByteString.Conversion import qualified Data.ByteString.Lazy.Char8 as LC8 +import Data.Domain import Data.Handle (Handle (Handle)) import qualified Data.HashMap.Strict as HashMap import Data.Id hiding (client) @@ -86,8 +87,8 @@ import Test.Tasty.HUnit import Util import Web.Cookie (SetCookie (..), parseSetCookie) -tests :: Config -> Manager -> DB.ClientState -> Brig -> Cannon -> Galley -> IO TestTree -tests conf p db b c g = do +tests :: Domain -> Config -> Manager -> DB.ClientState -> Brig -> Cannon -> Galley -> IO TestTree +tests dom conf p db b c g = do return $ testGroup "provider" @@ -123,7 +124,7 @@ tests conf p db b c g = do test p "search honors enabling and whitelisting" $ testSearchWhitelistHonorUpdates conf db b, test p "de-whitelisted bots are removed" $ - testWhitelistKickout conf db b g c, + testWhitelistKickout dom conf db b g c, test p "de-whitelisting works with deleted conversations" $ testDeWhitelistDeletedConv conf db b g c ], @@ -488,17 +489,22 @@ testDeleteService config db brig galley cannon = withTestService config db brig u1 <- createUser "Ernie" brig u2 <- createUser "Bert" brig let uid1 = userId u1 - let uid2 = userId u2 + quid1 = userQualifiedId u1 + localDomain = qDomain quid1 + uid2 = userId u2 postConnection brig uid1 uid2 !!! const 201 === statusCode putConnection brig uid2 uid1 Accepted !!! const 200 === statusCode cnv <- responseJsonError =<< (createConv galley uid1 [uid2] do deleteService brig pid sid defProviderPassword @@ -507,8 +513,8 @@ testDeleteService config db brig galley cannon = withTestService config db brig _ <- waitFor (5 # Second) not (isMember galley buid2 cid) getBotConv galley bid1 cid !!! const 404 === statusCode getBotConv galley bid2 cid !!! const 404 === statusCode - wsAssertMemberLeave ws cid buid1 [buid1] - wsAssertMemberLeave ws cid buid2 [buid2] + wsAssertMemberLeave ws qcid qbuid1 [buid1] + wsAssertMemberLeave ws qcid qbuid2 [buid2] -- The service should not be available getService brig pid sid !!! const 404 === statusCode @@ -523,7 +529,9 @@ testAddRemoveBot config db brig galley cannon = withTestService config db brig d u1 <- createUser "Ernie" brig u2 <- createUser "Bert" brig let uid1 = userId u1 - let uid2 = userId u2 + quid1 = userQualifiedId u1 + localDomain = qDomain quid1 + uid2 = userId u2 h <- randomHandle putHandle brig uid1 h !!! const 200 === statusCode postConnection brig uid1 uid2 !!! const 201 === statusCode @@ -532,7 +540,7 @@ testAddRemoveBot config db brig galley cannon = withTestService config db brig d _rs <- createConv galley uid1 [uid2] DB.ClientState -> Brig -> Galley -> Cannon -> Http () testMessageBot config db brig galley cannon = withTestService config db brig defServiceApp $ \sref buf -> do @@ -577,17 +585,22 @@ testAddRemoveBotTeam :: Config -> DB.ClientState -> Brig -> Galley -> Cannon -> testAddRemoveBotTeam config db brig galley cannon = withTestService config db brig defServiceApp $ \sref buf -> do (u1, u2, h, tid, cid, pid, sid) <- prepareBotUsersTeam brig galley sref let (uid1, uid2) = (userId u1, userId u2) + quid1 = userQualifiedId u1 + localDomain = qDomain quid1 -- Ensure cannot add bots to managed conversations cidFail <- Team.createManagedConv galley tid uid1 [uid2] Nothing addBot brig uid1 pid sid cidFail !!! do const 403 === statusCode const (Just "invalid-conversation") === fmap Error.label . responseJsonMaybe - testAddRemoveBotUtil pid sid cid u1 u2 h sref buf brig galley cannon + testAddRemoveBotUtil localDomain pid sid cid u1 u2 h sref buf brig galley cannon testBotTeamOnlyConv :: Config -> DB.ClientState -> Brig -> Galley -> Cannon -> Http () testBotTeamOnlyConv config db brig galley cannon = withTestService config db brig defServiceApp $ \sref buf -> do (u1, u2, _h, _tid, cid, pid, sid) <- prepareBotUsersTeam brig galley sref let (uid1, uid2) = (userId u1, userId u2) + quid1 = userQualifiedId u1 + localDomain = qDomain quid1 + qcid = Qualified cid localDomain -- Make the conversation team-only and check that the bot can't be added -- to the conversation setAccessRole uid1 cid TeamAccessRole @@ -596,8 +609,9 @@ testBotTeamOnlyConv config db brig galley cannon = withTestService config db bri const (Just "invalid-conversation") === fmap Error.label . responseJsonMaybe -- Make the conversation allowed for guests and add the bot successfully setAccessRole uid1 cid NonActivatedAccessRole - bid <- addBotConv brig cannon uid1 uid2 cid pid sid buf + bid <- addBotConv localDomain brig cannon uid1 uid2 cid pid sid buf let buid = botUserId bid + qbuid = Qualified buid localDomain -- Make the conversation team-only again and check that the bot has been removed WS.bracketR cannon uid1 $ \ws -> do setAccessRole uid1 cid TeamAccessRole @@ -606,11 +620,11 @@ testBotTeamOnlyConv config db brig galley cannon = withTestService config db bri !!! const 404 === statusCode svcAssertConvAccessUpdate buf - uid1 + quid1 (ConversationAccessUpdate [InviteAccess] TeamAccessRole) - cid - svcAssertMemberLeave buf buid [buid] cid - wsAssertMemberLeave ws cid buid [buid] + qcid + svcAssertMemberLeave buf qbuid [buid] qcid + wsAssertMemberLeave ws qcid qbuid [buid] where setAccessRole uid cid role = updateConversationAccess galley uid cid [InviteAccess] role @@ -637,16 +651,19 @@ testDeleteConvBotTeam config db brig galley cannon = withTestService config db b -- Prepare users and the bot (u1, u2, _, tid, cid, pid, sid) <- prepareBotUsersTeam brig galley sref let (uid1, uid2) = (userId u1, userId u2) - bid <- addBotConv brig cannon uid1 uid2 cid pid sid buf + quid2 = userQualifiedId u2 + localDomain = qDomain quid2 + qcid = Qualified cid localDomain + bid <- addBotConv localDomain brig cannon uid1 uid2 cid pid sid buf -- Delete the conversation and check that everyone is notified -- via an event, including the bot itself. WS.bracketR2 cannon uid1 uid2 $ \wss -> do -- 200 response on success Team.deleteTeamConv galley tid cid uid2 -- Events for the users - forM_ wss $ \ws -> wsAssertConvDelete ws cid uid2 + forM_ wss $ \ws -> wsAssertConvDelete ws qcid quid2 -- Event for the bot - svcAssertConvDelete buf uid2 cid + svcAssertConvDelete buf quid2 qcid -- Check that the conversation no longer exists forM_ [uid1, uid2] $ \uid -> getConversation galley uid cid !!! const 404 === statusCode @@ -657,7 +674,10 @@ testDeleteTeamBotTeam config db brig galley cannon = withTestService config db b -- Prepare users and the bot (u1, u2, _, tid, cid, pid, sid) <- prepareBotUsersTeam brig galley sref let (uid1, uid2) = (userId u1, userId u2) - bid <- addBotConv brig cannon uid1 uid2 cid pid sid buf + quid1 = userQualifiedId u1 + localDomain = qDomain quid1 + qcid = Qualified cid localDomain + bid <- addBotConv localDomain brig cannon uid1 uid2 cid pid sid buf -- Delete the team, and check that the bot (eventually) -- receives a notification via event Team.deleteTeam galley tid uid1 @@ -665,7 +685,7 @@ testDeleteTeamBotTeam config db brig galley cannon = withTestService config db b -- events may or may not be sent (for instance, team members) -- leaving a conversation. Thus, we check _only_ for the relevant -- ones for the bot, which are the ConvDelete event - svcAssertEventuallyConvDelete buf uid1 cid + svcAssertEventuallyConvDelete buf quid1 qcid -- Wait until all users have been deleted (can take a while) forM_ [uid1, uid2] $ \uid -> do void $ retryWhileN 20 (/= Intra.Deleted) (getStatus brig uid) @@ -850,11 +870,13 @@ testWhitelistBasic config db brig galley = disableService brig pid sid whitelistService brig owner tid pid sid -testWhitelistKickout :: Config -> DB.ClientState -> Brig -> Galley -> Cannon -> Http () -testWhitelistKickout config db brig galley cannon = do +testWhitelistKickout :: Domain -> Config -> DB.ClientState -> Brig -> Galley -> Cannon -> Http () +testWhitelistKickout localDomain config db brig galley cannon = do -- Create a team and a conversation (owner, tid) <- Team.createUserWithTeam brig + let qowner = Qualified owner localDomain cid <- Team.createTeamConv galley tid owner [] Nothing + let qcid = Qualified cid localDomain -- Create a service withTestService config db brig defServiceApp $ \sref buf -> do -- Add it to the conversation @@ -866,16 +888,17 @@ testWhitelistKickout config db brig galley cannon = do =<< (addBot brig owner pid sid cid do dewhitelistService brig owner tid pid sid _ <- waitFor (2 # Second) not (isMember galley buid cid) getBotConv galley bid cid !!! const 404 === statusCode - wsAssertMemberLeave ws cid owner [buid] - svcAssertMemberLeave buf owner [buid] cid + wsAssertMemberLeave ws qcid qowner [buid] + svcAssertMemberLeave buf qowner [buid] qcid -- The bot should not get any further events liftIO $ timeout (2 # Second) (readChan buf) >>= \case @@ -891,8 +914,10 @@ testDeWhitelistDeletedConv config db brig galley cannon = do (u1, u2, _h, tid, cid, pid, sid) <- prepareBotUsersTeam brig galley sref let uid1 = userId u1 uid2 = userId u2 + quid1 = userQualifiedId u1 + localDomain = qDomain quid1 -- Add a bot there - _bid1 <- addBotConv brig cannon uid1 uid2 cid pid sid buf + _bid1 <- addBotConv localDomain brig cannon uid1 uid2 cid pid sid buf -- Delete conversation (to ensure deleteService can be called even with a deleted conversation) Team.deleteTeamConv galley tid cid uid1 -- De-whitelist the service @@ -1647,7 +1672,7 @@ defServiceApp buf = writeChan buf (TestBotMessage ev) k $ responseLBS status200 [] "success" -wsAssertMemberJoin :: MonadIO m => WS.WebSocket -> ConvId -> UserId -> [UserId] -> m () +wsAssertMemberJoin :: MonadIO m => WS.WebSocket -> Qualified ConvId -> Qualified UserId -> [Qualified UserId] -> m () wsAssertMemberJoin ws conv usr new = void $ liftIO $ WS.assertMatch (5 # Second) ws $ @@ -1659,7 +1684,7 @@ wsAssertMemberJoin ws conv usr new = void $ evtFrom e @?= usr evtData e @?= EdMembersJoin (SimpleMembers (fmap (\u -> SimpleMember u roleNameWireAdmin) new)) -wsAssertMemberLeave :: MonadIO m => WS.WebSocket -> ConvId -> UserId -> [UserId] -> m () +wsAssertMemberLeave :: MonadIO m => WS.WebSocket -> Qualified ConvId -> Qualified UserId -> [UserId] -> m () wsAssertMemberLeave ws conv usr old = void $ liftIO $ WS.assertMatch (5 # Second) ws $ @@ -1671,7 +1696,7 @@ wsAssertMemberLeave ws conv usr old = void $ evtFrom e @?= usr evtData e @?= EdMembersLeave (UserIdList old) -wsAssertConvDelete :: MonadIO m => WS.WebSocket -> ConvId -> UserId -> m () +wsAssertConvDelete :: MonadIO m => WS.WebSocket -> Qualified ConvId -> Qualified UserId -> m () wsAssertConvDelete ws conv from = void $ liftIO $ WS.assertMatch (5 # Second) ws $ @@ -1683,7 +1708,7 @@ wsAssertConvDelete ws conv from = void $ evtFrom e @?= from evtData e @?= EdConvDelete -wsAssertMessage :: MonadIO m => WS.WebSocket -> ConvId -> UserId -> ClientId -> ClientId -> Text -> m () +wsAssertMessage :: MonadIO m => WS.WebSocket -> Qualified ConvId -> Qualified UserId -> ClientId -> ClientId -> Text -> m () wsAssertMessage ws conv fromu fromc to txt = void $ liftIO $ WS.assertMatch (5 # Second) ws $ @@ -1695,7 +1720,7 @@ wsAssertMessage ws conv fromu fromc to txt = void $ evtFrom e @?= fromu evtData e @?= EdOtrMessage (OtrMessage fromc to txt (Just "data")) -svcAssertMemberJoin :: MonadIO m => Chan TestBotEvent -> UserId -> [UserId] -> ConvId -> m () +svcAssertMemberJoin :: MonadIO m => Chan TestBotEvent -> Qualified UserId -> [Qualified UserId] -> Qualified ConvId -> m () svcAssertMemberJoin buf usr new cnv = liftIO $ do evt <- timeout (5 # Second) $ readChan buf case evt of @@ -1707,7 +1732,7 @@ svcAssertMemberJoin buf usr new cnv = liftIO $ do assertEqual "event data" (EdMembersJoin msg) (evtData e) _ -> assertFailure "Event timeout (TestBotMessage: member-join)" -svcAssertMemberLeave :: MonadIO m => Chan TestBotEvent -> UserId -> [UserId] -> ConvId -> m () +svcAssertMemberLeave :: MonadIO m => Chan TestBotEvent -> Qualified UserId -> [UserId] -> Qualified ConvId -> m () svcAssertMemberLeave buf usr gone cnv = liftIO $ do evt <- timeout (5 # Second) $ readChan buf case evt of @@ -1719,7 +1744,7 @@ svcAssertMemberLeave buf usr gone cnv = liftIO $ do assertEqual "event data" (EdMembersLeave msg) (evtData e) _ -> assertFailure "Event timeout (TestBotMessage: member-leave)" -svcAssertConvAccessUpdate :: MonadIO m => Chan TestBotEvent -> UserId -> ConversationAccessUpdate -> ConvId -> m () +svcAssertConvAccessUpdate :: MonadIO m => Chan TestBotEvent -> Qualified UserId -> ConversationAccessUpdate -> Qualified ConvId -> m () svcAssertConvAccessUpdate buf usr upd cnv = liftIO $ do evt <- timeout (5 # Second) $ readChan buf case evt of @@ -1730,7 +1755,7 @@ svcAssertConvAccessUpdate buf usr upd cnv = liftIO $ do assertEqual "event data" (EdConvAccessUpdate upd) (evtData e) _ -> assertFailure "Event timeout (TestBotMessage: conv-access-update)" -svcAssertConvDelete :: MonadIO m => Chan TestBotEvent -> UserId -> ConvId -> m () +svcAssertConvDelete :: MonadIO m => Chan TestBotEvent -> Qualified UserId -> Qualified ConvId -> m () svcAssertConvDelete buf usr cnv = liftIO $ do evt <- timeout (5 # Second) $ readChan buf case evt of @@ -1753,7 +1778,7 @@ svcAssertBotCreated buf bid cid = liftIO $ do return b _ -> throwM $ HUnitFailure Nothing "Event timeout (TestBotCreated)" -svcAssertMessage :: MonadIO m => Chan TestBotEvent -> UserId -> OtrMessage -> ConvId -> m () +svcAssertMessage :: MonadIO m => Chan TestBotEvent -> Qualified UserId -> OtrMessage -> Qualified ConvId -> m () svcAssertMessage buf from msg cnv = liftIO $ do evt <- timeout (5 # Second) $ readChan buf case evt of @@ -1764,7 +1789,7 @@ svcAssertMessage buf from msg cnv = liftIO $ do assertEqual "event data" (EdOtrMessage msg) (evtData e) _ -> assertFailure "Event timeout (TestBotMessage: otr-message-add)" -svcAssertEventuallyConvDelete :: MonadIO m => Chan TestBotEvent -> UserId -> ConvId -> m () +svcAssertEventuallyConvDelete :: MonadIO m => Chan TestBotEvent -> Qualified UserId -> Qualified ConvId -> m () svcAssertEventuallyConvDelete buf usr cnv = liftIO $ do evt <- timeout (5 # Second) $ readChan buf case evt of @@ -1824,6 +1849,7 @@ taggedServiceNames prefix = mkName n = Name (prefix <> "|" <> n) testAddRemoveBotUtil :: + Domain -> ProviderId -> ServiceId -> ConvId -> @@ -1836,27 +1862,31 @@ testAddRemoveBotUtil :: Galley -> WS.Cannon -> Http () -testAddRemoveBotUtil pid sid cid u1 u2 h sref buf brig galley cannon = do - let uid1 = userId u1 - let uid2 = userId u2 +testAddRemoveBotUtil localDomain pid sid cid u1 u2 h sref buf brig galley cannon = do + let qcid = Qualified cid localDomain + uid1 = userId u1 + uid2 = userId u2 + quid1 = Qualified uid1 localDomain + quid2 = Qualified uid2 localDomain -- Add the bot and check that everyone is notified via an event, -- including the bot itself. (rs, bot) <- WS.bracketR2 cannon uid1 uid2 $ \(ws1, ws2) -> do _rs <- addBot brig uid1 pid sid cid wsAssertMemberJoin ws cid uid1 [botUserId bid] + forM_ [ws1, ws2] $ \ws -> wsAssertMemberJoin ws qcid quid1 [qbuid] -- Member join event for the bot - svcAssertMemberJoin buf uid1 [botUserId bid] cid + svcAssertMemberJoin buf quid1 [qbuid] qcid return (rs, bot) let bid = rsAddBotId rs - let buid = botUserId bid - -- Check that the bot token grants access to the right user and conversation - let Just tok = fromByteString (Text.encodeUtf8 (testBotToken bot)) + buid = botUserId bid + -- Check that the bot token grants access to the right user and conversation + Just tok = fromByteString (Text.encodeUtf8 (testBotToken bot)) liftIO $ do assertEqual "principal" bid (BotId (Id (tok ^. ZAuth.body . ZAuth.bot))) assertEqual "conversation" cid (Id (tok ^. ZAuth.body . ZAuth.conv)) @@ -1889,9 +1919,9 @@ testAddRemoveBotUtil pid sid cid u1 u2 h sref buf brig galley cannon = do let Just ev = rsRemoveBotEvent <$> responseJsonMaybe _rs liftIO $ assertEqual "bot event" MemberLeave (evtType ev) -- Events for both users - forM_ [ws1, ws2] $ \ws -> wsAssertMemberLeave ws cid uid2 [buid] + forM_ [ws1, ws2] $ \ws -> wsAssertMemberLeave ws qcid quid2 [buid] -- Event for the bot - svcAssertMemberLeave buf uid2 [buid] cid + svcAssertMemberLeave buf quid2 [buid] qcid -- Empty 204 response if the bot is not in the conversation removeBot brig uid2 cid bid !!! const 204 === statusCode -- Check that the bot no longer has access to the conversation @@ -1911,21 +1941,23 @@ testMessageBotUtil :: Http () testMessageBotUtil quid uc cid pid sid sref buf brig galley cannon = do let uid = qUnqualified quid - let localDomain = qDomain quid + localDomain = qDomain quid + qcid = Qualified cid localDomain -- Add bot to conversation _rs <- addBot brig uid pid sid cid do postBotMessage galley bid bc cid [(uid, uc, "Hi User!")] !!! const 201 === statusCode - wsAssertMessage ws cid buid bc uc "Hi User!" + wsAssertMessage ws qcid qbuid bc uc "Hi User!" -- The user replies postMessage galley uid uc cid [(buid, bc, "Hi Bot")] !!! const 201 === statusCode let msg = OtrMessage uc bc "Hi Bot" (Just "data") - svcAssertMessage buf uid msg cid + svcAssertMessage buf quid msg qcid -- Remove the entire service; the bot should be removed from the conversation WS.bracketR cannon uid $ \ws -> do deleteService brig pid sid defProviderPassword @@ -1949,7 +1981,7 @@ testMessageBotUtil quid uc cid pid sid sref buf brig galley cannon = do _ <- waitFor (5 # Second) not (isMember galley buid cid) getBotConv galley bid cid !!! const 404 === statusCode - wsAssertMemberLeave ws cid buid [buid] + wsAssertMemberLeave ws qcid qbuid [buid] prepareBotUsersTeam :: HasCallStack => @@ -1975,6 +2007,7 @@ prepareBotUsersTeam brig galley sref = do addBotConv :: HasCallStack => + Domain -> Brig -> WS.Cannon -> UserId -> @@ -1984,7 +2017,9 @@ addBotConv :: ServiceId -> Chan TestBotEvent -> Http BotId -addBotConv brig cannon uid1 uid2 cid pid sid buf = +addBotConv localDomain brig cannon uid1 uid2 cid pid sid buf = do + let quid1 = Qualified uid1 localDomain + qcid = Qualified cid localDomain -- Add the bot and check that everyone is notified via an event, -- including the bot itself. WS.bracketR2 cannon uid1 uid2 $ \(ws1, ws2) -> do @@ -1994,10 +2029,11 @@ addBotConv brig cannon uid1 uid2 cid pid sid buf = bot <- svcAssertBotCreated buf bid cid liftIO $ assertEqual "bot client" (rsAddBotClient rs) (testBotClient bot) liftIO $ assertEqual "bot event" MemberJoin (evtType (rsAddBotEvent rs)) + let qbotId = Qualified (botUserId bid) localDomain -- Member join event for both users - forM_ [ws1, ws2] $ \ws -> wsAssertMemberJoin ws cid uid1 [botUserId bid] + forM_ [ws1, ws2] $ \ws -> wsAssertMemberJoin ws qcid quid1 [qbotId] -- Member join event for the bot - svcAssertMemberJoin buf uid1 [botUserId bid] cid + svcAssertMemberJoin buf quid1 [qbotId] qcid return (rsAddBotId rs) ---------------------------------------------------------------------------- diff --git a/services/brig/test/integration/Main.hs b/services/brig/test/integration/Main.hs index 8ed69f5cc08..01ef86e6b44 100644 --- a/services/brig/test/integration/Main.hs +++ b/services/brig/test/integration/Main.hs @@ -108,6 +108,7 @@ runTests iConf brigOpts otherArgs = do let turnFile = Opts.servers . Opts.turn $ brigOpts turnFileV2 = (Opts.serversV2 . Opts.turn) brigOpts + localDomain = brigOpts ^. Opts.optionSettings . Opts.federationDomain casHost = (\v -> (Opts.cassandra v) ^. casEndpoint . epHost) brigOpts casPort = (\v -> (Opts.cassandra v) ^. casEndpoint . epPort) brigOpts casKey = (\v -> (Opts.cassandra v) ^. casKeyspace) brigOpts @@ -119,7 +120,7 @@ runTests iConf brigOpts otherArgs = do emailAWSOpts <- parseEmailAWSOpts awsEnv <- AWS.mkEnv lg awsOpts emailAWSOpts mg userApi <- User.tests brigOpts mg b c ch g n awsEnv - providerApi <- Provider.tests (provider iConf) mg db b c g + providerApi <- Provider.tests localDomain (provider iConf) mg db b c g searchApis <- Search.tests brigOpts mg g b teamApis <- Team.tests brigOpts mg n b c g awsEnv turnApi <- Calling.tests mg b brigOpts turnFile turnFileV2 diff --git a/services/galley/src/Galley/API/Create.hs b/services/galley/src/Galley/API/Create.hs index c85e175cedb..1889d79ea80 100644 --- a/services/galley/src/Galley/API/Create.hs +++ b/services/galley/src/Galley/API/Create.hs @@ -96,8 +96,8 @@ internalCreateManagedConversation zusr zcon (NewConvManaged body) = do -- | A helper for creating a regular (non-team) group conversation. createRegularGroupConv :: UserId -> ConnId -> NewConvUnmanaged -> Galley ConversationResponse createRegularGroupConv zusr zcon (NewConvUnmanaged body) = do - name <- rangeCheckedMaybe (newConvName body) localDomain <- viewFederationDomain + name <- rangeCheckedMaybe (newConvName body) let unqualifiedUserIds = newConvUsers body qualifiedUserIds = newConvQualifiedUsers body let allUsers = map (`Qualified` localDomain) unqualifiedUserIds <> qualifiedUserIds @@ -109,6 +109,7 @@ createRegularGroupConv zusr zcon (NewConvUnmanaged body) = do -- FUTUREWORK: Implement (2) and (3) as per comments for Update.addMembers. (also for createTeamGroupConv) c <- Data.createConversation + localDomain zusr name (access body) @@ -125,8 +126,8 @@ createRegularGroupConv zusr zcon (NewConvUnmanaged body) = do -- handlers above. Allows both unmanaged and managed conversations. createTeamGroupConv :: UserId -> ConnId -> Public.ConvTeamInfo -> Public.NewConv -> Galley ConversationResponse createTeamGroupConv zusr zcon tinfo body = do - name <- rangeCheckedMaybe (newConvName body) localDomain <- viewFederationDomain + name <- rangeCheckedMaybe (newConvName body) let unqualifiedUserIds = newConvUsers body qualifiedUserIds = newConvQualifiedUsers body allUserIds = map (`Qualified` localDomain) unqualifiedUserIds <> qualifiedUserIds @@ -167,7 +168,18 @@ createTeamGroupConv zusr zcon tinfo body = do pure checkedPartitionedUsers checkRemoteUsersExist remotes -- FUTUREWORK: Implement (2) and (3) as per comments for Update.addMembers. - conv <- Data.createConversation zusr name (access body) (accessRole body) checkedPartitionedUsersManaged (newConvTeam body) (newConvMessageTimer body) (newConvReceiptMode body) (newConvUsersRole body) + conv <- + Data.createConversation + localDomain + zusr + name + (access body) + (accessRole body) + checkedPartitionedUsersManaged + (newConvTeam body) + (newConvMessageTimer body) + (newConvReceiptMode body) + (newConvUsersRole body) now <- liftIO getCurrentTime -- NOTE: We only send (conversation) events to members of the conversation notifyCreatedConversation (Just now) zusr (Just zcon) conv @@ -183,7 +195,8 @@ createSelfConversation zusr = do =<< maybe create (conversationExisted zusr) c where create = do - c <- Data.createSelfConversation zusr Nothing + localDomain <- viewFederationDomain + c <- Data.createSelfConversation localDomain zusr Nothing conversationCreated zusr c createOne2OneConversation :: UserId -> ConnId -> NewConvUnmanaged -> Galley (Union ConversationResponses) @@ -219,7 +232,8 @@ createOne2OneConversation zusr zcon (NewConvUnmanaged j) = do Just _ -> throwM nonBindingTeam Nothing -> throwM teamNotFound create x y n tinfo = do - c <- Data.createOne2OneConversation x y n (cnvTeamId <$> tinfo) + localDomain <- viewFederationDomain + c <- Data.createOne2OneConversation localDomain x y n (cnvTeamId <$> tinfo) notifyCreatedConversation Nothing zusr (Just zcon) c conversationCreated zusr c @@ -236,15 +250,17 @@ createConnectConversation usr conn j = do maybe (create x y n) (update n) conv where create x y n = do - (c, e) <- Data.createConnectConversation x y n j + localDomain <- viewFederationDomain + (c, e) <- Data.createConnectConversation localDomain x y n j notifyCreatedConversation Nothing usr conn c - for_ (newPush ListComplete (evtFrom e) (ConvEvent e) (recipient <$> Data.convMembers c)) $ \p -> + for_ (newPush ListComplete usr (ConvEvent e) (recipient <$> Data.convMembers c)) $ \p -> push1 $ p & pushRoute .~ RouteDirect & pushConn .~ conn conversationCreated usr c - update n conv = + update n conv = do + localDomain <- viewFederationDomain let mems = Data.convMembers conv in conversationExisted usr =<< if @@ -253,7 +269,7 @@ createConnectConversation usr conn j = do connect n conv | otherwise -> do now <- liftIO getCurrentTime - mm <- snd <$> Data.addMember now (Data.convId conv) usr + mm <- snd <$> Data.addMember localDomain now (Data.convId conv) usr let conv' = conv { Data.convMembers = Data.convMembers conv <> toList mm @@ -270,14 +286,17 @@ createConnectConversation usr conn j = do else return conv'' connect n conv | Data.convType conv == ConnectConv = do + localDomain <- viewFederationDomain + let qconv = Qualified (Data.convId conv) localDomain + qusr = Qualified usr localDomain n' <- case n of Just x -> do Data.updateConversation (Data.convId conv) x return . Just $ fromRange x Nothing -> return $ Data.convName conv t <- liftIO getCurrentTime - let e = Event ConvConnect (Data.convId conv) usr t (EdConnect j) - for_ (newPush ListComplete (evtFrom e) (ConvEvent e) (recipient <$> Data.convMembers conv)) $ \p -> + let e = Event ConvConnect qconv qusr t (EdConnect j) + for_ (newPush ListComplete usr (ConvEvent e) (recipient <$> Data.convMembers conv)) $ \p -> push1 $ p & pushRoute .~ RouteDirect @@ -305,17 +324,20 @@ handleConversationResponse = \case notifyCreatedConversation :: Maybe UTCTime -> UserId -> Maybe ConnId -> Data.Conversation -> Galley () notifyCreatedConversation dtime usr conn c = do + localDomain <- viewFederationDomain now <- maybe (liftIO getCurrentTime) pure dtime - pushSome =<< mapM (toPush now) (Data.convMembers c) + pushSome =<< mapM (toPush localDomain now) (Data.convMembers c) where route | Data.convType c == RegularConv = RouteAny | otherwise = RouteDirect - toPush t m = do + toPush dom t m = do + let qconv = Qualified (Data.convId c) dom + qusr = Qualified usr dom c' <- conversationView (memId m) c - let e = Event ConvCreate (Data.convId c) usr t (EdConversation c') + let e = Event ConvCreate qconv qusr t (EdConversation c') return $ - newPush1 ListComplete (evtFrom e) (ConvEvent e) (list1 (recipient m) []) + newPush1 ListComplete usr (ConvEvent e) (list1 (recipient m) []) & pushConn .~ conn & pushRoute .~ route diff --git a/services/galley/src/Galley/API/Federation.hs b/services/galley/src/Galley/API/Federation.hs index 2a69ee67ac9..9300236d7dd 100644 --- a/services/galley/src/Galley/API/Federation.hs +++ b/services/galley/src/Galley/API/Federation.hs @@ -16,7 +16,6 @@ -- with this program. If not, see . module Galley.API.Federation where -import Control.Arrow (first) import Data.Containers.ListUtils (nubOrd) import Data.Qualified (Qualified (..)) import qualified Galley.API.Mapping as Mapping @@ -56,12 +55,12 @@ updateConversationMemberships cmu = do when (not (null localUsers)) $ do Data.addLocalMembersToRemoteConv localUserIds (cmuConvId cmu) -- FUTUREWORK: the resulting event should have qualified users and conversations - let mems = SimpleMembers (map (uncurry SimpleMember . first qUnqualified) (cmuUsersAdd cmu)) + let mems = SimpleMembers (map (uncurry SimpleMember) (cmuUsersAdd cmu)) let event = Event MemberJoin - (qUnqualified (cmuConvId cmu)) - (qUnqualified (cmuOrigUserId cmu)) + (cmuConvId cmu) + (cmuOrigUserId cmu) (cmuTime cmu) (EdMembersJoin mems) diff --git a/services/galley/src/Galley/API/Internal.hs b/services/galley/src/Galley/API/Internal.hs index ff78699dcd4..8754ffa9b10 100644 --- a/services/galley/src/Galley/API/Internal.hs +++ b/services/galley/src/Galley/API/Internal.hs @@ -45,7 +45,7 @@ import qualified Galley.API.Teams as Teams import Galley.API.Teams.Features (DoAuth (..)) import qualified Galley.API.Teams.Features as Features import qualified Galley.API.Update as Update -import Galley.API.Util (JSON, isMember) +import Galley.API.Util (JSON, isMember, viewFederationDomain) import Galley.App import qualified Galley.Data as Data import qualified Galley.Intra.Push as Intra @@ -303,6 +303,7 @@ rmUser user conn = do leaveTeams =<< Cql.liftClient (Cql.nextPage tids) leaveConversations :: List1 UserId -> Cql.Page ConvId -> Galley () leaveConversations u ids = do + localDomain <- viewFederationDomain cc <- Data.conversations (Cql.result ids) pp <- for cc $ \c -> case Data.convType c of SelfConv -> return Nothing @@ -311,9 +312,9 @@ rmUser user conn = do RegularConv | user `isMember` Data.convMembers c -> do -- FUTUREWORK: deal with remote members, too, see removeMembers - e <- Data.removeLocalMembers c user u + e <- Data.removeLocalMembers localDomain c user u return $ - (Intra.newPush ListComplete (evtFrom e) (Intra.ConvEvent e) (Intra.recipient <$> Data.convMembers c)) + (Intra.newPush ListComplete user (Intra.ConvEvent e) (Intra.recipient <$> Data.convMembers c)) <&> set Intra.pushConn conn . set Intra.pushRoute Intra.RouteDirect | otherwise -> return Nothing diff --git a/services/galley/src/Galley/API/Teams.hs b/services/galley/src/Galley/API/Teams.hs index 8f0223ba88c..f06c25a607a 100644 --- a/services/galley/src/Galley/API/Teams.hs +++ b/services/galley/src/Galley/API/Teams.hs @@ -72,6 +72,7 @@ import qualified Data.List.Extra as List import Data.List1 (list1) import qualified Data.Map.Strict as M import Data.Misc (HttpsUrl) +import Data.Qualified import Data.Range as Range import Data.Set (fromList) import qualified Data.Set as Set @@ -349,12 +350,15 @@ uncheckedDeleteTeam zusr zcon tid = do ([Push], [(BotMember, Conv.Event)]) -> Galley ([Push], [(BotMember, Conv.Event)]) createConvDeleteEvents now teamMembs c (pp, ee) = do + localDomain <- viewFederationDomain + let qconvId = Qualified (c ^. conversationId) localDomain + qorig = Qualified zusr localDomain (bots, convMembs) <- botsAndUsers <$> Data.members (c ^. conversationId) -- Only nonTeamMembers need to get any events, since on team deletion, -- all team users are deleted immediately after these events are sent -- and will thus never be able to see these events in practice. let mm = nonTeamMembers convMembs teamMembs - let e = Conv.Event Conv.ConvDelete (c ^. conversationId) zusr now Conv.EdConvDelete + let e = Conv.Event Conv.ConvDelete qconvId qorig now Conv.EdConvDelete -- This event always contains all the required recipients let p = newPush ListComplete zusr (ConvEvent e) (map recipient mm) let ee' = bots `zip` repeat e @@ -746,9 +750,12 @@ uncheckedDeleteTeamMember zusr zcon tid remove mems = do pushEvent tmids edata now dc pushEvent :: Set UserId -> Conv.EventData -> UTCTime -> Data.Conversation -> Galley () pushEvent exceptTo edata now dc = do + localDomain <- viewFederationDomain + let qconvId = Qualified (Data.convId dc) localDomain + qusr = Qualified zusr localDomain let (bots, users) = botsAndUsers (Data.convMembers dc) let x = filter (\m -> not (Conv.memId m `Set.member` exceptTo)) users - let y = Conv.Event Conv.MemberLeave (Data.convId dc) zusr now edata + let y = Conv.Event Conv.MemberLeave qconvId qusr now edata for_ (newPush (mems ^. teamMemberListType) zusr (ConvEvent y) (recipient <$> x)) $ \p -> push1 $ p & pushConn .~ zcon void . forkIO $ void $ External.deliver (bots `zip` repeat y) @@ -769,11 +776,14 @@ getTeamConversation zusr tid cid = do deleteTeamConversation :: UserId -> ConnId -> TeamId -> ConvId -> Galley (EmptyResult 200) deleteTeamConversation zusr zcon tid cid = do + localDomain <- viewFederationDomain + let qconvId = Qualified cid localDomain + qusr = Qualified zusr localDomain (bots, cmems) <- botsAndUsers <$> Data.members cid ensureActionAllowed Roles.DeleteConversation =<< getSelfMember zusr cmems flip Data.deleteCode Data.ReusableCode =<< Data.mkKey cid now <- liftIO getCurrentTime - let ce = Conv.Event Conv.ConvDelete cid zusr now Conv.EdConvDelete + let ce = Conv.Event Conv.ConvDelete qconvId qusr now Conv.EdConvDelete let recps = fmap recipient cmems let convPush = newPush ListComplete zusr (ConvEvent ce) recps <&> pushConn .~ Just zcon pushSome $ maybeToList convPush @@ -902,8 +912,9 @@ addTeamMemberInternal tid origin originConn (view ntmNewTeamMember -> new) memLi Data.addTeamMember tid new cc <- filter (view managedConversation) <$> Data.teamConversations tid now <- liftIO getCurrentTime + localDomain <- viewFederationDomain for_ cc $ \c -> - Data.addMember now (c ^. conversationId) (new ^. userId) + Data.addMember localDomain now (c ^. conversationId) (new ^. userId) let e = newEvent MemberJoin tid now & eventData ?~ EdMemberJoin (new ^. userId) push1 $ newPush1 (memList ^. teamMemberListType) (new ^. userId) (TeamEvent e) (recipients origin new) & pushConn .~ originConn APITeamQueue.pushTeamEvent tid e diff --git a/services/galley/src/Galley/API/Update.hs b/services/galley/src/Galley/API/Update.hs index 60ce1da31f4..bfa40025cc8 100644 --- a/services/galley/src/Galley/API/Update.hs +++ b/services/galley/src/Galley/API/Update.hs @@ -235,7 +235,10 @@ uncheckedUpdateConversationAccess :: [BotMember] -> Galley Event uncheckedUpdateConversationAccess body usr zcon conv (currentAccess, targetAccess) (currentRole, targetRole) users bots = do + localDomain <- viewFederationDomain let cnv = convId conv + qcnv = Qualified cnv localDomain + qusr = Qualified usr localDomain -- Remove conversation codes if CodeAccess is revoked when (CodeAccess `elem` currentAccess && CodeAccess `notElem` targetAccess) $ do key <- mkKey cnv @@ -263,7 +266,7 @@ uncheckedUpdateConversationAccess body usr zcon conv (currentAccess, targetAcces _ -> return () -- Update Cassandra & send an event now <- liftIO getCurrentTime - let accessEvent = Event ConvAccessUpdate cnv usr now (EdConvAccessUpdate body) + let accessEvent = Event ConvAccessUpdate qcnv qusr now (EdConvAccessUpdate body) Data.updateConversationAccess cnv targetAccess targetRole pushEvent accessEvent users bots zcon -- Remove users and bots @@ -274,10 +277,10 @@ uncheckedUpdateConversationAccess body usr zcon conv (currentAccess, targetAcces [] -> return () x : xs -> do -- FUTUREWORK: deal with remote members, too, see removeMembers - e <- Data.removeLocalMembers conv usr (list1 x xs) + e <- Data.removeLocalMembers localDomain conv usr (list1 x xs) -- push event to all clients, including zconn -- since updateConversationAccess generates a second (member removal) event here - for_ (newPush ListComplete (evtFrom e) (ConvEvent e) (recipient <$> users)) $ \p -> push1 p + for_ (newPush ListComplete usr (ConvEvent e) (recipient <$> users)) $ \p -> push1 p void . forkIO $ void $ External.deliver (newBots `zip` repeat e) -- Return the event pure accessEvent @@ -294,18 +297,21 @@ updateConversationReceiptModeH (usr ::: zcon ::: cnv ::: req ::: _) = do updateConversationReceiptMode :: UserId -> ConnId -> ConvId -> Public.ConversationReceiptModeUpdate -> Galley UpdateResult updateConversationReceiptMode usr zcon cnv receiptModeUpdate@(Public.ConversationReceiptModeUpdate target) = do + localDomain <- viewFederationDomain + let qcnv = Qualified cnv localDomain + qusr = Qualified usr localDomain (bots, users) <- botsAndUsers <$> Data.members cnv ensureActionAllowed ModifyConversationReceiptMode =<< getSelfMember usr users current <- Data.lookupReceiptMode cnv if current == Just target then pure Unchanged - else Updated <$> update users bots + else Updated <$> update qcnv qusr users bots where - update users bots = do + update qcnv qusr users bots = do -- Update Cassandra & send an event Data.updateConversationReceiptMode cnv target now <- liftIO getCurrentTime - let receiptEvent = Event ConvReceiptModeUpdate cnv usr now (EdConvReceiptModeUpdate receiptModeUpdate) + let receiptEvent = Event ConvReceiptModeUpdate qcnv qusr now (EdConvReceiptModeUpdate receiptModeUpdate) pushEvent receiptEvent users bots zcon pure receiptEvent @@ -316,6 +322,9 @@ updateConversationMessageTimerH (usr ::: zcon ::: cnv ::: req) = do updateConversationMessageTimer :: UserId -> ConnId -> ConvId -> Public.ConversationMessageTimerUpdate -> Galley UpdateResult updateConversationMessageTimer usr zcon cnv timerUpdate@(Public.ConversationMessageTimerUpdate target) = do + localDomain <- viewFederationDomain + let qcnv = Qualified cnv localDomain + qusr = Qualified usr localDomain -- checks and balances (bots, users) <- botsAndUsers <$> Data.members cnv ensureActionAllowed ModifyConversationMessageTimer =<< getSelfMember usr users @@ -324,19 +333,19 @@ updateConversationMessageTimer usr zcon cnv timerUpdate@(Public.ConversationMess let currentTimer = Data.convMessageTimer conv if currentTimer == target then pure Unchanged - else Updated <$> update users bots + else Updated <$> update qcnv qusr users bots where - update users bots = do + update qcnv qusr users bots = do -- update cassandra & send event now <- liftIO getCurrentTime - let timerEvent = Event ConvMessageTimerUpdate cnv usr now (EdConvMessageTimerUpdate timerUpdate) + let timerEvent = Event ConvMessageTimerUpdate qcnv qusr now (EdConvMessageTimerUpdate timerUpdate) Data.updateConversationMessageTimer cnv target pushEvent timerEvent users bots zcon pure timerEvent pushEvent :: Event -> [LocalMember] -> [BotMember] -> ConnId -> Galley () pushEvent e users bots zcon = do - for_ (newPush ListComplete (evtFrom e) (ConvEvent e) (recipient <$> users)) $ \p -> + for_ (newPush ListComplete (qUnqualified (evtFrom e)) (ConvEvent e) (recipient <$> users)) $ \p -> push1 $ p & pushConn ?~ zcon void . forkIO $ void $ External.deliver (bots `zip` repeat e) @@ -352,6 +361,9 @@ data AddCodeResult addCode :: UserId -> ConnId -> ConvId -> Galley AddCodeResult addCode usr zcon cnv = do + localDomain <- viewFederationDomain + let qcnv = Qualified cnv localDomain + qusr = Qualified usr localDomain conv <- Data.conversation cnv >>= ifNothing convNotFound ensureConvMember (Data.convMembers conv) usr ensureAccess conv CodeAccess @@ -364,7 +376,7 @@ addCode usr zcon cnv = do Data.insertCode code now <- liftIO getCurrentTime conversationCode <- createCode code - let event = Event ConvCodeUpdate cnv usr now (EdConvCodeUpdate conversationCode) + let event = Event ConvCodeUpdate qcnv qusr now (EdConvCodeUpdate conversationCode) pushEvent event users bots zcon pure $ CodeAdded event Just code -> do @@ -382,6 +394,9 @@ rmCodeH (usr ::: zcon ::: cnv) = do rmCode :: UserId -> ConnId -> ConvId -> Galley Public.Event rmCode usr zcon cnv = do + localDomain <- viewFederationDomain + let qcnv = Qualified cnv localDomain + qusr = Qualified usr localDomain conv <- Data.conversation cnv >>= ifNothing convNotFound ensureConvMember (Data.convMembers conv) usr ensureAccess conv CodeAccess @@ -389,7 +404,7 @@ rmCode usr zcon cnv = do key <- mkKey cnv Data.deleteCode key ReusableCode now <- liftIO getCurrentTime - let event = Event ConvCodeDelete cnv usr now EdConvCodeDelete + let event = Event ConvCodeDelete qcnv qusr now EdConvCodeDelete pushEvent event users bots zcon pure event @@ -558,6 +573,7 @@ removeMemberH (zusr ::: zcon ::: cid ::: victim) = do removeMember :: UserId -> ConnId -> ConvId -> UserId -> Galley UpdateResult removeMember zusr zcon convId victim = do + localDomain <- viewFederationDomain -- FUTUREWORK(federation, #1274): forward request to conversation's backend. conv <- Data.conversation convId >>= ifNothing convNotFound let (bots, users) = botsAndUsers (Data.convMembers conv) @@ -568,9 +584,9 @@ removeMember zusr zcon convId victim = do if victim `isMember` users then do -- FUTUREWORK: deal with remote members, too, see removeMembers - event <- Data.removeLocalMembers conv zusr (singleton victim) + event <- Data.removeLocalMembers localDomain conv zusr (singleton victim) -- FUTUREWORK(federation, #1274): users can be on other backend, how to notify it? - for_ (newPush ListComplete (evtFrom event) (ConvEvent event) (recipient <$> users)) $ \p -> + for_ (newPush ListComplete zusr (ConvEvent event) (recipient <$> users)) $ \p -> push1 $ p & pushConn ?~ zcon void . forkIO $ void $ External.deliver (bots `zip` repeat event) pure $ Updated event @@ -672,37 +688,42 @@ allowOtrFilterMissingInBody val (NewOtrMessage _ _ _ _ _ _ mrepmiss) = case mrep -- | bots are not supported on broadcast postNewOtrBroadcast :: UserId -> Maybe ConnId -> OtrFilterMissing -> NewOtrMessage -> Galley OtrResult postNewOtrBroadcast usr con val msg = do - let sender = newOtrSender msg - let recvrs = newOtrRecipients msg + localDomain <- viewFederationDomain + let qusr = Qualified usr localDomain + sender = newOtrSender msg + recvrs = newOtrRecipients msg now <- liftIO getCurrentTime withValidOtrBroadcastRecipients usr sender recvrs val now $ \rs -> do - let (_, toUsers) = foldr (newMessage usr con Nothing msg now) ([], []) rs + let (_, toUsers) = foldr (newMessage qusr con Nothing msg now) ([], []) rs pushSome (catMaybes toUsers) postNewOtrMessage :: LegalholdProtectee' -> Maybe ConnId -> ConvId -> OtrFilterMissing -> NewOtrMessage -> Galley OtrResult postNewOtrMessage protectee con cnv val msg = do + localDomain <- viewFederationDomain let usr = legalholdProtectee'2UserId protectee - let sender = newOtrSender msg - let recvrs = newOtrRecipients msg + qusr = Qualified usr localDomain + qcnv = Qualified cnv localDomain + sender = newOtrSender msg + recvrs = newOtrRecipients msg now <- liftIO getCurrentTime withValidOtrRecipients protectee sender cnv recvrs val now $ \rs -> do - let (toBots, toUsers) = foldr (newMessage usr con (Just cnv) msg now) ([], []) rs + let (toBots, toUsers) = foldr (newMessage qusr con (Just qcnv) msg now) ([], []) rs pushSome (catMaybes toUsers) void . forkIO $ do gone <- External.deliver toBots mapM_ (deleteBot cnv . botMemId) gone newMessage :: - UserId -> + Qualified UserId -> Maybe ConnId -> -- | Conversation Id (if Nothing, recipient's self conversation is used) - Maybe ConvId -> + Maybe (Qualified ConvId) -> NewOtrMessage -> UTCTime -> (LocalMember, ClientId, Text) -> ([(BotMember, Event)], [Maybe Push]) -> ([(BotMember, Event)], [Maybe Push]) -newMessage usr con cnv msg now (m, c, t) ~(toBots, toUsers) = +newMessage qusr con qcnv msg now (m, c, t) ~(toBots, toUsers) = let o = OtrMessage { otrSender = newOtrSender msg, @@ -712,14 +733,15 @@ newMessage usr con cnv msg now (m, c, t) ~(toBots, toUsers) = } -- use recipient's client's self conversation on broadcast -- (with federation, this might not work for remote members) - conv = fromMaybe (selfConv $ memId m) cnv - e = Event OtrMessageAdd conv usr now (EdOtrMessage o) + -- FUTUREWORK: for remote recipients, set the domain correctly here + qconv = fromMaybe ((`Qualified` (qDomain qusr)) . selfConv $ memId m) qcnv + e = Event OtrMessageAdd qconv qusr now (EdOtrMessage o) r = recipient m & recipientClients .~ RecipientClientsSome (singleton c) in case newBotMember m of Just b -> ((b, e) : toBots, toUsers) Nothing -> let p = - newPush ListComplete (evtFrom e) (ConvEvent e) [r] + newPush ListComplete (qUnqualified (evtFrom e)) (ConvEvent e) [r] <&> set pushConn con . set pushNativePriority (newOtrNativePriority msg) . set pushRoute (bool RouteDirect RouteAny (newOtrNativePush msg)) @@ -738,6 +760,9 @@ updateConversationNameH (zusr ::: zcon ::: cnv ::: req) = do updateConversationName :: UserId -> ConnId -> ConvId -> Public.ConversationRename -> Galley Public.Event updateConversationName zusr zcon cnv convRename = do + localDomain <- viewFederationDomain + let qcnv = Qualified cnv localDomain + qusr = Qualified zusr localDomain alive <- Data.isConvAlive cnv unless alive $ do Data.deleteConversation cnv @@ -747,8 +772,8 @@ updateConversationName zusr zcon cnv convRename = do now <- liftIO getCurrentTime cn <- rangeChecked (cupName convRename) Data.updateConversation cnv cn - let e = Event ConvRename cnv zusr now (EdConvRename convRename) - for_ (newPush ListComplete (evtFrom e) (ConvEvent e) (recipient <$> users)) $ \p -> + let e = Event ConvRename qcnv qusr now (EdConvRename convRename) + for_ (newPush ListComplete zusr (ConvEvent e) (recipient <$> users)) $ \p -> push1 $ p & pushConn ?~ zcon void . forkIO $ void $ External.deliver (bots `zip` repeat e) return e @@ -761,12 +786,15 @@ isTypingH (zusr ::: zcon ::: cnv ::: req) = do isTyping :: UserId -> ConnId -> ConvId -> Public.TypingData -> Galley () isTyping zusr zcon cnv typingData = do + localDomain <- viewFederationDomain + let qcnv = Qualified cnv localDomain + qusr = Qualified zusr localDomain mm <- Data.members cnv unless (zusr `isMember` mm) $ throwM convNotFound now <- liftIO getCurrentTime - let e = Event Typing cnv zusr now (EdTyping typingData) - for_ (newPush ListComplete (evtFrom e) (ConvEvent e) (recipient <$> mm)) $ \p -> + let e = Event Typing qcnv qusr now (EdTyping typingData) + for_ (newPush ListComplete zusr (ConvEvent e) (recipient <$> mm)) $ \p -> push1 $ p & pushConn ?~ zcon @@ -790,14 +818,16 @@ addBotH (zusr ::: zcon ::: req) = do addBot :: UserId -> ConnId -> AddBot -> Galley Event addBot zusr zcon b = do + localDomain <- viewFederationDomain + let qusr = Qualified zusr localDomain c <- Data.conversation (b ^. addBotConv) >>= ifNothing convNotFound -- Check some preconditions on adding bots to a conversation for_ (Data.convTeam c) $ teamConvChecks (b ^. addBotConv) (bots, users) <- regularConvChecks c t <- liftIO getCurrentTime Data.updateClient True (botUserId (b ^. addBotId)) (b ^. addBotClient) - (e, bm) <- Data.addBotMember zusr (b ^. addBotService) (b ^. addBotId) (b ^. addBotConv) t - for_ (newPush ListComplete (evtFrom e) (ConvEvent e) (recipient <$> users)) $ \p -> + (e, bm) <- Data.addBotMember qusr (b ^. addBotService) (b ^. addBotId) (b ^. addBotConv) t + for_ (newPush ListComplete zusr (ConvEvent e) (recipient <$> users)) $ \p -> push1 $ p & pushConn ?~ zcon void . forkIO $ void $ External.deliver ((bm : bots) `zip` repeat e) pure e @@ -824,6 +854,9 @@ rmBotH (zusr ::: zcon ::: req) = do rmBot :: UserId -> Maybe ConnId -> RemoveBot -> Galley UpdateResult rmBot zusr zcon b = do c <- Data.conversation (b ^. rmBotConv) >>= ifNothing convNotFound + localDomain <- viewFederationDomain + let qcnv = Qualified (Data.convId c) localDomain + qusr = Qualified zusr localDomain unless (zusr `isMember` Data.convMembers c) $ throwM convNotFound let (bots, users) = botsAndUsers (Data.convMembers c) @@ -832,8 +865,8 @@ rmBot zusr zcon b = do else do t <- liftIO getCurrentTime let evd = EdMembersLeave (UserIdList [botUserId (b ^. rmBotId)]) - let e = Event MemberLeave (Data.convId c) zusr t evd - for_ (newPush ListComplete (evtFrom e) (ConvEvent e) (recipient <$> users)) $ \p -> + let e = Event MemberLeave qcnv qusr t evd + for_ (newPush ListComplete zusr (ConvEvent e) (recipient <$> users)) $ \p -> push1 $ p & pushConn .~ zcon Data.removeMember (botUserId (b ^. rmBotId)) (Data.convId c) Data.eraseClients (botUserId (b ^. rmBotId)) @@ -846,13 +879,14 @@ rmBot zusr zcon b = do addToConversation :: ([BotMember], [LocalMember]) -> (UserId, RoleName) -> ConnId -> [(UserId, RoleName)] -> [(Remote UserId, RoleName)] -> Data.Conversation -> Galley UpdateResult addToConversation _ _ _ [] [] _ = pure Unchanged addToConversation (bots, others) (usr, usrRole) conn locals remotes c = do + localDomain <- viewFederationDomain ensureGroupConv c mems <- checkedMemberAddSize locals remotes now <- liftIO getCurrentTime - (e, mm, _remotes) <- Data.addMembersWithRole now (Data.convId c) (usr, usrRole) mems + (e, mm, _remotes) <- Data.addMembersWithRole localDomain now (Data.convId c) (usr, usrRole) mems -- FUTUREWORK: send events to '_remotes' users here, too let allMembers = nubOrdOn memId (toList mm <> others) - for_ (newPush ListComplete (evtFrom e) (ConvEvent e) (recipient <$> allMembers)) $ \p -> + for_ (newPush ListComplete usr (ConvEvent e) (recipient <$> allMembers)) $ \p -> push1 $ p & pushConn ?~ conn void . forkIO $ void $ External.deliver (bots `zip` repeat e) pure $ Updated e @@ -896,11 +930,14 @@ processUpdateMemberEvent :: MemberUpdate -> Galley Event processUpdateMemberEvent zusr zcon cid users target update = do + localDomain <- viewFederationDomain + let qcnv = Qualified cid localDomain + qusr = Qualified zusr localDomain up <- Data.updateMember cid (memId target) update now <- liftIO getCurrentTime - let e = Event MemberStateUpdate cid zusr now (EdMemberUpdate up) + let e = Event MemberStateUpdate qcnv qusr now (EdMemberUpdate up) let recipients = fmap recipient (target : filter ((/= memId target) . memId) users) - for_ (newPush ListComplete (evtFrom e) (ConvEvent e) recipients) $ \p -> + for_ (newPush ListComplete zusr (ConvEvent e) recipients) $ \p -> push1 $ p & pushConn ?~ zcon diff --git a/services/galley/src/Galley/API/Util.hs b/services/galley/src/Galley/API/Util.hs index bb32dde8bff..e9b98a0ade5 100644 --- a/services/galley/src/Galley/API/Util.hs +++ b/services/galley/src/Galley/API/Util.hs @@ -174,28 +174,30 @@ permissionCheckTeamConv zusr cnv perm = -- | Try to accept a 1-1 conversation, promoting connect conversations as appropriate. acceptOne2One :: UserId -> Data.Conversation -> Maybe ConnId -> Galley Data.Conversation -acceptOne2One usr conv conn = case Data.convType conv of - One2OneConv -> - if usr `isMember` mems - then return conv - else do +acceptOne2One usr conv conn = do + localDomain <- viewFederationDomain + case Data.convType conv of + One2OneConv -> + if usr `isMember` mems + then return conv + else do + now <- liftIO getCurrentTime + mm <- snd <$> Data.addMember localDomain now cid usr + return $ conv {Data.convMembers = mems <> toList mm} + ConnectConv -> case mems of + [_, _] | usr `isMember` mems -> promote + [_, _] -> throwM convNotFound + _ -> do + when (length mems > 2) $ + throwM badConvState now <- liftIO getCurrentTime - mm <- snd <$> Data.addMember now cid usr - return $ conv {Data.convMembers = mems <> toList mm} - ConnectConv -> case mems of - [_, _] | usr `isMember` mems -> promote - [_, _] -> throwM convNotFound - _ -> do - when (length mems > 2) $ - throwM badConvState - now <- liftIO getCurrentTime - (e, mm) <- Data.addMember now cid usr - conv' <- if isJust (find ((usr /=) . memId) mems) then promote else pure conv - let mems' = mems <> toList mm - for_ (newPush ListComplete (evtFrom e) (ConvEvent e) (recipient <$> mems')) $ \p -> - push1 $ p & pushConn .~ conn & pushRoute .~ RouteDirect - return $ conv' {Data.convMembers = mems'} - _ -> throwM $ invalidOp "accept: invalid conversation type" + (e, mm) <- Data.addMember localDomain now cid usr + conv' <- if isJust (find ((usr /=) . memId) mems) then promote else pure conv + let mems' = mems <> toList mm + for_ (newPush ListComplete (qUnqualified (evtFrom e)) (ConvEvent e) (recipient <$> mems')) $ \p -> + push1 $ p & pushConn .~ conn & pushRoute .~ RouteDirect + return $ conv' {Data.convMembers = mems'} + _ -> throwM $ invalidOp "accept: invalid conversation type" where cid = Data.convId conv mems = Data.convMembers conv @@ -297,7 +299,7 @@ canDeleteMember deleter deletee pushConversationEvent :: Event -> [UserId] -> [BotMember] -> Galley () pushConversationEvent e users bots = do - for_ (newPush ListComplete (evtFrom e) (ConvEvent e) (map userRecipient users)) $ \p -> + for_ (newPush ListComplete (qUnqualified (evtFrom e)) (ConvEvent e) (map userRecipient users)) $ \p -> push1 $ p & pushConn .~ Nothing void . forkIO $ void $ External.deliver (bots `zip` repeat e) diff --git a/services/galley/src/Galley/Data.hs b/services/galley/src/Galley/Data.hs index b0d88886fe5..7e6182ae03e 100644 --- a/services/galley/src/Galley/Data.hs +++ b/services/galley/src/Galley/Data.hs @@ -110,7 +110,7 @@ where import Brig.Types.Code import Cassandra hiding (Tagged) import Cassandra.Util -import Control.Arrow (second) +import Control.Arrow (first, second) import Control.Exception (ErrorCall (ErrorCall)) import Control.Lens hiding ((<|)) import Control.Monad.Catch (MonadThrow, throwM) @@ -570,6 +570,7 @@ conversationIdsOf usr cids = runIdentity <$$> retry x1 (query Cql.selectUserConv createConversation :: MonadClient m => + Domain -> UserId -> Maybe (Range 1 256 Text) -> [Access] -> @@ -581,7 +582,7 @@ createConversation :: Maybe ReceiptMode -> RoleName -> m Conversation -createConversation usr name acc role others tinfo mtimer recpt othersConversationRole = do +createConversation localDomain usr name acc role others tinfo mtimer recpt othersConversationRole = do conv <- Id <$> liftIO nextRandom now <- liftIO getCurrentTime retry x5 $ case tinfo of @@ -593,46 +594,50 @@ createConversation usr name acc role others tinfo mtimer recpt othersConversatio addPrepQuery Cql.insertConv (conv, RegularConv, usr, Set (toList acc), role, fromRange <$> name, Just (cnvTeamId ti), mtimer, recpt) addPrepQuery Cql.insertTeamConv (cnvTeamId ti, conv, cnvManaged ti) let (remoteUsers, localUsers) = fromConvSize others - (_, mems, rMems) <- addMembersUncheckedWithRole now conv (usr, roleNameWireAdmin) (toList $ list1 (usr, roleNameWireAdmin) ((,othersConversationRole) <$> localUsers)) ((,othersConversationRole) <$> remoteUsers) + (_, mems, rMems) <- addMembersUncheckedWithRole localDomain now conv (usr, roleNameWireAdmin) (toList $ list1 (usr, roleNameWireAdmin) ((,othersConversationRole) <$> localUsers)) ((,othersConversationRole) <$> remoteUsers) return $ newConv conv RegularConv usr mems rMems acc role name (cnvTeamId <$> tinfo) mtimer recpt -createSelfConversation :: MonadClient m => UserId -> Maybe (Range 1 256 Text) -> m Conversation -createSelfConversation usr name = do +createSelfConversation :: MonadClient m => Domain -> UserId -> Maybe (Range 1 256 Text) -> m Conversation +createSelfConversation localDomain usr name = do let conv = selfConv usr now <- liftIO getCurrentTime retry x5 $ write Cql.insertConv (params Quorum (conv, SelfConv, usr, privateOnly, privateRole, fromRange <$> name, Nothing, Nothing, Nothing)) - mems <- snd <$> addLocalMembersUnchecked now conv usr (singleton usr) + mems <- snd <$> addLocalMembersUnchecked localDomain now conv usr (singleton usr) return $ newConv conv SelfConv usr (toList mems) [] [PrivateAccess] privateRole name Nothing Nothing Nothing createConnectConversation :: MonadClient m => + Domain -> U.UUID U.V4 -> U.UUID U.V4 -> Maybe (Range 1 256 Text) -> Connect -> m (Conversation, Event) -createConnectConversation a b name conn = do +createConnectConversation localDomain a b name conn = do let conv = one2OneConvId a b + qconv = Qualified conv localDomain a' = Id . U.unpack $ a + qa' = Qualified a' localDomain now <- liftIO getCurrentTime retry x5 $ write Cql.insertConv (params Quorum (conv, ConnectConv, a', privateOnly, privateRole, fromRange <$> name, Nothing, Nothing, Nothing)) -- We add only one member, second one gets added later, -- when the other user accepts the connection request. - mems <- snd <$> addLocalMembersUnchecked now conv a' (singleton a') - let e = Event ConvConnect conv a' now (EdConnect conn) + mems <- snd <$> addLocalMembersUnchecked localDomain now conv a' (singleton a') + let e = Event ConvConnect qconv qa' now (EdConnect conn) let remoteMembers = [] -- FUTUREWORK: federated connections return (newConv conv ConnectConv a' (toList mems) remoteMembers [PrivateAccess] privateRole name Nothing Nothing Nothing, e) createOne2OneConversation :: MonadClient m => + Domain -> U.UUID U.V4 -> U.UUID U.V4 -> Maybe (Range 1 256 Text) -> Maybe TeamId -> m Conversation -createOne2OneConversation a b name ti = do +createOne2OneConversation localDomain a b name ti = do let conv = one2OneConvId a b a' = Id (U.unpack a) b' = Id (U.unpack b) @@ -644,7 +649,7 @@ createOne2OneConversation a b name ti = do setConsistency Quorum addPrepQuery Cql.insertConv (conv, One2OneConv, a', privateOnly, privateRole, fromRange <$> name, Just tid, Nothing, Nothing) addPrepQuery Cql.insertTeamConv (tid, conv, False) - mems <- snd <$> addLocalMembersUnchecked now conv a' (list1 a' [b']) + mems <- snd <$> addLocalMembersUnchecked localDomain now conv a' (list1 a' [b']) let remoteMembers = [] -- FUTUREWORK: federated one2one return $ newConv conv One2OneConv a' (toList mems) remoteMembers [PrivateAccess] privateRole name ti Nothing Nothing @@ -790,28 +795,28 @@ lookupRemoteMembers :: (MonadClient m) => ConvId -> m [RemoteMember] lookupRemoteMembers conv = join <$> remoteMemberLists [conv] -- | Add a member to a local conversation, as an admin. -addMember :: MonadClient m => UTCTime -> ConvId -> UserId -> m (Event, [LocalMember]) -addMember t c u = addLocalMembersUnchecked t c u (singleton u) +addMember :: MonadClient m => Domain -> UTCTime -> ConvId -> UserId -> m (Event, [LocalMember]) +addMember localDomain t c u = addLocalMembersUnchecked localDomain t c u (singleton u) -- | Add members to a local conversation. -addMembersWithRole :: MonadClient m => UTCTime -> ConvId -> (UserId, RoleName) -> ConvMemberAddSizeChecked -> m (Event, [LocalMember], [RemoteMember]) -addMembersWithRole t c orig mems = addMembersUncheckedWithRole t c orig (sizeCheckedLocals mems) (sizeCheckedRemotes mems) +addMembersWithRole :: MonadClient m => Domain -> UTCTime -> ConvId -> (UserId, RoleName) -> ConvMemberAddSizeChecked -> m (Event, [LocalMember], [RemoteMember]) +addMembersWithRole localDomain t c orig mems = addMembersUncheckedWithRole localDomain t c orig (sizeCheckedLocals mems) (sizeCheckedRemotes mems) -- | Add members to a local conversation, all as admins. -- Please make sure the conversation doesn't exceed the maximum size! -addLocalMembersUnchecked :: MonadClient m => UTCTime -> ConvId -> UserId -> List1 UserId -> m (Event, [LocalMember]) -addLocalMembersUnchecked t conv orig usrs = addLocalMembersUncheckedWithRole t conv (orig, roleNameWireAdmin) ((,roleNameWireAdmin) <$> usrs) +addLocalMembersUnchecked :: MonadClient m => Domain -> UTCTime -> ConvId -> UserId -> List1 UserId -> m (Event, [LocalMember]) +addLocalMembersUnchecked localDomain t conv orig usrs = addLocalMembersUncheckedWithRole localDomain t conv (orig, roleNameWireAdmin) ((,roleNameWireAdmin) <$> usrs) -- | Add only local members to a local conversation. -- Please make sure the conversation doesn't exceed the maximum size! -addLocalMembersUncheckedWithRole :: MonadClient m => UTCTime -> ConvId -> (UserId, RoleName) -> List1 (UserId, RoleName) -> m (Event, [LocalMember]) -addLocalMembersUncheckedWithRole t conv orig lusers = (\(a, b, _) -> (a, b)) <$> addMembersUncheckedWithRole t conv orig (toList lusers) [] +addLocalMembersUncheckedWithRole :: MonadClient m => Domain -> UTCTime -> ConvId -> (UserId, RoleName) -> List1 (UserId, RoleName) -> m (Event, [LocalMember]) +addLocalMembersUncheckedWithRole localDomain t conv orig lusers = (\(a, b, _) -> (a, b)) <$> addMembersUncheckedWithRole localDomain t conv orig (toList lusers) [] -- | Add members to a local conversation. -- Conversation is local, so we can add any member to it (including remote ones). -- Please make sure the conversation doesn't exceed the maximum size! -addMembersUncheckedWithRole :: MonadClient m => UTCTime -> ConvId -> (UserId, RoleName) -> [(UserId, RoleName)] -> [(Remote UserId, RoleName)] -> m (Event, [LocalMember], [RemoteMember]) -addMembersUncheckedWithRole t conv (orig, _origRole) lusrs rusrs = do +addMembersUncheckedWithRole :: MonadClient m => Domain -> UTCTime -> ConvId -> (UserId, RoleName) -> [(UserId, RoleName)] -> [(Remote UserId, RoleName)] -> m (Event, [LocalMember], [RemoteMember]) +addMembersUncheckedWithRole localDomain t conv (orig, _origRole) lusrs rusrs = do -- batch statement with 500 users are known to be above the batch size limit -- and throw "Batch too large" errors. Therefor we chunk requests and insert -- sequentially. (parallelizing would not aid performance as the partition @@ -842,12 +847,12 @@ addMembersUncheckedWithRole t conv (orig, _origRole) lusrs rusrs = do let remoteUser = qUnqualified (unTagged u) let remoteDomain = qDomain (unTagged u) addPrepQuery Cql.insertRemoteMember (conv, remoteDomain, remoteUser, role) - -- FUTUREWORK: also include remote users in the event! - let e = Event MemberJoin conv orig t (EdMembersJoin . SimpleMembers . toSimpleMembers $ lusrs) + let qconv = Qualified conv localDomain + qorig = Qualified orig localDomain + lmems = map (uncurry SimpleMember . first (`Qualified` localDomain)) lusrs + rmems = map (uncurry SimpleMember . first unTagged) rusrs + e = Event MemberJoin qconv qorig t (EdMembersJoin (SimpleMembers (lmems <> rmems))) return (e, fmap (uncurry newMemberWithRole) lusrs, fmap (uncurry RemoteMember) rusrs) - where - toSimpleMembers :: [(UserId, RoleName)] -> [SimpleMember] - toSimpleMembers = fmap (uncurry SimpleMember) -- | Set local users as belonging to a remote conversation. This is invoked by -- a remote galley (using the RPC updateConversationMembership) when users from @@ -892,11 +897,11 @@ updateMember cid uid mup = do misConvRoleName = mupConvRoleName mup } -removeLocalMembers :: MonadClient m => Conversation -> UserId -> List1 UserId -> m Event -removeLocalMembers conv orig localVictims = removeMembers conv orig localVictims [] +removeLocalMembers :: MonadClient m => Domain -> Conversation -> UserId -> List1 UserId -> m Event +removeLocalMembers localDomain conv orig localVictims = removeMembers localDomain conv orig localVictims [] -removeMembers :: MonadClient m => Conversation -> UserId -> List1 UserId -> [Remote UserId] -> m Event -removeMembers conv orig localVictims remoteVictims = do +removeMembers :: MonadClient m => Domain -> Conversation -> UserId -> List1 UserId -> [Remote UserId] -> m Event +removeMembers localDomain conv orig localVictims remoteVictims = do t <- liftIO getCurrentTime retry x5 . batch $ do setType BatchLogged @@ -909,7 +914,9 @@ removeMembers conv orig localVictims remoteVictims = do addPrepQuery Cql.deleteUserConv (u, convId conv) -- FUTUREWORK: the user's conversation has to be deleted on their own backend for federation - return $ Event MemberLeave (convId conv) orig t (EdMembersLeave leavingMembers) + let qconvId = Qualified (convId conv) localDomain + qorig = Qualified orig localDomain + return $ Event MemberLeave qconvId qorig t (EdMembersLeave leavingMembers) where -- FUTUREWORK(federation, #1274): We need to tell clients about remote members leaving, too. leavingMembers = UserIdList . toList $ localVictims diff --git a/services/galley/src/Galley/Data/Services.hs b/services/galley/src/Galley/Data/Services.hs index 7a711d17bea..3ab4ab474fd 100644 --- a/services/galley/src/Galley/Data/Services.hs +++ b/services/galley/src/Galley/Data/Services.hs @@ -34,6 +34,7 @@ where import Cassandra import Control.Lens import Data.Id +import Data.Qualified import Data.Time.Clock import Galley.App import Galley.Data (newMember) @@ -60,21 +61,26 @@ botMemId = BotId . memId . fromBotMember botMemService :: BotMember -> ServiceRef botMemService = fromJust . memService . fromBotMember -addBotMember :: UserId -> ServiceRef -> BotId -> ConvId -> UTCTime -> Galley (Event, BotMember) -addBotMember orig s bot cnv now = do - let pid = s ^. serviceRefProvider - let sid = s ^. serviceRefId +addBotMember :: Qualified UserId -> ServiceRef -> BotId -> ConvId -> UTCTime -> Galley (Event, BotMember) +addBotMember qorig s bot cnv now = do retry x5 . batch $ do setType BatchLogged setConsistency Quorum addPrepQuery insertUserConv (botUserId bot, cnv) addPrepQuery insertBot (cnv, bot, sid, pid) - let e = Event MemberJoin cnv orig now (EdMembersJoin . SimpleMembers $ (fmap toSimpleMember [botUserId bot])) - let mem = (newMember (botUserId bot)) {memService = Just s} return (e, BotMember mem) where + pid = s ^. serviceRefProvider + sid = s ^. serviceRefId + -- FUTUREWORK: support adding bots to a remote conversation + qcnv = Qualified cnv localDomain + localDomain = qDomain qorig + -- FUTUREWORK: support remote bots + e = Event MemberJoin qcnv qorig now (EdMembersJoin . SimpleMembers $ (fmap toSimpleMember [botUserId bot])) + mem = (newMember (botUserId bot)) {memService = Just s} + toSimpleMember :: UserId -> SimpleMember - toSimpleMember u = SimpleMember u roleNameWireAdmin + toSimpleMember u = SimpleMember (Qualified u localDomain) roleNameWireAdmin -- Service -------------------------------------------------------------------- diff --git a/services/galley/test/integration/API.hs b/services/galley/test/integration/API.hs index 12bd89083aa..54532eb756b 100644 --- a/services/galley/test/integration/API.hs +++ b/services/galley/test/integration/API.hs @@ -177,7 +177,8 @@ metrics = do postConvOk :: TestM () postConvOk = do c <- view tsCannon - alice <- randomUser + qalice <- randomQualifiedUser + let alice = qUnqualified qalice bob <- randomUser jane <- randomUser connectUsers alice (list1 bob [jane]) @@ -192,15 +193,15 @@ postConvOk = do print rsp cid <- assertConv rsp RegularConv alice alice [bob, jane] (Just nameMaxSize) Nothing cvs <- mapM (convView cid) [alice, bob, jane] - liftIO $ mapM_ WS.assertSuccess =<< Async.mapConcurrently (checkWs alice) (zip cvs [wsA, wsB, wsJ]) + liftIO $ mapM_ WS.assertSuccess =<< Async.mapConcurrently (checkWs qalice) (zip cvs [wsA, wsB, wsJ]) where convView cnv usr = responseJsonUnsafeWithMsg "conversation" <$> getConv usr cnv - checkWs alice (cnv, ws) = WS.awaitMatch (5 # Second) ws $ \n -> do + checkWs qalice (cnv, ws) = WS.awaitMatch (5 # Second) ws $ \n -> do ntfTransient n @?= False let e = List1.head (WS.unpackPayload n) - evtConv e @?= cnvId cnv + evtConv e @?= Qualified (cnvId cnv) (qDomain qalice) evtType e @?= ConvCreate - evtFrom e @?= alice + evtFrom e @?= qalice case evtData e of EdConversation c' -> assertConvEquals cnv c' _ -> assertFailure "Unexpected event data" @@ -209,12 +210,15 @@ postConvOk = do -- cannon. postCryptoMessage1 :: TestM () postCryptoMessage1 = do + localDomain <- viewFederationDomain c <- view tsCannon (alice, ac) <- randomUserWithClient (someLastPrekeys !! 0) (bob, bc) <- randomUserWithClient (someLastPrekeys !! 1) (eve, ec) <- randomUserWithClient (someLastPrekeys !! 2) connectUsers alice (list1 bob [eve]) conv <- decodeConvId <$> postConv alice [bob, eve] (Just "gossip") [] Nothing Nothing + let qalice = Qualified alice localDomain + qconv = Qualified conv localDomain -- WS receive timeout let t = 5 # Second -- Missing eve @@ -228,18 +232,18 @@ postCryptoMessage1 = do postOtrMessage id alice ac conv m2 !!! do const 201 === statusCode assertTrue_ (eqMismatch [] [] [] . responseJsonUnsafe) - void . liftIO $ WS.assertMatch t wsB (wsAssertOtr conv alice ac bc "ciphertext2") - void . liftIO $ WS.assertMatch t wsE (wsAssertOtr conv alice ac ec "ciphertext2") + void . liftIO $ WS.assertMatch t wsB (wsAssertOtr qconv qalice ac bc "ciphertext2") + void . liftIO $ WS.assertMatch t wsE (wsAssertOtr qconv qalice ac ec "ciphertext2") -- Redundant self WS.bracketR3 c alice bob eve $ \(wsA, wsB, wsE) -> do let m3 = [(alice, ac, "ciphertext3"), (bob, bc, "ciphertext3"), (eve, ec, "ciphertext3")] postOtrMessage id alice ac conv m3 !!! do const 201 === statusCode assertTrue_ (eqMismatch [] [(alice, Set.singleton ac)] [] . responseJsonUnsafe) - void . liftIO $ WS.assertMatch t wsB (wsAssertOtr conv alice ac bc "ciphertext3") - void . liftIO $ WS.assertMatch t wsE (wsAssertOtr conv alice ac ec "ciphertext3") + void . liftIO $ WS.assertMatch t wsB (wsAssertOtr qconv qalice ac bc "ciphertext3") + void . liftIO $ WS.assertMatch t wsE (wsAssertOtr qconv qalice ac ec "ciphertext3") -- Alice should not get it - assertNoMsg wsA (wsAssertOtr conv alice ac ac "ciphertext3") + assertNoMsg wsA (wsAssertOtr qconv qalice ac ac "ciphertext3") -- Deleted eve WS.bracketR2 c bob eve $ \(wsB, wsE) -> do deleteClient eve ec (Just defPassword) !!! const 200 === statusCode @@ -247,19 +251,19 @@ postCryptoMessage1 = do postOtrMessage id alice ac conv m4 !!! do const 201 === statusCode assertTrue_ (eqMismatch [] [] [(eve, Set.singleton ec)] . responseJsonUnsafe) - void . liftIO $ WS.assertMatch t wsB (wsAssertOtr conv alice ac bc "ciphertext4") + void . liftIO $ WS.assertMatch t wsB (wsAssertOtr qconv qalice ac bc "ciphertext4") -- Eve should not get it - assertNoMsg wsE (wsAssertOtr conv alice ac ec "ciphertext4") + assertNoMsg wsE (wsAssertOtr qconv qalice ac ec "ciphertext4") -- Deleted eve & redundant self WS.bracketR3 c alice bob eve $ \(wsA, wsB, wsE) -> do let m5 = [(bob, bc, "ciphertext5"), (eve, ec, "ciphertext5"), (alice, ac, "ciphertext5")] postOtrMessage id alice ac conv m5 !!! do const 201 === statusCode assertTrue_ (eqMismatch [] [(alice, Set.singleton ac)] [(eve, Set.singleton ec)] . responseJsonUnsafe) - void . liftIO $ WS.assertMatch t wsB (wsAssertOtr conv alice ac bc "ciphertext5") + void . liftIO $ WS.assertMatch t wsB (wsAssertOtr qconv qalice ac bc "ciphertext5") -- Neither Alice nor Eve should get it - assertNoMsg wsA (wsAssertOtr conv alice ac ac "ciphertext5") - assertNoMsg wsE (wsAssertOtr conv alice ac ec "ciphertext5") + assertNoMsg wsA (wsAssertOtr qconv qalice ac ac "ciphertext5") + assertNoMsg wsE (wsAssertOtr qconv qalice ac ec "ciphertext5") -- Missing Bob, deleted eve & redundant self let m6 = [(eve, ec, "ciphertext6"), (alice, ac, "ciphertext6")] postOtrMessage id alice ac conv m6 !!! do @@ -283,12 +287,12 @@ postCryptoMessage1 = do const 201 === statusCode assertTrue_ (eqMismatch [] [] [] . responseJsonUnsafe) -- Bob's first client gets both messages - void . liftIO $ WS.assertMatch t wsB (wsAssertOtr conv alice ac bc cipher) - void . liftIO $ WS.assertMatch t wsB (wsAssertOtr conv alice ac bc2 cipher) + void . liftIO $ WS.assertMatch t wsB (wsAssertOtr qconv qalice ac bc cipher) + void . liftIO $ WS.assertMatch t wsB (wsAssertOtr qconv qalice ac bc2 cipher) -- Bob's second client gets only the message destined for him - void . liftIO $ WS.assertMatch t wsB2 (wsAssertOtr conv alice ac bc2 cipher) + void . liftIO $ WS.assertMatch t wsB2 (wsAssertOtr qconv qalice ac bc2 cipher) liftIO $ assertBool "unexpected equal clients" (bc /= bc2) - assertNoMsg wsB2 (wsAssertOtr conv alice ac bc cipher) + assertNoMsg wsB2 (wsAssertOtr qconv qalice ac bc cipher) -- | This test verifies basic mismatch behaviour of the the JSON endpoint. postCryptoMessage2 :: TestM () @@ -418,23 +422,27 @@ postJoinConvOk :: TestM () postJoinConvOk = do c <- view tsCannon alice <- randomUser - bob <- randomUser + qbob <- randomQualifiedUser + let bob = qUnqualified qbob conv <- decodeConvId <$> postConv alice [] (Just "gossip") [InviteAccess, LinkAccess] Nothing Nothing + let qconv = Qualified conv (qDomain qbob) WS.bracketR2 c alice bob $ \(wsA, wsB) -> do postJoinConv bob conv !!! const 200 === statusCode postJoinConv bob conv !!! const 204 === statusCode void . liftIO $ WS.assertMatchN (5 # Second) [wsA, wsB] $ - wsAssertMemberJoinWithRole conv bob [bob] roleNameWireMember + wsAssertMemberJoinWithRole qconv qbob [qbob] roleNameWireMember postJoinCodeConvOk :: TestM () postJoinCodeConvOk = do c <- view tsCannon alice <- randomUser - bob <- randomUser + qbob <- randomQualifiedUser + let bob = qUnqualified qbob eve <- ephemeralUser dave <- ephemeralUser conv <- decodeConvId <$> postConv alice [] (Just "gossip") [CodeAccess] (Just ActivatedAccessRole) Nothing + let qconv = Qualified conv (qDomain qbob) cCode <- decodeConvCodeEvent <$> postConvCode alice conv -- currently ConversationCode is used both as return type for POST ../code and as body for ../join -- POST /code gives code,key,uri @@ -454,7 +462,7 @@ postJoinCodeConvOk = do postJoinCodeConv eve payload !!! const 403 === statusCode void . liftIO $ WS.assertMatchN (5 # Second) [wsA, wsB] $ - wsAssertMemberJoinWithRole conv bob [bob] roleNameWireMember + wsAssertMemberJoinWithRole qconv qbob [qbob] roleNameWireMember -- changing access to non-activated should give eve access let nonActivatedAccess = ConversationAccessUpdate [CodeAccess] NonActivatedAccessRole putAccessUpdate alice conv nonActivatedAccess !!! const 200 === statusCode @@ -467,8 +475,10 @@ postJoinCodeConvOk = do postConvertCodeConv :: TestM () postConvertCodeConv = do c <- view tsCannon - alice <- randomUser + qalice <- randomQualifiedUser + let alice = qUnqualified qalice conv <- decodeConvId <$> postConv alice [] (Just "gossip") [InviteAccess] Nothing Nothing + let qconv = Qualified conv (qDomain qalice) -- Cannot do code operations if conversation not in code access postConvCode alice conv !!! const 403 === statusCode deleteConvCode alice conv !!! const 403 === statusCode @@ -484,7 +494,7 @@ postConvertCodeConv = do putAccessUpdate alice conv nonActivatedAccess !!! const 204 === statusCode void . liftIO $ WS.assertMatchN (5 # Second) [wsA] $ - wsAssertConvAccessUpdate conv alice nonActivatedAccess + wsAssertConvAccessUpdate qconv qalice nonActivatedAccess -- Create/get/update/delete codes getConvCode alice conv !!! const 404 === statusCode c1 <- decodeConvCodeEvent <$> (postConvCode alice conv addUserToTeam alice tid assertQueue "team member (bob) join" $ tUpdate 2 [alice] refreshIndex @@ -524,22 +536,24 @@ postConvertTeamConv = do conv <- createTeamConvAccess alice tid [bob, eve] (Just "blaa") acc (Just NonActivatedAccessRole) Nothing Nothing -- mallory joins by herself mallory <- ephemeralUser + let qmallory = Qualified mallory localDomain + qconv = Qualified conv localDomain j <- decodeConvCodeEvent <$> postConvCode alice conv WS.bracketR3 c alice bob eve $ \(wsA, wsB, wsE) -> do postJoinCodeConv mallory j !!! const 200 === statusCode void . liftIO $ WS.assertMatchN (5 # Second) [wsA, wsB, wsE] $ - wsAssertMemberJoinWithRole conv mallory [mallory] roleNameWireMember + wsAssertMemberJoinWithRole qconv qmallory [qmallory] roleNameWireMember WS.bracketRN c [alice, bob, eve, mallory] $ \[wsA, wsB, wsE, wsM] -> do let teamAccess = ConversationAccessUpdate [InviteAccess, CodeAccess] TeamAccessRole putAccessUpdate alice conv teamAccess !!! const 200 === statusCode void . liftIO $ WS.assertMatchN (5 # Second) [wsA, wsB, wsE, wsM] $ - wsAssertConvAccessUpdate conv alice teamAccess + wsAssertConvAccessUpdate qconv qalice teamAccess -- non-team members get kicked out void . liftIO $ WS.assertMatchN (5 # Second) [wsA, wsB, wsE, wsM] $ - wsAssertMemberLeave conv alice [eve, mallory] + wsAssertMemberLeave qconv qalice [eve, mallory] -- joining (for mallory) is no longer possible postJoinCodeConv mallory j !!! const 403 === statusCode -- team members (dave) can still join @@ -990,13 +1004,14 @@ leaveConnectConversation = do -- See also the comment in Galley.API.Update.addMembers for some other checks that are necessary. testAddRemoteMember :: TestM () testAddRemoteMember = do - aliceQ <- randomQualifiedUser - let alice = qUnqualified aliceQ - let localDomain = qDomain aliceQ + qalice <- randomQualifiedUser + let alice = qUnqualified qalice + let localDomain = qDomain qalice bobId <- randomId let remoteDomain = Domain "far-away.example.com" remoteBob = Qualified bobId remoteDomain convId <- decodeConvId <$> postConv alice [] (Just "remote gossip") [] Nothing Nothing + let qconvId = Qualified convId localDomain opts <- view tsGConf g <- view tsGalley (resp, _) <- @@ -1007,12 +1022,12 @@ testAddRemoteMember = do (postQualifiedMembers' g alice (remoteBob :| []) convId) e <- responseJsonUnsafe <$> (pure resp getConvQualified alice (Qualified convId localDomain) + evtFrom e @?= qalice + conv <- responseJsonUnsafeWithMsg "conversation" <$> getConvQualified alice qconvId liftIO $ do let actual = cmOthers $ cnvMembers conv let expected = [OtherMember remoteBob Nothing roleNameWireAdmin] @@ -1140,19 +1155,22 @@ testAddRemoteMemberFederationDisabled = do postMembersOk :: TestM () postMembersOk = do - alice <- randomUser + qalice <- randomQualifiedUser + let alice = qUnqualified qalice bob <- randomUser chuck <- randomUser - eve <- randomUser + qeve <- randomQualifiedUser + let eve = qUnqualified qeve connectUsers alice (list1 bob [chuck, eve]) connectUsers eve (singleton bob) conv <- decodeConvId <$> postConv alice [bob, chuck] (Just "gossip") [] Nothing Nothing + let qconv = Qualified conv (qDomain qalice) e <- responseJsonUnsafe <$> (postMembers alice (singleton eve) conv do _ <- getSelfMember u conv postO2OConv alice bob (Just "gossip") + let qconv = Qualified conv (qDomain qbob) -- This endpoint should be deprecated but clients still use it WS.bracketR2 c alice bob $ \(wsA, wsB) -> do void $ putConversationName bob conv "gossip++" !!! const 200 === statusCode void . liftIO . WS.assertMatchN (5 # Second) [wsA, wsB] $ \n -> do let e = List1.head (WS.unpackPayload n) ntfTransient n @?= False - evtConv e @?= conv + evtConv e @?= qconv evtType e @?= ConvRename - evtFrom e @?= bob + evtFrom e @?= qbob evtData e @?= EdConvRename (ConversationRename "gossip++") putMemberOtrMuteOk :: TestM () @@ -1302,9 +1322,11 @@ putMemberOk :: MemberUpdate -> TestM () putMemberOk update = do c <- view tsCannon alice <- randomUser - bob <- randomUser + qbob <- randomQualifiedUser + let bob = qUnqualified qbob connectUsers alice (singleton bob) conv <- decodeConvId <$> postO2OConv alice bob (Just "gossip") + let qconv = Qualified conv (qDomain qbob) getConv alice conv !!! const 200 === statusCode -- Expected member state let memberBob = @@ -1326,9 +1348,9 @@ putMemberOk update = do void . liftIO . WS.assertMatch (5 # Second) ws $ \n -> do let e = List1.head (WS.unpackPayload n) ntfTransient n @?= False - evtConv e @?= conv + evtConv e @?= qconv evtType e @?= MemberStateUpdate - evtFrom e @?= bob + evtFrom e @?= qbob case evtData e of EdMemberUpdate mis -> do assertEqual "otr_muted" (mupOtrMute update) (misOtrMuted mis) @@ -1355,11 +1377,13 @@ putMemberOk update = do putReceiptModeOk :: TestM () putReceiptModeOk = do c <- view tsCannon - alice <- randomUser + qalice <- randomQualifiedUser + let alice = qUnqualified qalice bob <- randomUser jane <- randomUser connectUsers alice (list1 bob [jane]) cnv <- decodeConvId <$> postConv alice [bob, jane] (Just "gossip") [] Nothing Nothing + let qcnv = Qualified cnv (qDomain qalice) WS.bracketR3 c alice bob jane $ \(_wsA, wsB, _wsJ) -> do -- By default, nothing is set getConv alice cnv !!! do @@ -1371,7 +1395,7 @@ putReceiptModeOk = do getConv alice cnv !!! do const 200 === statusCode const (Just $ Just (ReceiptMode 0)) === fmap cnvReceiptMode . responseJsonUnsafe - void . liftIO $ checkWs alice (cnv, wsB) + void . liftIO $ checkWs qalice (qcnv, wsB) -- No changes putReceiptMode alice cnv (ReceiptMode 0) !!! const 204 === statusCode -- No event should have been generated @@ -1385,12 +1409,12 @@ putReceiptModeOk = do const 200 === statusCode const (Just (Just (ReceiptMode 0))) === fmap cnvReceiptMode . responseJsonUnsafe where - checkWs alice (cnv, ws) = WS.awaitMatch (5 # Second) ws $ \n -> do + checkWs qalice (qcnv, ws) = WS.awaitMatch (5 # Second) ws $ \n -> do ntfTransient n @?= False let e = List1.head (WS.unpackPayload n) - evtConv e @?= cnv + evtConv e @?= qcnv evtType e @?= ConvReceiptModeUpdate - evtFrom e @?= alice + evtFrom e @?= qalice case evtData e of EdConvReceiptModeUpdate (ConversationReceiptModeUpdate (ReceiptMode mode)) -> assertEqual "modes should match" mode 0 @@ -1434,14 +1458,16 @@ removeUser = do conv1 <- decodeConvId <$> postConv alice [bob'] (Just "gossip") [] Nothing Nothing conv2 <- decodeConvId <$> postConv alice [bob', carl'] (Just "gossip2") [] Nothing Nothing conv3 <- decodeConvId <$> postConv alice [carl'] (Just "gossip3") [] Nothing Nothing + let qconv1 = Qualified conv1 (qDomain bob) + qconv2 = Qualified conv2 (qDomain bob) WS.bracketR3 c alice bob' carl' $ \(wsA, wsB, wsC) -> do deleteUser bob' void . liftIO $ WS.assertMatchN (5 # Second) [wsA, wsB] $ - matchMemberLeave conv1 bob' + matchMemberLeave qconv1 bob void . liftIO $ WS.assertMatchN (5 # Second) [wsA, wsB, wsC] $ - matchMemberLeave conv2 bob' + matchMemberLeave qconv2 bob -- Check memberships mems1 <- fmap cnvMembers . responseJsonUnsafe <$> getConv alice conv1 mems2 <- fmap cnvMembers . responseJsonUnsafe <$> getConv alice conv2 @@ -1460,4 +1486,4 @@ removeUser = do evtConv e @?= conv evtType e @?= MemberLeave evtFrom e @?= u - evtData e @?= EdMembersLeave (UserIdList [u]) + evtData e @?= EdMembersLeave (UserIdList [qUnqualified u]) diff --git a/services/galley/test/integration/API/Federation.hs b/services/galley/test/integration/API/Federation.hs index 7e09e3ba952..ee8a792eafe 100644 --- a/services/galley/test/integration/API/Federation.hs +++ b/services/galley/test/integration/API/Federation.hs @@ -140,7 +140,7 @@ addLocalUser = do FedGalley.updateConversationMemberships fedGalleyClient cmu void . liftIO $ WS.assertMatch (5 # Second) ws $ - wsAssertMemberJoinWithRole conv bob [alice] roleNameWireMember + wsAssertMemberJoinWithRole qconv qbob [qalice] roleNameWireMember cassState <- view tsCass convs <- Cql.runClient cassState @@ -175,4 +175,4 @@ notifyLocalUser = do FedGalley.updateConversationMemberships fedGalleyClient cmu void . liftIO $ WS.assertMatch (5 # Second) ws $ - wsAssertMemberJoinWithRole conv bob [charlie] roleNameWireMember + wsAssertMemberJoinWithRole qconv qbob [qcharlie] roleNameWireMember diff --git a/services/galley/test/integration/API/MessageTimer.hs b/services/galley/test/integration/API/MessageTimer.hs index 690d605f54c..0328e97942f 100644 --- a/services/galley/test/integration/API/MessageTimer.hs +++ b/services/galley/test/integration/API/MessageTimer.hs @@ -27,6 +27,7 @@ import Control.Lens (view) import qualified Data.LegalHold as LH import Data.List1 import Data.Misc +import Data.Qualified import Galley.Types import Galley.Types.Conversations.Roles import qualified Galley.Types.Teams as Teams @@ -140,6 +141,7 @@ messageTimerChangeO2O = do messageTimerEvent :: TestM () messageTimerEvent = do + localDomain <- viewFederationDomain ca <- view tsCannon -- Create a conversation [alice, bob] <- randomUsers 2 @@ -151,11 +153,13 @@ messageTimerEvent = do -- Set timer to 1 second and check that all participants got the event WS.bracketR2 ca alice bob $ \(wsA, wsB) -> do let update = ConversationMessageTimerUpdate timer1sec + qcid = Qualified cid localDomain + qalice = Qualified alice localDomain putMessageTimerUpdate alice cid update !!! const 200 === statusCode void . liftIO $ WS.assertMatchN (5 # Second) [wsA, wsB] $ - wsAssertConvMessageTimerUpdate cid alice update + wsAssertConvMessageTimerUpdate qcid qalice update ---------------------------------------------------------------------------- -- Utilities diff --git a/services/galley/test/integration/API/Roles.hs b/services/galley/test/integration/API/Roles.hs index 6da96d747d3..115c366056f 100644 --- a/services/galley/test/integration/API/Roles.hs +++ b/services/galley/test/integration/API/Roles.hs @@ -24,6 +24,7 @@ import Control.Lens (view) import Data.ByteString.Conversion (toByteString') import Data.Id import Data.List1 +import Data.Qualified import Galley.Types import Galley.Types.Conversations.Roles import Imports @@ -63,12 +64,16 @@ testAllConversationRoles = do handleConversationRoleAdmin :: TestM () handleConversationRoleAdmin = do + localDomain <- viewFederationDomain c <- view tsCannon alice <- randomUser bob <- randomUser chuck <- randomUser eve <- randomUser jack <- randomUser + let qalice = Qualified alice localDomain + qeve = Qualified eve localDomain + qjack = Qualified jack localDomain connectUsers alice (list1 bob [chuck, eve, jack]) connectUsers eve (singleton bob) connectUsers bob (singleton jack) @@ -77,34 +82,39 @@ handleConversationRoleAdmin = do rsp <- postConvWithRole alice [bob, chuck] (Just "gossip") [] Nothing Nothing role void $ assertConvWithRole rsp RegularConv alice alice [bob, chuck] (Just "gossip") Nothing role let cid = decodeConvId rsp + qcid = Qualified cid localDomain -- Make sure everyone gets the correct event postMembersWithRole alice (singleton eve) cid role !!! const 200 === statusCode void . liftIO $ WS.assertMatchN (5 # Second) [wsA, wsB, wsC] $ - wsAssertMemberJoinWithRole cid alice [eve] role + wsAssertMemberJoinWithRole qcid qalice [qeve] role -- Add a member to help out with testing postMembersWithRole alice (singleton jack) cid roleNameWireMember !!! const 200 === statusCode void . liftIO $ WS.assertMatchN (5 # Second) [wsA, wsB, wsC] $ - wsAssertMemberJoinWithRole cid alice [jack] roleNameWireMember + wsAssertMemberJoinWithRole qcid qalice [qjack] roleNameWireMember return cid -- Added bob as a wire_admin and do the checks wireAdminChecks cid alice bob jack -- Demote bob and run the member checks WS.bracketR3 c alice bob chuck $ \(wsA, wsB, wsC) -> do let updateDown = OtherMemberUpdate (Just roleNameWireMember) + qcid = Qualified cid localDomain putOtherMember alice bob updateDown cid !!! assertActionSucceeded void . liftIO . WS.assertMatchN (5 # Second) [wsA, wsB, wsC] $ do - wsAssertMemberUpdateWithRole cid alice bob roleNameWireMember + wsAssertMemberUpdateWithRole qcid qalice bob roleNameWireMember wireMemberChecks cid bob alice jack handleConversationRoleMember :: TestM () handleConversationRoleMember = do + localDomain <- viewFederationDomain c <- view tsCannon alice <- randomUser + let qalice = Qualified alice localDomain bob <- randomUser chuck <- randomUser eve <- randomUser + let qeve = Qualified eve localDomain jack <- randomUser connectUsers alice (list1 bob [chuck, eve]) connectUsers bob (singleton chuck) @@ -114,22 +124,24 @@ handleConversationRoleMember = do rsp <- postConvWithRole alice [bob, chuck] (Just "gossip") [] Nothing Nothing role void $ assertConvWithRole rsp RegularConv alice alice [bob, chuck] (Just "gossip") Nothing role let cid = decodeConvId rsp + qcid = Qualified cid localDomain -- Make sure everyone gets the correct event postMembersWithRole alice (singleton eve) cid role !!! const 200 === statusCode void . liftIO $ WS.assertMatchN (5 # Second) [wsA, wsB, wsC] $ - wsAssertMemberJoinWithRole cid alice [eve] role + wsAssertMemberJoinWithRole qcid qalice [qeve] role return cid -- Added bob as a wire_member and do the checks wireMemberChecks cid bob alice chuck -- Let's promote bob WS.bracketR3 c alice bob chuck $ \(wsA, wsB, wsC) -> do + let qcid = Qualified cid localDomain let updateUp = OtherMemberUpdate (Just roleNameWireAdmin) -- Chuck cannot update, member only putOtherMember chuck bob updateUp cid !!! assertActionDenied putOtherMember alice bob updateUp cid !!! assertActionSucceeded void . liftIO . WS.assertMatchN (5 # Second) [wsA, wsB, wsC] $ do - wsAssertMemberUpdateWithRole cid alice bob roleNameWireAdmin + wsAssertMemberUpdateWithRole qcid qalice bob roleNameWireAdmin wireAdminChecks cid bob alice chuck -- | Given an admin, another admin and a member run all diff --git a/services/galley/test/integration/API/Teams.hs b/services/galley/test/integration/API/Teams.hs index fb72bb73b5f..fccc6065b2c 100644 --- a/services/galley/test/integration/API/Teams.hs +++ b/services/galley/test/integration/API/Teams.hs @@ -44,6 +44,7 @@ import qualified Data.LegalHold as LH import Data.List1 import qualified Data.List1 as List1 import Data.Misc (HttpsUrl, PlainTextPassword (..)) +import Data.Qualified import Data.Range import qualified Data.Set as Set import Data.String.Conversions (cs) @@ -71,7 +72,7 @@ import Test.Tasty import Test.Tasty.Cannon (TimeoutUnit (..), (#)) import qualified Test.Tasty.Cannon as WS import Test.Tasty.HUnit -import TestHelpers (test) +import TestHelpers (test, viewFederationDomain) import TestSetup (TestM, TestSetup, tsBrig, tsCannon, tsGConf, tsGalley) import UnliftIO (mapConcurrently, mapConcurrently_) import Wire.API.Team.Export (TeamExportUser (..)) @@ -595,6 +596,7 @@ testAddTeamMemberInternal = do testRemoveNonBindingTeamMember :: TestM () testRemoveNonBindingTeamMember = do + localDomain <- viewFederationDomain c <- view tsCannon g <- view tsGalley owner <- Util.randomUser @@ -635,12 +637,13 @@ testRemoveNonBindingTeamMember = do -- Ensure that `mem1` is still a user (tid is not a binding team) Util.ensureDeletedState False owner (mem1 ^. userId) mapConcurrently_ (checkTeamMemberLeave tid (mem1 ^. userId)) [wsOwner, wsMem1, wsMem2] - checkConvMemberLeaveEvent cid2 (mem1 ^. userId) wsMext1 - checkConvMemberLeaveEvent cid3 (mem1 ^. userId) wsMext3 + checkConvMemberLeaveEvent (Qualified cid2 localDomain) (mem1 ^. userId) wsMext1 + checkConvMemberLeaveEvent (Qualified cid3 localDomain) (mem1 ^. userId) wsMext3 WS.assertNoEvent timeout ws testRemoveBindingTeamMember :: Bool -> TestM () testRemoveBindingTeamMember ownerHasPassword = do + localDomain <- viewFederationDomain g <- view tsGalley c <- view tsCannon -- Owner who creates the team must have an email, This is why we run all tests with a second @@ -719,7 +722,7 @@ testRemoveBindingTeamMember ownerHasPassword = do !!! const 202 === statusCode checkTeamMemberLeave tid (mem1 ^. userId) wsOwner - checkConvMemberLeaveEvent cid1 (mem1 ^. userId) wsMext + checkConvMemberLeaveEvent (Qualified cid1 localDomain) (mem1 ^. userId) wsMext assertQueue "team member leave" $ tUpdate 2 [ownerWithPassword, owner] WS.assertNoEvent timeout [wsMext] -- Mem1 is now gone from Wire @@ -1001,6 +1004,7 @@ testUpdateTeamConv (rolePermissions -> perms) convRole = do testDeleteTeam :: TestM () testDeleteTeam = do + localDomain <- viewFederationDomain g <- view tsGalley c <- view tsCannon owner <- Util.randomUser @@ -1024,7 +1028,7 @@ testDeleteTeam = do checkTeamDeleteEvent tid wsOwner checkTeamDeleteEvent tid wsMember -- team members should not receive conversation delete events - checkConvDeleteEvent cid1 wsExtern + checkConvDeleteEvent (Qualified cid1 localDomain) wsExtern WS.assertNoEvent timeout [wsOwner, wsExtern, wsMember] get (g . paths ["teams", toByteString' tid] . zUser owner) !!! const 404 === statusCode @@ -1187,6 +1191,7 @@ testDeleteBindingTeam ownerHasPassword = do testDeleteTeamConv :: TestM () testDeleteTeamConv = do + localDomain <- viewFederationDomain g <- view tsGalley c <- view tsCannon owner <- Util.randomUser @@ -1216,8 +1221,9 @@ testDeleteTeamConv = do -- i.e., as both a regular "conversation.delete" to all -- conversation members and as "team.conversation-delete" -- to all team members not part of the conversation - checkConvDeleteEvent cid2 wsOwner - checkConvDeleteEvent cid2 wsMember + let qcid2 = Qualified cid2 localDomain + checkConvDeleteEvent qcid2 wsOwner + checkConvDeleteEvent qcid2 wsMember WS.assertNoEvent timeout [wsOwner, wsMember] delete ( g @@ -1231,9 +1237,10 @@ testDeleteTeamConv = do -- i.e., as both a regular "conversation.delete" to all -- conversation members and as "team.conversation-delete" -- to all team members not part of the conversation - checkConvDeleteEvent cid1 wsOwner - checkConvDeleteEvent cid1 wsMember - checkConvDeleteEvent cid1 wsExtern + let qcid1 = Qualified cid1 localDomain + checkConvDeleteEvent qcid1 wsOwner + checkConvDeleteEvent qcid1 wsMember + checkConvDeleteEvent qcid1 wsExtern WS.assertNoEvent timeout [wsOwner, wsMember, wsExtern] for_ [cid1, cid2] $ \x -> for_ [owner, member ^. userId, extern] $ \u -> do @@ -1281,6 +1288,7 @@ testUpdateTeam = do testTeamAddRemoveMemberAboveThresholdNoEvents :: HasCallStack => TestM () testTeamAddRemoveMemberAboveThresholdNoEvents = do + localDomain <- viewFederationDomain o <- view tsGConf c <- view tsCannon let fanoutLimit = fromIntegral . fromRange $ Galley.currentFanoutLimit o @@ -1329,7 +1337,7 @@ testTeamAddRemoveMemberAboveThresholdNoEvents = do cid1 <- Util.createTeamConv owner tid [] (Just "blaa") Nothing Nothing Util.postMembers owner (list1 extern []) cid1 !!! const 200 === statusCode -- Test team deletion (should contain only conv. removal and user.deletion for _non_ team members) - deleteTeam tid owner [] [cid1] extern + deleteTeam tid owner [] [Qualified cid1 localDomain] extern ensureQueueEmpty where modifyUserProfileAndExpectEvent :: HasCallStack => Bool -> UserId -> [UserId] -> TestM () @@ -1400,7 +1408,7 @@ testTeamAddRemoveMemberAboveThresholdNoEvents = do -- User deletion events mapM_ (checkUserDeleteEvent victim) wsOthers Util.ensureDeletedState True owner victim - deleteTeam :: HasCallStack => TeamId -> UserId -> [UserId] -> [ConvId] -> UserId -> TestM () + deleteTeam :: HasCallStack => TeamId -> UserId -> [UserId] -> [Qualified ConvId] -> UserId -> TestM () deleteTeam tid owner otherRealUsersInTeam teamCidsThatExternBelongsTo extern = do c <- view tsCannon g <- view tsGalley @@ -1704,7 +1712,7 @@ checkTeamDeleteEvent tid w = WS.assertMatch_ timeout w $ \notif -> do e ^. eventTeam @?= tid e ^. eventData @?= Nothing -checkConvDeleteEvent :: HasCallStack => ConvId -> WS.WebSocket -> TestM () +checkConvDeleteEvent :: HasCallStack => Qualified ConvId -> WS.WebSocket -> TestM () checkConvDeleteEvent cid w = WS.assertMatch_ timeout w $ \notif -> do ntfTransient notif @?= False let e = List1.head (WS.unpackPayload notif) @@ -1712,7 +1720,7 @@ checkConvDeleteEvent cid w = WS.assertMatch_ timeout w $ \notif -> do evtConv e @?= cid evtData e @?= Conv.EdConvDelete -checkConvMemberLeaveEvent :: HasCallStack => ConvId -> UserId -> WS.WebSocket -> TestM () +checkConvMemberLeaveEvent :: HasCallStack => Qualified ConvId -> UserId -> WS.WebSocket -> TestM () checkConvMemberLeaveEvent cid usr w = WS.assertMatch_ timeout w $ \notif -> do ntfTransient notif @?= False let e = List1.head (WS.unpackPayload notif) @@ -1724,6 +1732,9 @@ checkConvMemberLeaveEvent cid usr w = WS.assertMatch_ timeout w $ \notif -> do postCryptoBroadcastMessageJson :: TestM () postCryptoBroadcastMessageJson = do + localDomain <- viewFederationDomain + let q :: Id a -> Qualified (Id a) + q = (`Qualified` localDomain) c <- view tsCannon -- Team1: Alice, Bob. Team2: Charlie. Regular user: Dan. Connect Alice,Charlie,Dan (alice, tid) <- Util.createBindingTeam @@ -1750,18 +1761,21 @@ postCryptoBroadcastMessageJson = do const 201 === statusCode assertTrue_ (eqMismatch [] [] [] . responseJsonUnsafe) -- Bob should get the broadcast (team member of alice) - void . liftIO $ WS.assertMatch t wsB (wsAssertOtr (selfConv bob) alice ac bc "ciphertext1") + void . liftIO $ WS.assertMatch t wsB (wsAssertOtr (q (selfConv bob)) (q alice) ac bc "ciphertext1") -- Charlie should get the broadcast (contact of alice and user of teams feature) - void . liftIO $ WS.assertMatch t wsC (wsAssertOtr (selfConv charlie) alice ac cc "ciphertext2") + void . liftIO $ WS.assertMatch t wsC (wsAssertOtr (q (selfConv charlie)) (q alice) ac cc "ciphertext2") -- Dan should get the broadcast (contact of alice and not user of teams feature) - void . liftIO $ WS.assertMatch t wsD (wsAssertOtr (selfConv dan) alice ac dc "ciphertext3") + void . liftIO $ WS.assertMatch t wsD (wsAssertOtr (q (selfConv dan)) (q alice) ac dc "ciphertext3") -- Alice's first client should not get the broadcast - assertNoMsg wsA1 (wsAssertOtr (selfConv alice) alice ac ac "ciphertext0") + assertNoMsg wsA1 (wsAssertOtr (q (selfConv alice)) (q alice) ac ac "ciphertext0") -- Alice's second client should get the broadcast - void . liftIO $ WS.assertMatch t wsA2 (wsAssertOtr (selfConv alice) alice ac ac2 "ciphertext0") + void . liftIO $ WS.assertMatch t wsA2 (wsAssertOtr (q (selfConv alice)) (q alice) ac ac2 "ciphertext0") postCryptoBroadcastMessageJsonFilteredTooLargeTeam :: TestM () postCryptoBroadcastMessageJsonFilteredTooLargeTeam = do + localDomain <- viewFederationDomain + let q :: Id a -> Qualified (Id a) + q = (`Qualified` localDomain) opts <- view tsGConf g <- view tsCannon c <- view tsCannon @@ -1806,15 +1820,15 @@ postCryptoBroadcastMessageJsonFilteredTooLargeTeam = do const 201 === statusCode assertTrue_ (eqMismatch [] [] [] . responseJsonUnsafe) -- Bob should get the broadcast (team member of alice) - void . liftIO $ WS.assertMatch t wsB (wsAssertOtr (selfConv bob) alice ac bc "ciphertext1") + void . liftIO $ WS.assertMatch t wsB (wsAssertOtr (q (selfConv bob)) (q alice) ac bc "ciphertext1") -- Charlie should get the broadcast (contact of alice and user of teams feature) - void . liftIO $ WS.assertMatch t wsC (wsAssertOtr (selfConv charlie) alice ac cc "ciphertext2") + void . liftIO $ WS.assertMatch t wsC (wsAssertOtr (q (selfConv charlie)) (q alice) ac cc "ciphertext2") -- Dan should get the broadcast (contact of alice and not user of teams feature) - void . liftIO $ WS.assertMatch t wsD (wsAssertOtr (selfConv dan) alice ac dc "ciphertext3") + void . liftIO $ WS.assertMatch t wsD (wsAssertOtr (q (selfConv dan)) (q alice) ac dc "ciphertext3") -- Alice's first client should not get the broadcast - assertNoMsg wsA1 (wsAssertOtr (selfConv alice) alice ac ac "ciphertext0") + assertNoMsg wsA1 (wsAssertOtr (q (selfConv alice)) (q alice) ac ac "ciphertext0") -- Alice's second client should get the broadcast - void . liftIO $ WS.assertMatch t wsA2 (wsAssertOtr (selfConv alice) alice ac ac2 "ciphertext0") + void . liftIO $ WS.assertMatch t wsA2 (wsAssertOtr (q (selfConv alice)) (q alice) ac ac2 "ciphertext0") postCryptoBroadcastMessageJsonReportMissingBody :: TestM () postCryptoBroadcastMessageJsonReportMissingBody = do @@ -1833,6 +1847,9 @@ postCryptoBroadcastMessageJsonReportMissingBody = do postCryptoBroadcastMessageJson2 :: TestM () postCryptoBroadcastMessageJson2 = do + localDomain <- viewFederationDomain + let q :: Id a -> Qualified (Id a) + q = (`Qualified` localDomain) c <- view tsCannon -- Team1: Alice, Bob. Team2: Charlie. Connect Alice,Charlie (alice, tid) <- Util.createBindingTeam @@ -1857,18 +1874,18 @@ postCryptoBroadcastMessageJson2 = do Util.postOtrBroadcastMessage id alice ac m2 !!! do const 201 === statusCode assertTrue "No devices expected" (eqMismatch [] [] [] . responseJsonUnsafe) - void . liftIO $ WS.assertMatch t wsB (wsAssertOtr (selfConv bob) alice ac bc "ciphertext2") - void . liftIO $ WS.assertMatch t wsE (wsAssertOtr (selfConv charlie) alice ac cc "ciphertext2") + void . liftIO $ WS.assertMatch t wsB (wsAssertOtr (q (selfConv bob)) (q alice) ac bc "ciphertext2") + void . liftIO $ WS.assertMatch t wsE (wsAssertOtr (q (selfConv charlie)) (q alice) ac cc "ciphertext2") -- Redundant self WS.bracketR3 c alice bob charlie $ \(wsA, wsB, wsE) -> do let m3 = [(alice, ac, "ciphertext3"), (bob, bc, "ciphertext3"), (charlie, cc, "ciphertext3")] Util.postOtrBroadcastMessage id alice ac m3 !!! do const 201 === statusCode assertTrue "2: Only Alice and her device" (eqMismatch [] [(alice, Set.singleton ac)] [] . responseJsonUnsafe) - void . liftIO $ WS.assertMatch t wsB (wsAssertOtr (selfConv bob) alice ac bc "ciphertext3") - void . liftIO $ WS.assertMatch t wsE (wsAssertOtr (selfConv charlie) alice ac cc "ciphertext3") + void . liftIO $ WS.assertMatch t wsB (wsAssertOtr (q (selfConv bob)) (q alice) ac bc "ciphertext3") + void . liftIO $ WS.assertMatch t wsE (wsAssertOtr (q (selfConv charlie)) (q alice) ac cc "ciphertext3") -- Alice should not get it - assertNoMsg wsA (wsAssertOtr (selfConv alice) alice ac ac "ciphertext3") + assertNoMsg wsA (wsAssertOtr (q (selfConv alice)) (q alice) ac ac "ciphertext3") -- Deleted charlie WS.bracketR2 c bob charlie $ \(wsB, wsE) -> do deleteClient charlie cc (Just defPassword) !!! const 200 === statusCode @@ -1876,12 +1893,15 @@ postCryptoBroadcastMessageJson2 = do Util.postOtrBroadcastMessage id alice ac m4 !!! do const 201 === statusCode assertTrue "3: Only Charlie and his device" (eqMismatch [] [] [(charlie, Set.singleton cc)] . responseJsonUnsafe) - void . liftIO $ WS.assertMatch t wsB (wsAssertOtr (selfConv bob) alice ac bc "ciphertext4") + void . liftIO $ WS.assertMatch t wsB (wsAssertOtr (q (selfConv bob)) (q alice) ac bc "ciphertext4") -- charlie should not get it - assertNoMsg wsE (wsAssertOtr (selfConv charlie) alice ac cc "ciphertext4") + assertNoMsg wsE (wsAssertOtr (q (selfConv charlie)) (q alice) ac cc "ciphertext4") postCryptoBroadcastMessageProto :: TestM () postCryptoBroadcastMessageProto = do + localDomain <- viewFederationDomain + let q :: Id a -> Qualified (Id a) + q = (`Qualified` localDomain) -- similar to postCryptoBroadcastMessageJson, postCryptoBroadcastMessageJsonReportMissingBody except uses protobuf c <- view tsCannon @@ -1906,11 +1926,11 @@ postCryptoBroadcastMessageProto = do const 201 === statusCode assertTrue_ (eqMismatch [] [] [] . responseJsonUnsafe) -- Bob should get the broadcast (team member of alice) - void . liftIO $ WS.assertMatch t wsB (wsAssertOtr' (encodeCiphertext "data") (selfConv bob) alice ac bc ciphertext) + void . liftIO $ WS.assertMatch t wsB (wsAssertOtr' (encodeCiphertext "data") (q (selfConv bob)) (q alice) ac bc ciphertext) -- Charlie should get the broadcast (contact of alice and user of teams feature) - void . liftIO $ WS.assertMatch t wsC (wsAssertOtr' (encodeCiphertext "data") (selfConv charlie) alice ac cc ciphertext) + void . liftIO $ WS.assertMatch t wsC (wsAssertOtr' (encodeCiphertext "data") (q (selfConv charlie)) (q alice) ac cc ciphertext) -- Dan should get the broadcast (contact of alice and not user of teams feature) - void . liftIO $ WS.assertMatch t wsD (wsAssertOtr' (encodeCiphertext "data") (selfConv dan) alice ac dc ciphertext) + void . liftIO $ WS.assertMatch t wsD (wsAssertOtr' (encodeCiphertext "data") (q (selfConv dan)) (q alice) ac dc ciphertext) -- Alice should not get her own broadcast WS.assertNoEvent timeout ws let inbody = Just [bob] -- body triggers report @@ -1929,8 +1949,10 @@ postCryptoBroadcastMessageNoTeam = do postCryptoBroadcastMessage100OrMaxConns :: TestM () postCryptoBroadcastMessage100OrMaxConns = do + localDomain <- viewFederationDomain c <- view tsCannon (alice, ac) <- randomUserWithClient (someLastPrekeys !! 0) + let qalice = Qualified alice localDomain _ <- createBindingTeamInternal "foo" alice assertQueue "" tActivate ((bob, bc), others) <- createAndConnectUserWhileLimitNotReached alice (100 :: Int) [] (someLastPrekeys !! 1) @@ -1942,9 +1964,11 @@ postCryptoBroadcastMessage100OrMaxConns = do Util.postOtrBroadcastMessage id alice ac msg !!! do const 201 === statusCode assertTrue_ (eqMismatch [] [] [] . responseJsonUnsafe) - void . liftIO $ WS.assertMatch t (Imports.head ws) (wsAssertOtr (selfConv bob) alice ac bc "ciphertext") - for_ (zip (tail ws) others) $ \(wsU, (u, clt)) -> - liftIO $ WS.assertMatch t wsU (wsAssertOtr (selfConv u) alice ac clt "ciphertext") + let qbobself = Qualified (selfConv bob) localDomain + void . liftIO $ WS.assertMatch t (Imports.head ws) (wsAssertOtr qbobself qalice ac bc "ciphertext") + for_ (zip (tail ws) others) $ \(wsU, (u, clt)) -> do + let qself = Qualified (selfConv u) localDomain + liftIO $ WS.assertMatch t wsU (wsAssertOtr qself qalice ac clt "ciphertext") where createAndConnectUserWhileLimitNotReached alice remaining acc pk = do (uid, cid) <- randomUserWithClient pk diff --git a/services/galley/test/integration/API/Util.hs b/services/galley/test/integration/API/Util.hs index dd3dfbf72fc..61d780a905e 100644 --- a/services/galley/test/integration/API/Util.hs +++ b/services/galley/test/integration/API/Util.hs @@ -1068,10 +1068,10 @@ assertConvWithRole r t c s us n mt role = do _ -> return () return cId -wsAssertOtr :: ConvId -> UserId -> ClientId -> ClientId -> Text -> Notification -> IO () +wsAssertOtr :: Qualified ConvId -> Qualified UserId -> ClientId -> ClientId -> Text -> Notification -> IO () wsAssertOtr = wsAssertOtr' "data" -wsAssertOtr' :: Text -> ConvId -> UserId -> ClientId -> ClientId -> Text -> Notification -> IO () +wsAssertOtr' :: Text -> Qualified ConvId -> Qualified UserId -> ClientId -> ClientId -> Text -> Notification -> IO () wsAssertOtr' evData conv usr from to txt n = do let e = List1.head (WS.unpackPayload n) ntfTransient n @?= False @@ -1081,10 +1081,10 @@ wsAssertOtr' evData conv usr from to txt n = do evtData e @?= EdOtrMessage (OtrMessage from to txt (Just evData)) -- | This assumes the default role name -wsAssertMemberJoin :: ConvId -> UserId -> [UserId] -> Notification -> IO () +wsAssertMemberJoin :: Qualified ConvId -> Qualified UserId -> [Qualified UserId] -> Notification -> IO () wsAssertMemberJoin conv usr new = wsAssertMemberJoinWithRole conv usr new roleNameWireAdmin -wsAssertMemberJoinWithRole :: ConvId -> UserId -> [UserId] -> RoleName -> Notification -> IO () +wsAssertMemberJoinWithRole :: Qualified ConvId -> Qualified UserId -> [Qualified UserId] -> RoleName -> Notification -> IO () wsAssertMemberJoinWithRole conv usr new role n = do let e = List1.head (WS.unpackPayload n) ntfTransient n @?= False @@ -1093,7 +1093,7 @@ wsAssertMemberJoinWithRole conv usr new role n = do evtFrom e @?= usr evtData e @?= EdMembersJoin (SimpleMembers (fmap (`SimpleMember` role) new)) -wsAssertMemberUpdateWithRole :: ConvId -> UserId -> UserId -> RoleName -> Notification -> IO () +wsAssertMemberUpdateWithRole :: Qualified ConvId -> Qualified UserId -> UserId -> RoleName -> Notification -> IO () wsAssertMemberUpdateWithRole conv usr target role n = do let e = List1.head (WS.unpackPayload n) ntfTransient n @?= False @@ -1106,7 +1106,7 @@ wsAssertMemberUpdateWithRole conv usr target role n = do assertEqual "conversation_role" (Just role) (misConvRoleName mis) x -> assertFailure $ "Unexpected event data: " ++ show x -wsAssertConvAccessUpdate :: ConvId -> UserId -> ConversationAccessUpdate -> Notification -> IO () +wsAssertConvAccessUpdate :: Qualified ConvId -> Qualified UserId -> ConversationAccessUpdate -> Notification -> IO () wsAssertConvAccessUpdate conv usr new n = do let e = List1.head (WS.unpackPayload n) ntfTransient n @?= False @@ -1115,7 +1115,7 @@ wsAssertConvAccessUpdate conv usr new n = do evtFrom e @?= usr evtData e @?= EdConvAccessUpdate new -wsAssertConvMessageTimerUpdate :: ConvId -> UserId -> ConversationMessageTimerUpdate -> Notification -> IO () +wsAssertConvMessageTimerUpdate :: Qualified ConvId -> Qualified UserId -> ConversationMessageTimerUpdate -> Notification -> IO () wsAssertConvMessageTimerUpdate conv usr new n = do let e = List1.head (WS.unpackPayload n) ntfTransient n @?= False @@ -1124,7 +1124,7 @@ wsAssertConvMessageTimerUpdate conv usr new n = do evtFrom e @?= usr evtData e @?= EdConvMessageTimerUpdate new -wsAssertMemberLeave :: ConvId -> UserId -> [UserId] -> Notification -> IO () +wsAssertMemberLeave :: Qualified ConvId -> Qualified UserId -> [UserId] -> Notification -> IO () wsAssertMemberLeave conv usr old n = do let e = List1.head (WS.unpackPayload n) ntfTransient n @?= False From 52da58a0623180de891a40d29284bee7dab8537b Mon Sep 17 00:00:00 2001 From: Stefan Matting Date: Fri, 4 Jun 2021 15:09:27 +0200 Subject: [PATCH 3/3] Revert "Merge pull request from GHSA-hxmc-g6x8-h2mh" (#1571) This reverts commit 20d0028c845f7a1b466ebabc04e07e7df1eb7a94. --- .../cargohold/src/CargoHold/API/Public.hs | 2 +- services/cargohold/src/CargoHold/S3.hs | 34 ++++--------------- services/cargohold/test/integration/API/V3.hs | 6 ++-- 3 files changed, 10 insertions(+), 32 deletions(-) diff --git a/services/cargohold/src/CargoHold/API/Public.hs b/services/cargohold/src/CargoHold/API/Public.hs index 0d141ad808c..33950d5c024 100644 --- a/services/cargohold/src/CargoHold/API/Public.hs +++ b/services/cargohold/src/CargoHold/API/Public.hs @@ -61,7 +61,7 @@ sitemap = do .&. contentType "multipart" "mixed" .&. request document "POST" "uploadAsset" $ do - Doc.summary "Upload an asset. In the multipart/mixed body, the first section's content type should be application/json. The second section's content type should be always application/octet-stream. Other content types will be ignored by the server." + Doc.summary "Upload an asset" Doc.consumes "multipart/mixed" Doc.errorResponse Error.assetTooLarge Doc.errorResponse Error.invalidLength diff --git a/services/cargohold/src/CargoHold/S3.hs b/services/cargohold/src/CargoHold/S3.hs index c71220e9beb..176672fe979 100644 --- a/services/cargohold/src/CargoHold/S3.hs +++ b/services/cargohold/src/CargoHold/S3.hs @@ -94,21 +94,10 @@ newtype S3AssetKey = S3AssetKey {s3Key :: Text} data S3AssetMeta = S3AssetMeta { v3AssetOwner :: V3.Principal, v3AssetToken :: Maybe V3.AssetToken, - v3AssetType :: MIME.Type -- should be ignored, see note on overrideMimeTypeAsOctetStream. FUTUREWORK: remove entirely. + v3AssetType :: MIME.Type } deriving (Show) --- [Note: overrideMimeTypeAsOctetStream] --- The asset V3 upload API allows setting arbitrary Asset MIME types on the --- "outside" of an uploaded (generally encrypted, exception: public profile --- pictures) asset. (outside meaning outside the encrypted blob in the second --- part of the multipart/mixed body section). However, outside-MIME types are --- not really used by Wire clients. To avoid any potential abuse of setting --- unexpected outside MIME types, yet remain backwards-compatible with older --- clients still setting mime types different to application/octet-stream, we --- ignore the uploaded mimetype header and force it to be --- application/octet-stream. - uploadV3 :: V3.Principal -> V3.AssetKey -> @@ -116,20 +105,16 @@ uploadV3 :: Maybe V3.AssetToken -> Conduit.ConduitM () ByteString (ResourceT IO) () -> ExceptT Error App () -uploadV3 prc (s3Key . mkKey -> key) originalHeaders@(V3.AssetHeaders _ cl) tok src = do +uploadV3 prc (s3Key . mkKey -> key) (V3.AssetHeaders ct cl) tok src = do Log.info $ "remote" .= val "S3" ~~ "asset.owner" .= toByteString prc ~~ "asset.key" .= key - ~~ "asset.type_from_request_ignored" .= MIME.showType (V3.hdrType originalHeaders) ~~ "asset.type" .= MIME.showType ct ~~ "asset.size" .= cl ~~ msg (val "Uploading asset") void $ exec req where - ct :: MIME.Type - ct = octets -- See note on overrideMimeTypeAsOctetStream - stream :: ConduitM () ByteString (ResourceT IO) () stream = src -- Rechunk bytestream to ensure we satisfy AWS's minimum chunk size @@ -137,11 +122,7 @@ uploadV3 prc (s3Key . mkKey -> key) originalHeaders@(V3.AssetHeaders _ cl) tok s .| Conduit.chunksOfCE (fromIntegral defaultChunkSize) -- Ignore any 'junk' after the content; take only 'cl' bytes. .| Conduit.isolate (fromIntegral cl) - - reqBdy :: ChunkedBody reqBdy = ChunkedBody defaultChunkSize (fromIntegral cl) stream - - req :: Text -> PutObject req b = putObject (BucketName b) (ObjectKey key) (toBody reqBdy) & poContentType ?~ MIME.showType ct @@ -182,7 +163,7 @@ deleteV3 (s3Key . mkKey -> key) = do req b = deleteObject (BucketName b) (ObjectKey key) updateMetadataV3 :: V3.AssetKey -> S3AssetMeta -> ExceptT Error App () -updateMetadataV3 (s3Key . mkKey -> key) (S3AssetMeta prc tok _) = do +updateMetadataV3 (s3Key . mkKey -> key) (S3AssetMeta prc tok ct) = do Log.debug $ "remote" .= val "S3" ~~ "asset.owner" .= show prc @@ -190,8 +171,6 @@ updateMetadataV3 (s3Key . mkKey -> key) (S3AssetMeta prc tok _) = do ~~ msg (val "Updating asset metadata") void $ exec req where - ct :: MIME.Type - ct = octets -- See note on overrideMimeTypeAsOctetStream copySrc b = decodeLatin1 . LBS.toStrict . toLazyByteString $ urlEncode [] $ @@ -393,8 +372,7 @@ createResumable :: V3.TotalSize -> Maybe V3.AssetToken -> ExceptT Error App S3Resumable -createResumable k p _ size tok = do - let typ = octets -- see note: overrideMimeTypeAsOctetStream +createResumable k p typ size tok = do let csize = calculateChunkSize size ex <- addUTCTime V3.assetVolatileSeconds <$> liftIO getCurrentTime let key = mkResumableKey k @@ -460,7 +438,7 @@ uploadChunk r offset rsrc = do return (r', rest) where nr = mkChunkNr r offset - ct = MIME.showType octets -- see note overrideMimeTypeAsOctetStream + ct = MIME.showType (resumableType r) putChunk chunk size = do let S3ChunkKey k = mkChunkKey (resumableKey r) nr let req b = @@ -510,7 +488,7 @@ completeResumable r = do let reqBdy = Chunked $ ChunkedBody chunkSize totalSize (chunkSource e chunks) let putRq b = putObject (BucketName b) (ObjectKey (s3Key (mkKey ast))) reqBdy - & poContentType ?~ MIME.showType octets -- see note overrideMimeTypeAsOctetStream + & poContentType ?~ MIME.showType (resumableType r) & poMetadata .~ metaHeaders (resumableToken r) own void $ exec putRq diff --git a/services/cargohold/test/integration/API/V3.hs b/services/cargohold/test/integration/API/V3.hs index bde128d4f42..8855819eea6 100644 --- a/services/cargohold/test/integration/API/V3.hs +++ b/services/cargohold/test/integration/API/V3.hs @@ -106,7 +106,7 @@ testSimpleRoundtrip c = do r3 <- flip get' id =<< parseUrlThrow (C8.unpack (getHeader' "Location" r2)) liftIO $ do assertEqual "status" status200 (responseStatus r3) - assertEqual "content-type should always be application/octet-stream" (Just applicationOctetStream) (getContentType r3) + assertEqual "content-type mismatch" (Just applicationText) (getContentType r3) assertEqual "token mismatch" tok (decodeHeader "x-amz-meta-token" r3) assertEqual "user mismatch" uid (decodeHeader "x-amz-meta-user" r3) assertEqual "data mismatch" (Just "Hello World") (responseBody r3) @@ -159,7 +159,7 @@ testSimpleTokens c = do r4 <- flip get' id =<< parseUrlThrow (C8.unpack (getHeader' "Location" r3)) liftIO $ do assertEqual "status" status200 (responseStatus r4) - assertEqual "content-type should always be application/octet-stream" (Just applicationOctetStream) (getContentType r4) + assertEqual "content-type mismatch" (Just applicationText) (getContentType r4) assertEqual "token mismatch" tok' (decodeHeader "x-amz-meta-token" r4) assertEqual "user mismatch" uid (decodeHeader "x-amz-meta-user" r4) assertEqual "data mismatch" (Just "Hello World") (responseBody r4) @@ -291,7 +291,7 @@ assertRandomResumable c totalSize chunkSize typ = do r <- downloadAsset c uid key Nothing liftIO $ do assertEqual "status" status200 (responseStatus r) - assertEqual "content-type should always be application/octet-stream" (Just applicationOctetStream) (getContentType r) + assertEqual "content-type mismatch" (Just textPlain) (getContentType r) assertEqual "user mismatch" uid (decodeHeader "x-amz-meta-user" r) assertEqual "data mismatch" (Just $ Lazy.fromStrict dat) (responseBody r)