diff --git a/changelog.d/5-internal/pr-2008 b/changelog.d/5-internal/pr-2008 new file mode 100644 index 0000000000..a5c36a513b --- /dev/null +++ b/changelog.d/5-internal/pr-2008 @@ -0,0 +1 @@ +Servantify Galley Teams API. (#2008) diff --git a/libs/galley-types/src/Galley/Types/Teams.hs b/libs/galley-types/src/Galley/Types/Teams.hs index f1251eff0a..a37bbdc466 100644 --- a/libs/galley-types/src/Galley/Types/Teams.hs +++ b/libs/galley-types/src/Galley/Types/Teams.hs @@ -65,16 +65,17 @@ module Galley.Types.Teams teamListHasMore, TeamMember, userId, + nUserId, permissions, + nPermissions, invitation, + nInvitation, legalHoldStatus, - teamMemberJson, TeamMemberList, ListType (..), newTeamMemberList, teamMembers, teamMemberListType, - teamMemberListJson, TeamConversation, newTeamConversation, conversationId, @@ -105,8 +106,6 @@ module Galley.Types.Teams newTeamIconKey, newTeamMembers, NewTeamMember, - newNewTeamMember, - ntmNewTeamMember, Event, newEvent, eventType, diff --git a/libs/schema-profunctor/src/Data/Schema.hs b/libs/schema-profunctor/src/Data/Schema.hs index 398d4caaab..0e8c5e8cac 100644 --- a/libs/schema-profunctor/src/Data/Schema.hs +++ b/libs/schema-profunctor/src/Data/Schema.hs @@ -500,6 +500,9 @@ instance With Text where instance With Integer where with _ = (A.parseJSON >=>) +instance With Bool where + with = A.withBool + -- | A schema for a single value of an enumeration. element :: forall a b. @@ -766,6 +769,9 @@ instance HasEnum Text NamedSwaggerDoc where instance HasEnum Integer NamedSwaggerDoc where mkEnum = mkSwaggerEnum S.SwaggerInteger +instance HasEnum Bool NamedSwaggerDoc where + mkEnum = mkSwaggerEnum S.SwaggerBoolean + mkSwaggerEnum :: S.SwaggerType 'S.SwaggerKindSchema -> Text -> 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 63949b1d84..fe3ec2ec6e 100644 --- a/libs/wire-api/src/Wire/API/Routes/Public/Galley.hs +++ b/libs/wire-api/src/Wire/API/Routes/Public/Galley.hs @@ -1,4 +1,5 @@ {-# LANGUAGE DerivingVia #-} +{-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# OPTIONS_GHC -Wno-orphans #-} -- This file is part of the Wire Server implementation. @@ -43,6 +44,7 @@ import Wire.API.Routes.Public import Wire.API.Routes.Public.Util import Wire.API.Routes.QualifiedCapture import Wire.API.ServantProto (Proto, RawProto) +import Wire.API.Team import Wire.API.Team.Conversation import Wire.API.Team.Feature @@ -705,7 +707,25 @@ data Api routes = Api :- FeatureConfigGet 'WithLockStatus 'TeamFeatureSelfDeletingMessages, featureConfigGuestLinksGet :: routes - :- FeatureConfigGet 'WithLockStatus 'TeamFeatureGuestLinks + :- FeatureConfigGet 'WithLockStatus 'TeamFeatureGuestLinks, + -- teams + createNonBindingTeam :: + routes + :- Summary "Create a new non binding team" + :> ZUser + :> ZConn + :> CanThrow NotConnected + :> "teams" + :> ReqBody '[Servant.JSON] NonBindingNewTeam + :> MultiVerb + 'POST + '[JSON] + '[ WithHeaders + '[DescHeader "Location" "Team ID" TeamId] + TeamId + (RespondEmpty 201 "Team ID as `Location` header value") + ] + TeamId } deriving (Generic) diff --git a/libs/wire-api/src/Wire/API/Team.hs b/libs/wire-api/src/Wire/API/Team.hs index b1307bea12..d639b314d0 100644 --- a/libs/wire-api/src/Wire/API/Team.hs +++ b/libs/wire-api/src/Wire/API/Team.hs @@ -46,7 +46,6 @@ module Wire.API.Team newTeamIcon, newTeamIconKey, newTeamMembers, - newTeamJson, -- * TeamUpdateData TeamUpdateData (..), @@ -71,12 +70,14 @@ module Wire.API.Team where import Control.Lens (makeLenses) -import Data.Aeson -import Data.Aeson.Types (Pair) +import Data.Aeson (FromJSON, ToJSON, Value (..)) +import Data.Aeson.Types (Parser) import Data.Id (TeamId, UserId) -import Data.Json.Util import Data.Misc (PlainTextPassword (..)) import Data.Range +import Data.Schema +import Data.Singletons (sing) +import qualified Data.Swagger as S import qualified Data.Swagger.Build.Api as Doc import Imports import Test.QuickCheck.Gen (suchThat) @@ -96,9 +97,10 @@ data Team = Team } deriving stock (Eq, Show, Generic) deriving (Arbitrary) via (GenericUniform Team) + deriving (ToJSON, FromJSON, S.ToSchema) via (Schema Team) newTeam :: TeamId -> UserId -> Text -> Text -> TeamBinding -> Team -newTeam tid uid nme ico bnd = Team tid uid nme ico Nothing bnd +newTeam tid uid nme ico = Team tid uid nme ico Nothing modelTeam :: Doc.Model modelTeam = Doc.defineModel "Team" $ do @@ -117,41 +119,28 @@ modelTeam = Doc.defineModel "Team" $ do Doc.property "binding" Doc.bool' $ Doc.description "user binding team" -instance ToJSON Team where - toJSON t = - object $ - "id" .= _teamId t - # "creator" .= _teamCreator t - # "name" .= _teamName t - # "icon" .= _teamIcon t - # "icon_key" .= _teamIconKey t - # "binding" .= _teamBinding t - # [] - -instance FromJSON Team where - parseJSON = withObject "team" $ \o -> do - Team - <$> o .: "id" - <*> o .: "creator" - <*> o .: "name" - <*> o .: "icon" - <*> o .:? "icon_key" - <*> o .:? "binding" .!= NonBinding +instance ToSchema Team where + schema = + object "Team" $ + Team + <$> _teamId .= field "id" schema + <*> _teamCreator .= field "creator" schema + <*> _teamName .= field "name" schema + <*> _teamIcon .= field "icon" schema + <*> _teamIconKey .= maybe_ (optField "icon_key" schema) + <*> _teamBinding .= (fromMaybe Binding <$> optField "binding" schema) data TeamBinding = Binding | NonBinding deriving stock (Eq, Show, Generic) deriving (Arbitrary) via (GenericUniform TeamBinding) + deriving (ToJSON, FromJSON, S.ToSchema) via (Schema TeamBinding) -instance ToJSON TeamBinding where - toJSON Binding = Bool True - toJSON NonBinding = Bool False - -instance FromJSON TeamBinding where - parseJSON (Bool True) = pure Binding - parseJSON (Bool False) = pure NonBinding - parseJSON other = fail $ "Unknown binding type: " <> show other +instance ToSchema TeamBinding where + schema = + enum @Bool "TeamBinding" $ + mconcat [element True Binding, element False NonBinding] -------------------------------------------------------------------------------- -- TeamList @@ -162,6 +151,7 @@ data TeamList = TeamList } deriving stock (Eq, Show, Generic) deriving (Arbitrary) via (GenericUniform TeamList) + deriving (ToJSON, FromJSON, S.ToSchema) via (Schema TeamList) newTeamList :: [Team] -> Bool -> TeamList newTeamList = TeamList @@ -174,24 +164,18 @@ modelTeamList = Doc.defineModel "TeamList" $ do Doc.property "has_more" Doc.bool' $ Doc.description "if more teams are available" -instance ToJSON TeamList where - toJSON t = - object $ - "teams" .= _teamListTeams t - # "has_more" .= _teamListHasMore t - # [] - -instance FromJSON TeamList where - parseJSON = withObject "teamlist" $ \o -> do - TeamList - <$> o .: "teams" - <*> o .: "has_more" +instance ToSchema TeamList where + schema = + object "TeamList" $ + TeamList <$> _teamListTeams .= field "teams" (array schema) + <*> _teamListHasMore .= field "has_more" schema -------------------------------------------------------------------------------- -- NewTeam newtype BindingNewTeam = BindingNewTeam (NewTeam ()) deriving stock (Eq, Show, Generic) + deriving (ToJSON, FromJSON, S.ToSchema) via (Schema BindingNewTeam) modelNewBindingTeam :: Doc.Model modelNewBindingTeam = Doc.defineModel "NewBindingTeam" $ do @@ -204,17 +188,13 @@ modelNewBindingTeam = Doc.defineModel "NewBindingTeam" $ do Doc.description "team icon asset key" Doc.optional -instance ToJSON BindingNewTeam where - toJSON (BindingNewTeam t) = object $ newTeamJson t - -newTeamJson :: NewTeam a -> [Pair] -newTeamJson (NewTeam n i ik _) = - "name" .= fromRange n - # "icon" .= fromRange i - # "icon_key" .= (fromRange <$> ik) - # [] +instance ToSchema BindingNewTeam where + schema = BindingNewTeam <$> unwrap .= newTeamSchema "BindingNewTeam" sch + where + unwrap (BindingNewTeam nt) = nt -deriving newtype instance FromJSON BindingNewTeam + sch :: ValueSchema SwaggerDoc () + sch = null_ -- FUTUREWORK: since new team members do not get serialized, we zero them here. -- it may be worth looking into how this can be solved in the types. @@ -227,6 +207,15 @@ instance Arbitrary BindingNewTeam where -- | FUTUREWORK: this is dead code! remove! newtype NonBindingNewTeam = NonBindingNewTeam (NewTeam (Range 1 127 [TeamMember])) deriving stock (Eq, Show, Generic) + deriving (FromJSON, ToJSON, S.ToSchema) via (Schema NonBindingNewTeam) + +instance ToSchema NonBindingNewTeam where + schema = NonBindingNewTeam <$> unwrap .= newTeamSchema "NonBindingNewTeam" sch + where + unwrap (NonBindingNewTeam nt) = nt + + sch :: ValueSchema SwaggerDoc (Range 1 127 [TeamMember]) + sch = fromRange .= rangedSchema sing sing (array schema) modelNewNonBindingTeam :: Doc.Model modelNewNonBindingTeam = Doc.defineModel "newNonBindingTeam" $ do @@ -242,14 +231,6 @@ modelNewNonBindingTeam = Doc.defineModel "newNonBindingTeam" $ do Doc.description "initial team member ids (between 1 and 127)" Doc.optional -instance ToJSON NonBindingNewTeam where - toJSON (NonBindingNewTeam t) = - object $ - "members" .= (fromRange <$> _newTeamMembers t) - # newTeamJson t - -deriving newtype instance FromJSON NonBindingNewTeam - data NewTeam a = NewTeam { _newTeamName :: Range 1 256 Text, _newTeamIcon :: Range 1 256 Text, @@ -262,17 +243,14 @@ data NewTeam a = NewTeam newNewTeam :: Range 1 256 Text -> Range 1 256 Text -> NewTeam a newNewTeam nme ico = NewTeam nme ico Nothing Nothing -instance (FromJSON a) => FromJSON (NewTeam a) where - parseJSON = withObject "new-team" $ \o -> do - name <- o .: "name" - icon <- o .: "icon" - key <- o .:? "icon_key" - mems <- o .:? "members" - either fail pure $ - NewTeam <$> checkedEitherMsg "name" name - <*> checkedEitherMsg "icon" icon - <*> maybe (pure Nothing) (fmap Just . checkedEitherMsg "icon_key") key - <*> pure mems +newTeamSchema :: HasSchemaRef d => Text -> ValueSchema d a -> ValueSchema NamedSwaggerDoc (NewTeam a) +newTeamSchema name sch = + object name $ + NewTeam + <$> _newTeamName .= field "name" schema + <*> _newTeamIcon .= field "icon" schema + <*> _newTeamIconKey .= maybe_ (optField "icon_key" schema) + <*> _newTeamMembers .= maybe_ (optField "members" sch) -------------------------------------------------------------------------------- -- TeamUpdateData @@ -283,6 +261,7 @@ data TeamUpdateData = TeamUpdateData _iconKeyUpdate :: Maybe (Range 1 256 Text) } deriving stock (Eq, Show, Generic) + deriving (ToJSON, FromJSON, S.ToSchema) via (Schema TeamUpdateData) instance Arbitrary TeamUpdateData where arbitrary = arb `suchThat` valid @@ -307,25 +286,21 @@ modelUpdateData = Doc.defineModel "TeamUpdateData" $ do newTeamUpdateData :: TeamUpdateData newTeamUpdateData = TeamUpdateData Nothing Nothing Nothing -instance ToJSON TeamUpdateData where - toJSON u = - object $ - "name" .= _nameUpdate u - # "icon" .= _iconUpdate u - # "icon_key" .= _iconKeyUpdate u - # [] - -instance FromJSON TeamUpdateData where - parseJSON = withObject "team update data" $ \o -> do - name <- o .:? "name" - icon <- o .:? "icon" - icon_key <- o .:? "icon_key" - when (isNothing name && isNothing icon && isNothing icon_key) $ - fail "TeamUpdateData: no update data specified" - either fail pure $ - TeamUpdateData <$> maybe (pure Nothing) (fmap Just . checkedEitherMsg "name") name - <*> maybe (pure Nothing) (fmap Just . checkedEitherMsg "icon") icon - <*> maybe (pure Nothing) (fmap Just . checkedEitherMsg "icon_key") icon_key +validateTeamUpdateData :: TeamUpdateData -> Parser TeamUpdateData +validateTeamUpdateData u = + when + (isNothing (_nameUpdate u) && isNothing (_iconUpdate u) && isNothing (_iconKeyUpdate u)) + (fail "TeamUpdateData: no update data specified") + $> u + +instance ToSchema TeamUpdateData where + schema = + (`withParser` validateTeamUpdateData) + . object "TeamUpdateData" + $ TeamUpdateData + <$> _nameUpdate .= maybe_ (optField "name" schema) + <*> _iconUpdate .= maybe_ (optField "icon" schema) + <*> _iconKeyUpdate .= maybe_ (optField "icon_key" schema) -------------------------------------------------------------------------------- -- TeamDeleteData @@ -335,6 +310,7 @@ newtype TeamDeleteData = TeamDeleteData } deriving stock (Eq, Show) deriving newtype (Arbitrary) + deriving (ToJSON, FromJSON, S.ToSchema) via (Schema TeamDeleteData) newTeamDeleteData :: Maybe PlainTextPassword -> TeamDeleteData newTeamDeleteData = TeamDeleteData @@ -346,15 +322,10 @@ modelTeamDelete = Doc.defineModel "teamDeleteData" $ do Doc.property "password" Doc.string' $ Doc.description "The account password to authorise the deletion." -instance FromJSON TeamDeleteData where - parseJSON = withObject "team-delete-data" $ \o -> - TeamDeleteData <$> o .: "password" - -instance ToJSON TeamDeleteData where - toJSON tdd = - object - [ "password" .= _tdAuthPassword tdd - ] +instance ToSchema TeamDeleteData where + schema = + object "TeamDeleteData" $ + TeamDeleteData <$> _tdAuthPassword .= optField "password" (maybeWithDefault Null schema) makeLenses ''Team makeLenses ''TeamList diff --git a/libs/wire-api/src/Wire/API/Team/Member.hs b/libs/wire-api/src/Wire/API/Team/Member.hs index 905bd2f971..9a7cfda570 100644 --- a/libs/wire-api/src/Wire/API/Team/Member.hs +++ b/libs/wire-api/src/Wire/API/Team/Member.hs @@ -21,12 +21,17 @@ module Wire.API.Team.Member ( -- * TeamMember - TeamMember (..), + TeamMember, + mkTeamMember, userId, permissions, invitation, legalHoldStatus, + ntmNewTeamMember, + + -- * TODO: remove after servantification teamMemberJson, + teamMemberListJson, -- * TeamMemberList TeamMemberList, @@ -38,12 +43,13 @@ module Wire.API.Team.Member NewListType (..), toNewListType, ListType (..), - teamMemberListJson, -- * NewTeamMember NewTeamMember, - newNewTeamMember, - ntmNewTeamMember, + mkNewTeamMember, + nUserId, + nPermissions, + nInvitation, -- * TeamMemberDeleteData TeamMemberDeleteData, @@ -58,35 +64,95 @@ module Wire.API.Team.Member ) where -import Control.Lens (makeLenses) -import Data.Aeson -import Data.Aeson.Types (Parser) -import qualified Data.HashMap.Strict as HM +import Control.Lens (Lens, Lens', makeLenses, (%~)) +import Data.Aeson (FromJSON (..), ToJSON (..), Value (..)) import Data.Id (UserId) import Data.Json.Util import Data.LegalHold (UserLegalHoldStatus (..), defUserLegalHoldStatus, typeUserLegalHoldStatus) import Data.Misc (PlainTextPassword (..)) import Data.Proxy -import Data.String.Conversions (cs) +import Data.Schema import qualified Data.Swagger.Build.Api as Doc -import Data.Swagger.Schema (ToSchema) -import Deriving.Swagger (CamelToSnake, ConstructorTagModifier, CustomSwagger, StripPrefix) +import qualified Data.Swagger.Schema as S import GHC.TypeLits import Imports -import Wire.API.Arbitrary (Arbitrary, GenericUniform (..), arbitrary, shrink) +import Wire.API.Arbitrary (Arbitrary, GenericUniform (..)) import Wire.API.Team.Permission (Permissions, modelPermissions) +data PermissionTag = Required | Optional + +type family PermissionType (tag :: PermissionTag) = (t :: *) | t -> tag where + PermissionType 'Required = Permissions + PermissionType 'Optional = Maybe Permissions + -------------------------------------------------------------------------------- -- TeamMember -data TeamMember = TeamMember - { _userId :: UserId, - _permissions :: Permissions, - _invitation :: Maybe (UserId, UTCTimeMillis), +type TeamMember = TeamMember' 'Required + +data TeamMember' (tag :: PermissionTag) = TeamMember + { _newTeamMember :: NewTeamMember' tag, _legalHoldStatus :: UserLegalHoldStatus } - deriving stock (Eq, Ord, Show, Generic) - deriving (Arbitrary) via (GenericUniform TeamMember) + deriving stock (Generic) + +ntmNewTeamMember :: NewTeamMember' tag -> TeamMember' tag +ntmNewTeamMember ntm = TeamMember ntm defUserLegalHoldStatus + +deriving instance Eq (PermissionType tag) => Eq (TeamMember' tag) + +deriving instance Ord (PermissionType tag) => Ord (TeamMember' tag) + +deriving instance Show (PermissionType tag) => Show (TeamMember' tag) + +deriving via (GenericUniform TeamMember) instance Arbitrary TeamMember + +deriving via (GenericUniform (TeamMember' 'Optional)) instance Arbitrary (TeamMember' 'Optional) + +deriving via + (Schema (TeamMember' tag)) + instance + (ToSchema (TeamMember' tag)) => + ToJSON (TeamMember' tag) + +deriving via + (Schema (TeamMember' tag)) + instance + (ToSchema (TeamMember' tag)) => + FromJSON (TeamMember' tag) + +deriving via + (Schema (TeamMember' tag)) + instance + (ToSchema (TeamMember' tag)) => + S.ToSchema (TeamMember' tag) + +mkTeamMember :: + UserId -> + PermissionType tag -> + Maybe (UserId, UTCTimeMillis) -> + UserLegalHoldStatus -> + TeamMember' tag +mkTeamMember uid perms inv = TeamMember (NewTeamMember uid perms inv) + +instance ToSchema TeamMember where + schema = + object "TeamMember" $ + TeamMember + <$> _newTeamMember .= newTeamMemberSchema + <*> _legalHoldStatus .= (fromMaybe defUserLegalHoldStatus <$> optField "legalhold_status" schema) + +instance ToSchema (TeamMember' 'Optional) where + schema = + object "TeamMember" $ + TeamMember + <$> _newTeamMember + .= ( NewTeamMember + <$> _nUserId .= field "user" schema + <*> _nPermissions .= maybe_ (optField "permissions" schema) + <*> _nInvitation .= invitedSchema' + ) + <*> _legalHoldStatus .= (fromMaybe defUserLegalHoldStatus <$> optField "legalhold_status" schema) modelTeamMember :: Doc.Model modelTeamMember = Doc.defineModel "TeamMember" $ do @@ -111,54 +177,46 @@ modelTeamMember = Doc.defineModel "TeamMember" $ do Doc.description "The state of Legal Hold compliance for the member" Doc.optional -instance ToJSON TeamMember where - toJSON = teamMemberJson (const True) - -instance FromJSON TeamMember where - parseJSON = parseTeamMember - --- | Show 'Permissions' conditionally. The condition takes the member that will receive the result --- into account. See 'canSeePermsOf'. --- --- FUTUREWORK: --- There must be a cleaner way to do this, with a separate type --- instead of logic in the JSON instance. -teamMemberJson :: (TeamMember -> Bool) -> TeamMember -> Value -teamMemberJson withPerms m = - object $ - ["user" .= _userId m] - <> ["permissions" .= _permissions m | withPerms m] - <> ["created_by" .= (fst <$> _invitation m)] - <> ["created_at" .= (snd <$> _invitation m)] - <> ["legalhold_status" .= _legalHoldStatus m] - -parseTeamMember :: Value -> Parser TeamMember -parseTeamMember = withObject "team-member" $ \o -> - TeamMember - <$> o .: "user" - <*> o .: "permissions" - <*> parseInvited o - -- Default to disabled if missing - <*> o .:? "legalhold_status" .!= defUserLegalHoldStatus - where - parseInvited :: Object -> Parser (Maybe (UserId, UTCTimeMillis)) - parseInvited o = do - invby <- o .:? "created_by" - invat <- o .:? "created_at" - case (invby, invat) of - (Just b, Just a) -> pure $ Just (b, a) - (Nothing, Nothing) -> pure $ Nothing - _ -> fail "created_by, created_at" +setPerm :: Bool -> Permissions -> Maybe Permissions +setPerm True = Just +setPerm False = const Nothing -------------------------------------------------------------------------------- -- TeamMemberList -data TeamMemberList = TeamMemberList - { _teamMembers :: [TeamMember], +type TeamMemberList = TeamMemberList' 'Required + +data TeamMemberList' (tag :: PermissionTag) = TeamMemberList + { _teamMembers :: [TeamMember' tag], _teamMemberListType :: ListType } - deriving stock (Eq, Show, Generic) - deriving (Arbitrary) via (GenericUniform TeamMemberList) + deriving stock (Generic) + +deriving instance Eq (PermissionType tag) => Eq (TeamMemberList' tag) + +deriving instance Show (PermissionType tag) => Show (TeamMemberList' tag) + +deriving via (GenericUniform (TeamMemberList' 'Optional)) instance Arbitrary (TeamMemberList' 'Optional) + +deriving via (GenericUniform TeamMemberList) instance Arbitrary TeamMemberList + +deriving via + (Schema (TeamMemberList' tag)) + instance + ToSchema (TeamMemberList' tag) => + FromJSON (TeamMemberList' tag) + +deriving via + (Schema (TeamMemberList' tag)) + instance + ToSchema (TeamMemberList' tag) => + ToJSON (TeamMemberList' tag) + +deriving via + (Schema (TeamMemberList' tag)) + instance + ToSchema (TeamMemberList' tag) => + S.ToSchema (TeamMemberList' tag) newTeamMemberList :: [TeamMember] -> ListType -> TeamMemberList newTeamMemberList = TeamMemberList @@ -171,20 +229,12 @@ modelTeamMemberList = Doc.defineModel "TeamMemberList" $ do Doc.property "hasMore" Doc.bool' $ Doc.description "true if 'members' doesn't contain all team members" -instance ToJSON TeamMemberList where - toJSON = teamMemberListJson (const True) - --- | Show a list of team members using 'teamMemberJson'. -teamMemberListJson :: (TeamMember -> Bool) -> TeamMemberList -> Value -teamMemberListJson withPerms l = - object - [ "members" .= map (teamMemberJson withPerms) (_teamMembers l), - "hasMore" .= _teamMemberListType l - ] - -instance FromJSON TeamMemberList where - parseJSON = withObject "team member list" $ \o -> - TeamMemberList <$> o .: "members" <*> o .: "hasMore" +instance ToSchema (TeamMember' tag) => ToSchema (TeamMemberList' tag) where + schema = + object "TeamMemberList" $ + TeamMemberList + <$> _teamMembers .= field "members" (array schema) + <*> _teamMemberListType .= field "hasMore" schema type HardTruncationLimit = (2000 :: Nat) @@ -197,18 +247,15 @@ data NewListType | NewListTruncated deriving stock (Eq, Ord, Show, Generic) deriving (Arbitrary) via (GenericUniform NewListType) - deriving (ToSchema) via (CustomSwagger '[ConstructorTagModifier (StripPrefix "New", CamelToSnake)] NewListType) - --- This replaces the previous `hasMore` but has no boolean blindness. At the API level --- though we do want this to remain true/false -instance ToJSON NewListType where - toJSON NewListComplete = String "list_complete" - toJSON NewListTruncated = String "list_truncated" + deriving (FromJSON, ToJSON, S.ToSchema) via (Schema NewListType) -instance FromJSON NewListType where - parseJSON (String "list_complete") = pure NewListComplete - parseJSON (String "list_truncated") = pure NewListTruncated - parseJSON bad = fail $ "NewListType: " <> cs (encode bad) +instance ToSchema NewListType where + schema = + enum @Text "NewListType" $ + mconcat + [ element "list_complete" NewListComplete, + element "list_truncated" NewListTruncated + ] toNewListType :: ListType -> NewListType toNewListType ListComplete = NewListComplete @@ -219,37 +266,83 @@ data ListType | ListTruncated deriving stock (Eq, Ord, Show, Generic) deriving (Arbitrary) via (GenericUniform ListType) + deriving (FromJSON, ToJSON, S.ToSchema) via (Schema ListType) -- This replaces the previous `hasMore` but has no boolean blindness. At the API level -- though we do want this to remain true/false -instance ToJSON ListType where - toJSON ListComplete = Bool False - toJSON ListTruncated = Bool True - -instance FromJSON ListType where - parseJSON (Bool False) = pure ListComplete - parseJSON (Bool True) = pure ListTruncated - parseJSON bad = fail $ "ListType: " <> cs (encode bad) +instance ToSchema ListType where + schema = + enum @Bool "ListType" $ + mconcat [element True ListTruncated, element False ListComplete] -------------------------------------------------------------------------------- -- NewTeamMember +type NewTeamMember = NewTeamMember' 'Required + +mkNewTeamMember :: UserId -> PermissionType 'Required -> Maybe (UserId, UTCTimeMillis) -> NewTeamMember +mkNewTeamMember = NewTeamMember + -- | Like 'TeamMember', but we can receive this from the clients. Clients are not allowed to --- set 'UserLegalHoldStatus', so both 'newNewTeamMember and {To,From}JSON make sure that is --- always the default. I decided to keep the 'TeamMember' inside (rather than making an --- entirely new type because (1) it's a smaller change and I'm in a hurry; (2) it encodes the --- identity relationship between the fields that *do* occur in both more explicit. -newtype NewTeamMember = NewTeamMember - { _ntmNewTeamMember :: TeamMember +-- set 'UserLegalHoldStatus'. +data NewTeamMember' (tag :: PermissionTag) = NewTeamMember + { _nUserId :: UserId, + _nPermissions :: PermissionType tag, + _nInvitation :: Maybe (UserId, UTCTimeMillis) } - deriving stock (Eq, Show) + deriving stock (Generic) + +deriving instance (Eq (PermissionType tag)) => Eq (NewTeamMember' tag) + +deriving instance (Ord (PermissionType tag)) => Ord (NewTeamMember' tag) + +deriving instance (Show (PermissionType tag)) => Show (NewTeamMember' tag) + +deriving via + (Schema (NewTeamMember' tag)) + instance + (ToSchema (NewTeamMember' tag)) => + ToJSON (NewTeamMember' tag) + +deriving via + (Schema (NewTeamMember' tag)) + instance + (ToSchema (NewTeamMember' tag)) => + FromJSON (NewTeamMember' tag) + +deriving via + (Schema (NewTeamMember' tag)) + instance + (ToSchema (NewTeamMember' tag)) => + S.ToSchema (NewTeamMember' tag) + +deriving via (GenericUniform NewTeamMember) instance Arbitrary NewTeamMember + +deriving via (GenericUniform (NewTeamMember' 'Optional)) instance Arbitrary (NewTeamMember' 'Optional) + +newTeamMemberSchema :: ObjectSchema SwaggerDoc NewTeamMember +newTeamMemberSchema = + NewTeamMember + <$> _nUserId .= field "user" schema + <*> _nPermissions .= field "permissions" schema + <*> _nInvitation .= invitedSchema' -instance Arbitrary NewTeamMember where - arbitrary = newNewTeamMember <$> arbitrary <*> arbitrary <*> arbitrary - shrink (NewTeamMember (TeamMember uid perms _mbinv _)) = [newNewTeamMember uid perms Nothing] +invitedSchema :: ObjectSchemaP SwaggerDoc (Maybe (UserId, UTCTimeMillis)) (Maybe UserId, Maybe UTCTimeMillis) +invitedSchema = + (,) <$> fmap fst .= optField "created_by" (maybeWithDefault Null schema) + <*> fmap snd .= optField "created_at" (maybeWithDefault Null schema) -newNewTeamMember :: UserId -> Permissions -> Maybe (UserId, UTCTimeMillis) -> NewTeamMember -newNewTeamMember uid perms mbinv = NewTeamMember $ TeamMember uid perms mbinv defUserLegalHoldStatus +invitedSchema' :: ObjectSchema SwaggerDoc (Maybe (UserId, UTCTimeMillis)) +invitedSchema' = withParser invitedSchema $ \(invby, invat) -> + case (invby, invat) of + (Just b, Just a) -> pure $ Just (b, a) + (Nothing, Nothing) -> pure $ Nothing + _ -> fail "created_by, created_at" + +instance ToSchema NewTeamMember where + schema = + object "NewTeamMember" $ + field "member" $ unnamed (object "Unnamed" newTeamMemberSchema) modelNewTeamMember :: Doc.Model modelNewTeamMember = Doc.defineModel "NewTeamMember" $ do @@ -257,22 +350,6 @@ modelNewTeamMember = Doc.defineModel "NewTeamMember" $ do Doc.property "member" (Doc.ref modelTeamMember) $ Doc.description "the team member to add (the legalhold_status field must be null or missing!)" -instance ToJSON NewTeamMember where - toJSON t = object ["member" .= mem] - where - mem = Object . HM.fromList . fltr . HM.toList $ o - o = case toJSON (_ntmNewTeamMember t) of - Object o_ -> o_ - _ -> error "impossible" - fltr = filter ((`elem` ["user", "permissions", "created_by", "created_at"]) . fst) - -instance FromJSON NewTeamMember where - parseJSON = withObject "add team member" $ \o -> do - mem <- o .: "member" - if (_legalHoldStatus mem == defUserLegalHoldStatus) - then pure $ NewTeamMember mem - else fail "legalhold_status field cannot be set in NewTeamMember" - -------------------------------------------------------------------------------- -- TeamMemberDeleteData @@ -281,6 +358,12 @@ newtype TeamMemberDeleteData = TeamMemberDeleteData } deriving stock (Eq, Show) deriving newtype (Arbitrary) + deriving (ToJSON, FromJSON, S.ToSchema) via (Schema TeamMemberDeleteData) + +instance ToSchema TeamMemberDeleteData where + schema = + object "TeamMemberDeleteData" $ + TeamMemberDeleteData <$> _tmdAuthPassword .= optField "password" (maybeWithDefault Null schema) newTeamMemberDeleteData :: Maybe PlainTextPassword -> TeamMemberDeleteData newTeamMemberDeleteData = TeamMemberDeleteData @@ -292,17 +375,30 @@ modelTeamMemberDelete = Doc.defineModel "teamDeleteData" $ do Doc.property "password" Doc.string' $ Doc.description "The account password to authorise the deletion." -instance FromJSON TeamMemberDeleteData where - parseJSON = withObject "team-member-delete-data" $ \o -> - TeamMemberDeleteData <$> (o .:? "password") +makeLenses ''TeamMember' +makeLenses ''TeamMemberList' +makeLenses ''NewTeamMember' +makeLenses ''TeamMemberDeleteData -instance ToJSON TeamMemberDeleteData where - toJSON tmd = - object - [ "password" .= _tmdAuthPassword tmd - ] +userId :: Lens' TeamMember UserId +userId = newTeamMember . nUserId -makeLenses ''TeamMember -makeLenses ''TeamMemberList -makeLenses ''NewTeamMember -makeLenses ''TeamMemberDeleteData +permissions :: Lens (TeamMember' tag1) (TeamMember' tag2) (PermissionType tag1) (PermissionType tag2) +permissions = newTeamMember . nPermissions + +invitation :: Lens' TeamMember (Maybe (UserId, UTCTimeMillis)) +invitation = newTeamMember . nInvitation + +-- JSON serialisation utilities (FUTUREWORK(leif): remove after servantification) + +teamMemberJson :: (TeamMember -> Bool) -> TeamMember -> Value +teamMemberJson withPerms = toJSON . setOptionalPerms withPerms + +setOptionalPerms :: (TeamMember -> Bool) -> TeamMember -> TeamMember' 'Optional +setOptionalPerms withPerms m = m & permissions %~ setPerm (withPerms m) + +-- | Show a list of team members using 'teamMemberJson'. +teamMemberListJson :: (TeamMember -> Bool) -> TeamMemberList -> Value +teamMemberListJson withPerms l = + toJSON $ + l {_teamMembers = map (setOptionalPerms withPerms) (_teamMembers l)} diff --git a/libs/wire-api/src/Wire/API/Team/Permission.hs b/libs/wire-api/src/Wire/API/Team/Permission.hs index 00ef0ed71c..272d7281b2 100644 --- a/libs/wire-api/src/Wire/API/Team/Permission.hs +++ b/libs/wire-api/src/Wire/API/Team/Permission.hs @@ -44,10 +44,11 @@ where import qualified Cassandra as Cql import qualified Control.Error.Util as Err import Control.Lens (makeLenses, (^.)) -import Data.Aeson +import Data.Aeson (FromJSON (..), ToJSON (..)) import Data.Bits (testBit, (.|.)) -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 Imports import Wire.API.Arbitrary (Arbitrary (arbitrary), GenericUniform (..)) @@ -60,6 +61,19 @@ data Permissions = Permissions _copy :: Set Perm } deriving stock (Eq, Ord, Show, Generic) + deriving (FromJSON, ToJSON, S.ToSchema) via (Schema Permissions) + +permissionsSchema :: ValueSchemaP NamedSwaggerDoc Permissions (Set Perm, Set Perm) +permissionsSchema = + object "Permissions" $ + (,) <$> (permsToInt . _self) .= field "self" (intToPerms <$> schema) + <*> (permsToInt . _copy) .= field "copy" (intToPerms <$> schema) + +instance ToSchema Permissions where + schema = withParser permissionsSchema $ \(s, d) -> + case newPermissions s d of + Nothing -> fail "invalid permissions" + Just ps -> pure ps modelPermissions :: Doc.Model modelPermissions = Doc.defineModel "Permissions" $ do @@ -72,21 +86,6 @@ modelPermissions = Doc.defineModel "Permissions" $ do Doc.property "copy" (Doc.int64 $ Doc.min 0 . Doc.max 0x7FFFFFFFFFFFFFFF) $ Doc.description "The permissions bitmask which this user can assign to others" -instance ToJSON Permissions where - toJSON p = - object $ - "self" .= permsToInt (_self p) - # "copy" .= permsToInt (_copy p) - # [] - -instance FromJSON Permissions where - parseJSON = withObject "permissions" $ \o -> do - s <- intToPerms <$> o .: "self" - d <- intToPerms <$> o .: "copy" - case newPermissions s d of - Nothing -> fail "invalid permissions" - Just ps -> pure ps - instance Arbitrary Permissions where arbitrary = maybe (error "instance Arbitrary Permissions") pure =<< do diff --git a/libs/wire-api/src/Wire/API/User.hs b/libs/wire-api/src/Wire/API/User.hs index 18464c0b18..40780bd55f 100644 --- a/libs/wire-api/src/Wire/API/User.hs +++ b/libs/wire-api/src/Wire/API/User.hs @@ -129,7 +129,7 @@ import qualified SAML2.WebSSO as SAML import qualified Test.QuickCheck as QC import Wire.API.Arbitrary (Arbitrary (arbitrary), GenericUniform (..)) import Wire.API.Provider.Service (ServiceRef, modelServiceRef) -import Wire.API.Team (BindingNewTeam (BindingNewTeam), modelNewBindingTeam, newTeamJson) +import Wire.API.Team (BindingNewTeam (BindingNewTeam), NewTeam (..), modelNewBindingTeam) import Wire.API.User.Activation (ActivationCode) import Wire.API.User.Auth (CookieLabel) import Wire.API.User.Identity @@ -802,6 +802,15 @@ instance ToJSON BindingNewTeamUser where A.object $ "currency" A..= c # newTeamJson t + where + -- FUTUREWORK(leif): this was originally defined in libs/wire-api/src/Wire/API/Team.hs and I moved it here + -- during the process of servantifying, it should go away when servantification is complete + newTeamJson :: NewTeam a -> [A.Pair] + newTeamJson (NewTeam n i ik _) = + "name" A..= fromRange n + # "icon" A..= fromRange i + # "icon_key" A..= (fromRange <$> ik) + # [] instance FromJSON BindingNewTeamUser where parseJSON j@(A.Object o) = do diff --git a/libs/wire-api/test/golden/Test/Wire/API/Golden/Generated/NewTeamMember_team.hs b/libs/wire-api/test/golden/Test/Wire/API/Golden/Generated/NewTeamMember_team.hs index ebbffc91d2..4092949a18 100644 --- a/libs/wire-api/test/golden/Test/Wire/API/Golden/Generated/NewTeamMember_team.hs +++ b/libs/wire-api/test/golden/Test/Wire/API/Golden/Generated/NewTeamMember_team.hs @@ -23,7 +23,7 @@ import Data.Json.Util (readUTCTimeMillis) import qualified Data.UUID as UUID (fromString) import GHC.Exts (IsList (fromList)) import Imports (Maybe (Just, Nothing), fromJust) -import Wire.API.Team.Member (NewTeamMember, newNewTeamMember) +import Wire.API.Team.Member (NewTeamMember, mkNewTeamMember) import Wire.API.Team.Permission ( Perm ( AddTeamMember, @@ -45,7 +45,7 @@ import Wire.API.Team.Permission testObject_NewTeamMember_team_1 :: NewTeamMember testObject_NewTeamMember_team_1 = - ( newNewTeamMember + ( mkNewTeamMember (Id (fromJust (UUID.fromString "00000002-0000-0007-0000-000200000002"))) (Permissions {_self = fromList [], _copy = fromList []}) ( Just @@ -57,7 +57,7 @@ testObject_NewTeamMember_team_1 = testObject_NewTeamMember_team_2 :: NewTeamMember testObject_NewTeamMember_team_2 = - ( newNewTeamMember + ( mkNewTeamMember (Id (fromJust (UUID.fromString "00000004-0000-0000-0000-000200000003"))) ( Permissions { _self = @@ -81,7 +81,7 @@ testObject_NewTeamMember_team_2 = testObject_NewTeamMember_team_3 :: NewTeamMember testObject_NewTeamMember_team_3 = - ( newNewTeamMember + ( mkNewTeamMember (Id (fromJust (UUID.fromString "00000008-0000-0008-0000-000700000005"))) ( Permissions { _self = @@ -99,7 +99,7 @@ testObject_NewTeamMember_team_3 = testObject_NewTeamMember_team_4 :: NewTeamMember testObject_NewTeamMember_team_4 = - ( newNewTeamMember + ( mkNewTeamMember (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000700000005"))) ( Permissions { _self = fromList [CreateConversation, AddTeamMember, SetTeamData], @@ -111,7 +111,7 @@ testObject_NewTeamMember_team_4 = testObject_NewTeamMember_team_5 :: NewTeamMember testObject_NewTeamMember_team_5 = - ( newNewTeamMember + ( mkNewTeamMember (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000002"))) (Permissions {_self = fromList [AddTeamMember, SetBilling, GetTeamConversations], _copy = fromList [AddTeamMember]}) ( Just @@ -123,7 +123,7 @@ testObject_NewTeamMember_team_5 = testObject_NewTeamMember_team_6 :: NewTeamMember testObject_NewTeamMember_team_6 = - ( newNewTeamMember + ( mkNewTeamMember (Id (fromJust (UUID.fromString "00000002-0000-0006-0000-000400000003"))) ( Permissions { _self = @@ -141,7 +141,7 @@ testObject_NewTeamMember_team_6 = testObject_NewTeamMember_team_7 :: NewTeamMember testObject_NewTeamMember_team_7 = - ( newNewTeamMember + ( mkNewTeamMember (Id (fromJust (UUID.fromString "00000007-0000-0004-0000-000500000005"))) ( Permissions { _self = @@ -159,7 +159,7 @@ testObject_NewTeamMember_team_7 = testObject_NewTeamMember_team_8 :: NewTeamMember testObject_NewTeamMember_team_8 = - ( newNewTeamMember + ( mkNewTeamMember (Id (fromJust (UUID.fromString "00000008-0000-0003-0000-000200000003"))) ( Permissions { _self = fromList [DoNotUseDeprecatedModifyConvName], @@ -175,7 +175,7 @@ testObject_NewTeamMember_team_8 = testObject_NewTeamMember_team_9 :: NewTeamMember testObject_NewTeamMember_team_9 = - ( newNewTeamMember + ( mkNewTeamMember (Id (fromJust (UUID.fromString "00000001-0000-0008-0000-000300000004"))) (Permissions {_self = fromList [SetBilling], _copy = fromList []}) ( Just @@ -187,7 +187,7 @@ testObject_NewTeamMember_team_9 = testObject_NewTeamMember_team_10 :: NewTeamMember testObject_NewTeamMember_team_10 = - ( newNewTeamMember + ( mkNewTeamMember (Id (fromJust (UUID.fromString "00000008-0000-0003-0000-000600000003"))) (Permissions {_self = fromList [GetBilling], _copy = fromList []}) ( Just @@ -199,7 +199,7 @@ testObject_NewTeamMember_team_10 = testObject_NewTeamMember_team_11 :: NewTeamMember testObject_NewTeamMember_team_11 = - ( newNewTeamMember + ( mkNewTeamMember (Id (fromJust (UUID.fromString "00000006-0000-0005-0000-000000000002"))) ( Permissions { _self = fromList [CreateConversation, DoNotUseDeprecatedModifyConvName, SetTeamData], @@ -215,7 +215,7 @@ testObject_NewTeamMember_team_11 = testObject_NewTeamMember_team_12 :: NewTeamMember testObject_NewTeamMember_team_12 = - ( newNewTeamMember + ( mkNewTeamMember (Id (fromJust (UUID.fromString "00000001-0000-0004-0000-000000000007"))) (Permissions {_self = fromList [SetBilling, SetTeamData, GetTeamConversations], _copy = fromList []}) (Nothing) @@ -223,7 +223,7 @@ testObject_NewTeamMember_team_12 = testObject_NewTeamMember_team_13 :: NewTeamMember testObject_NewTeamMember_team_13 = - ( newNewTeamMember + ( mkNewTeamMember (Id (fromJust (UUID.fromString "00000002-0000-0004-0000-000600000001"))) ( Permissions { _self = fromList [AddTeamMember, DoNotUseDeprecatedAddRemoveConvMember, SetTeamData, GetTeamConversations], @@ -235,7 +235,7 @@ testObject_NewTeamMember_team_13 = testObject_NewTeamMember_team_14 :: NewTeamMember testObject_NewTeamMember_team_14 = - ( newNewTeamMember + ( mkNewTeamMember (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000500000004"))) ( Permissions { _self = @@ -253,7 +253,7 @@ testObject_NewTeamMember_team_14 = testObject_NewTeamMember_team_15 :: NewTeamMember testObject_NewTeamMember_team_15 = - ( newNewTeamMember + ( mkNewTeamMember (Id (fromJust (UUID.fromString "00000000-0000-0008-0000-000800000007"))) ( Permissions { _self = fromList [RemoveTeamMember, GetMemberPermissions, DeleteTeam], @@ -269,7 +269,7 @@ testObject_NewTeamMember_team_15 = testObject_NewTeamMember_team_16 :: NewTeamMember testObject_NewTeamMember_team_16 = - ( newNewTeamMember + ( mkNewTeamMember (Id (fromJust (UUID.fromString "00000000-0000-0006-0000-000300000005"))) ( Permissions { _self = fromList [CreateConversation, RemoveTeamMember, GetBilling, GetTeamConversations, DeleteTeam], @@ -281,7 +281,7 @@ testObject_NewTeamMember_team_16 = testObject_NewTeamMember_team_17 :: NewTeamMember testObject_NewTeamMember_team_17 = - ( newNewTeamMember + ( mkNewTeamMember (Id (fromJust (UUID.fromString "00000000-0000-0008-0000-000400000005"))) (Permissions {_self = fromList [], _copy = fromList []}) ( Just @@ -293,7 +293,7 @@ testObject_NewTeamMember_team_17 = testObject_NewTeamMember_team_18 :: NewTeamMember testObject_NewTeamMember_team_18 = - ( newNewTeamMember + ( mkNewTeamMember (Id (fromJust (UUID.fromString "00000006-0000-0003-0000-000000000001"))) (Permissions {_self = fromList [], _copy = fromList []}) ( Just @@ -305,7 +305,7 @@ testObject_NewTeamMember_team_18 = testObject_NewTeamMember_team_19 :: NewTeamMember testObject_NewTeamMember_team_19 = - ( newNewTeamMember + ( mkNewTeamMember (Id (fromJust (UUID.fromString "00000004-0000-0005-0000-000100000008"))) ( Permissions { _self = fromList [DoNotUseDeprecatedDeleteConversation, RemoveTeamMember, SetBilling, SetMemberPermissions], @@ -317,7 +317,7 @@ testObject_NewTeamMember_team_19 = testObject_NewTeamMember_team_20 :: NewTeamMember testObject_NewTeamMember_team_20 = - ( newNewTeamMember + ( mkNewTeamMember (Id (fromJust (UUID.fromString "00000008-0000-0000-0000-000000000004"))) ( Permissions { _self = diff --git a/libs/wire-api/test/golden/Test/Wire/API/Golden/Generated/TeamMemberList_team.hs b/libs/wire-api/test/golden/Test/Wire/API/Golden/Generated/TeamMemberList_team.hs index 9cb5bc130e..5b6a14c481 100644 --- a/libs/wire-api/test/golden/Test/Wire/API/Golden/Generated/TeamMemberList_team.hs +++ b/libs/wire-api/test/golden/Test/Wire/API/Golden/Generated/TeamMemberList_team.hs @@ -32,14 +32,8 @@ import GHC.Exts (IsList (fromList)) import Imports (Maybe (Just, Nothing), fromJust) import Wire.API.Team.Member ( ListType (ListComplete, ListTruncated), - TeamMember - ( TeamMember, - _invitation, - _legalHoldStatus, - _permissions, - _userId - ), TeamMemberList, + mkTeamMember, newTeamMemberList, ) import Wire.API.Team.Permission @@ -56,95 +50,85 @@ import Wire.API.Team.Permission ) testObject_TeamMemberList_team_1 :: TeamMemberList -testObject_TeamMemberList_team_1 = (newTeamMemberList ([]) (ListComplete)) +testObject_TeamMemberList_team_1 = newTeamMemberList ([]) (ListComplete) testObject_TeamMemberList_team_2 :: TeamMemberList testObject_TeamMemberList_team_2 = - ( newTeamMemberList - ( [ TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000002-0000-0000-0000-000000000002"))), - _permissions = Permissions {_self = fromList [GetBilling, SetMemberPermissions], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000002"))), - (fromJust (readUTCTimeMillis "1864-05-10T10:05:44.332Z")) - ), - _legalHoldStatus = UserLegalHoldPending - } - ] - ) - (ListComplete) - ) + newTeamMemberList + [ mkTeamMember + (Id (fromJust (UUID.fromString "00000002-0000-0000-0000-000000000002"))) + (Permissions {_self = fromList [GetBilling, SetMemberPermissions], _copy = fromList []}) + ( Just + ( Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000002")), + fromJust (readUTCTimeMillis "1864-05-10T10:05:44.332Z") + ) + ) + UserLegalHoldPending + ] + ListComplete testObject_TeamMemberList_team_3 :: TeamMemberList testObject_TeamMemberList_team_3 = ( newTeamMemberList - ( [ TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T06:07:36.175Z")) - ), - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T14:28:10.448Z")) - ), - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T16:05:37.642Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T13:06:20.504Z")) - ), - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T16:37:10.774Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T04:36:55.388Z")) - ), - _legalHoldStatus = UserLegalHoldPending - } + ( [ mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T06:07:36.175Z")) + ) + ) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T14:28:10.448Z")) + ) + ) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T16:05:37.642Z")) + ) + ) + UserLegalHoldDisabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + (Nothing) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T13:06:20.504Z")) + ) + ) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T16:37:10.774Z")) + ) + ) + UserLegalHoldDisabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T04:36:55.388Z")) + ) + ) + UserLegalHoldPending ] ) (ListComplete) @@ -153,26 +137,24 @@ testObject_TeamMemberList_team_3 = testObject_TeamMemberList_team_4 :: TeamMemberList testObject_TeamMemberList_team_4 = ( newTeamMemberList - ( [ TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))), - _permissions = Permissions {_self = fromList [GetTeamConversations], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), - (fromJust (readUTCTimeMillis "1864-05-08T16:05:11.696Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))), - (fromJust (readUTCTimeMillis "1864-05-08T07:09:26.753Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - } + ( [ mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))) + (Permissions {_self = fromList [GetTeamConversations], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), + (fromJust (readUTCTimeMillis "1864-05-08T16:05:11.696Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))), + (fromJust (readUTCTimeMillis "1864-05-08T07:09:26.753Z")) + ) + ) + UserLegalHoldDisabled ] ) (ListTruncated) @@ -181,46 +163,42 @@ testObject_TeamMemberList_team_4 = testObject_TeamMemberList_team_5 :: TeamMemberList testObject_TeamMemberList_team_5 = ( newTeamMemberList - ( [ TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T23:10:04.963Z")) - ), - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T15:40:17.119Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T00:40:38.004Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T07:30:49.028Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - } + ( [ mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T23:10:04.963Z")) + ) + ) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T15:40:17.119Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T00:40:38.004Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T07:30:49.028Z")) + ) + ) + UserLegalHoldEnabled ] ) (ListComplete) @@ -229,106 +207,96 @@ testObject_TeamMemberList_team_5 = testObject_TeamMemberList_team_6 :: TeamMemberList testObject_TeamMemberList_team_6 = ( newTeamMemberList - ( [ TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T17:07:48.156Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T00:04:10.559Z")) - ), - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T10:39:19.860Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T13:40:56.648Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T12:13:40.273Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T13:28:04.561Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T02:59:55.584Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T22:57:33.947Z")) - ), - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T01:02:39.691Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T13:39:38.488Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - } + ( [ mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T17:07:48.156Z")) + ) + ) + UserLegalHoldDisabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T00:04:10.559Z")) + ) + ) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T10:39:19.860Z")) + ) + ) + UserLegalHoldDisabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T13:40:56.648Z")) + ) + ) + UserLegalHoldDisabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T12:13:40.273Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T13:28:04.561Z")) + ) + ) + UserLegalHoldDisabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T02:59:55.584Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T22:57:33.947Z")) + ) + ) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T01:02:39.691Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T13:39:38.488Z")) + ) + ) + UserLegalHoldEnabled ] ) (ListComplete) @@ -337,28 +305,25 @@ testObject_TeamMemberList_team_6 = testObject_TeamMemberList_team_7 :: TeamMemberList testObject_TeamMemberList_team_7 = ( newTeamMemberList - ( [ TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))), - _permissions = Permissions {_self = fromList [SetTeamData], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000000"))), - (fromJust (readUTCTimeMillis "1864-05-10T03:11:36.961Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldEnabled - } + ( [ mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + (Nothing) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))) + (Permissions {_self = fromList [SetTeamData], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000000"))), + (fromJust (readUTCTimeMillis "1864-05-10T03:11:36.961Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + (Nothing) + UserLegalHoldEnabled ] ) (ListTruncated) @@ -367,108 +332,97 @@ testObject_TeamMemberList_team_7 = testObject_TeamMemberList_team_8 :: TeamMemberList testObject_TeamMemberList_team_8 = ( newTeamMemberList - ( [ TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T07:35:03.629Z")) - ), - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T00:48:38.818Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T06:12:10.151Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T03:45:53.520Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T17:14:59.798Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T17:51:55.340Z")) - ), - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T01:38:35.880Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T18:06:10.660Z")) - ), - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T07:30:46.880Z")) - ), - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldDisabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldPending - } + ( [ mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T07:35:03.629Z")) + ) + ) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T00:48:38.818Z")) + ) + ) + UserLegalHoldDisabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T06:12:10.151Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T03:45:53.520Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T17:14:59.798Z")) + ) + ) + UserLegalHoldDisabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T17:51:55.340Z")) + ) + ) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T01:38:35.880Z")) + ) + ) + UserLegalHoldDisabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T18:06:10.660Z")) + ) + ) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T07:30:46.880Z")) + ) + ) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + (Nothing) + UserLegalHoldDisabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + (Nothing) + UserLegalHoldPending ] ) (ListTruncated) @@ -477,26 +431,24 @@ testObject_TeamMemberList_team_8 = testObject_TeamMemberList_team_9 :: TeamMemberList testObject_TeamMemberList_team_9 = ( newTeamMemberList - ( [ TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000001"))), - _permissions = Permissions {_self = fromList [AddTeamMember], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000001"))), - (fromJust (readUTCTimeMillis "1864-05-08T22:16:59.050Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))), - _permissions = Permissions {_self = fromList [CreateConversation], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))), - (fromJust (readUTCTimeMillis "1864-05-08T21:43:37.550Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - } + ( [ mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000001"))) + (Permissions {_self = fromList [AddTeamMember], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000001"))), + (fromJust (readUTCTimeMillis "1864-05-08T22:16:59.050Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))) + (Permissions {_self = fromList [CreateConversation], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))), + (fromJust (readUTCTimeMillis "1864-05-08T21:43:37.550Z")) + ) + ) + UserLegalHoldEnabled ] ) (ListTruncated) @@ -505,214 +457,192 @@ testObject_TeamMemberList_team_9 = testObject_TeamMemberList_team_10 :: TeamMemberList testObject_TeamMemberList_team_10 = ( newTeamMemberList - ( [ TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T04:44:28.366Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T06:22:04.036Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T12:10:11.701Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T21:54:05.305Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T00:26:06.221Z")) - ), - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T20:12:04.856Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T23:35:44.986Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T07:36:17.730Z")) - ), - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T19:36:57.529Z")) - ), - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldDisabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T19:45:56.914Z")) - ), - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T13:42:17.107Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T03:42:46.106Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T09:41:44.679Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T09:26:44.717Z")) - ), - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T00:40:00.056Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T07:47:20.635Z")) - ), - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T15:58:21.895Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T19:25:51.873Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T03:19:55.569Z")) - ), - _legalHoldStatus = UserLegalHoldPending - } + ( [ mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T04:44:28.366Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T06:22:04.036Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T12:10:11.701Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T21:54:05.305Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T00:26:06.221Z")) + ) + ) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + (Nothing) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T20:12:04.856Z")) + ) + ) + UserLegalHoldDisabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T23:35:44.986Z")) + ) + ) + UserLegalHoldDisabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T07:36:17.730Z")) + ) + ) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T19:36:57.529Z")) + ) + ) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + (Nothing) + UserLegalHoldDisabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T19:45:56.914Z")) + ) + ) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T13:42:17.107Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T03:42:46.106Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T09:41:44.679Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T09:26:44.717Z")) + ) + ) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T00:40:00.056Z")) + ) + ) + UserLegalHoldDisabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + (Nothing) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T07:47:20.635Z")) + ) + ) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T15:58:21.895Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T19:25:51.873Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T03:19:55.569Z")) + ) + ) + UserLegalHoldPending ] ) (ListComplete) @@ -721,120 +651,107 @@ testObject_TeamMemberList_team_10 = testObject_TeamMemberList_team_11 :: TeamMemberList testObject_TeamMemberList_team_11 = ( newTeamMemberList - ( [ TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T06:08:50.626Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T08:23:53.653Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T16:28:42.815Z")) - ), - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldDisabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T11:47:57.498Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T17:22:07.538Z")) - ), - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T19:14:48.836Z")) - ), - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T14:53:49.059Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T10:44:04.209Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T23:34:24.831Z")) - ), - _legalHoldStatus = UserLegalHoldPending - } + ( [ mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T06:08:50.626Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + (Nothing) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T08:23:53.653Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + (Nothing) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T16:28:42.815Z")) + ) + ) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + (Nothing) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + (Nothing) + UserLegalHoldDisabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T11:47:57.498Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T17:22:07.538Z")) + ) + ) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T19:14:48.836Z")) + ) + ) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T14:53:49.059Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T10:44:04.209Z")) + ) + ) + UserLegalHoldDisabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T23:34:24.831Z")) + ) + ) + UserLegalHoldPending ] ) (ListTruncated) @@ -843,38 +760,34 @@ testObject_TeamMemberList_team_11 = testObject_TeamMemberList_team_12 :: TeamMemberList testObject_TeamMemberList_team_12 = ( newTeamMemberList - ( [ TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T15:59:09.462Z")) - ), - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T00:27:17.631Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - } + ( [ mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + (Nothing) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T15:59:09.462Z")) + ) + ) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + (Nothing) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T00:27:17.631Z")) + ) + ) + UserLegalHoldEnabled ] ) (ListTruncated) @@ -883,32 +796,29 @@ testObject_TeamMemberList_team_12 = testObject_TeamMemberList_team_13 :: TeamMemberList testObject_TeamMemberList_team_13 = ( newTeamMemberList - ( [ TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldDisabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000000"))), - _permissions = Permissions {_self = fromList [GetMemberPermissions], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000001"))), - (fromJust (readUTCTimeMillis "1864-05-10T04:37:19.686Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T13:22:20.368Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - } + ( [ mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + (Nothing) + UserLegalHoldDisabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000000"))) + (Permissions {_self = fromList [GetMemberPermissions], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000001"))), + (fromJust (readUTCTimeMillis "1864-05-10T04:37:19.686Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T13:22:20.368Z")) + ) + ) + UserLegalHoldEnabled ] ) (ListTruncated) @@ -917,136 +827,121 @@ testObject_TeamMemberList_team_13 = testObject_TeamMemberList_team_14 :: TeamMemberList testObject_TeamMemberList_team_14 = ( newTeamMemberList - ( [ TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldDisabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T07:01:56.077Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T09:34:46.900Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T10:40:24.034Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T10:17:53.056Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T18:37:38.894Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldDisabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T06:25:10.534Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T02:42:16.433Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T07:25:18.248Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T15:31:36.237Z")) - ), - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T15:23:38.616Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldEnabled - } + ( [ mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + (Nothing) + UserLegalHoldDisabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T07:01:56.077Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T09:34:46.900Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T10:40:24.034Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T10:17:53.056Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T18:37:38.894Z")) + ) + ) + UserLegalHoldDisabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + (Nothing) + UserLegalHoldDisabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T06:25:10.534Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T02:42:16.433Z")) + ) + ) + UserLegalHoldDisabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T07:25:18.248Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + (Nothing) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T15:31:36.237Z")) + ) + ) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T15:23:38.616Z")) + ) + ) + UserLegalHoldDisabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + (Nothing) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + (Nothing) + UserLegalHoldEnabled ] ) (ListTruncated) @@ -1055,44 +950,39 @@ testObject_TeamMemberList_team_14 = testObject_TeamMemberList_team_15 :: TeamMemberList testObject_TeamMemberList_team_15 = ( newTeamMemberList - ( [ TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T20:33:17.912Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T09:03:59.579Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldDisabled - } + ( [ mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T20:33:17.912Z")) + ) + ) + UserLegalHoldDisabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T09:03:59.579Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + (Nothing) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + (Nothing) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + (Nothing) + UserLegalHoldDisabled ] ) (ListTruncated) @@ -1104,52 +994,47 @@ testObject_TeamMemberList_team_16 = (newTeamMemberList ([]) (ListComplete)) testObject_TeamMemberList_team_17 :: TeamMemberList testObject_TeamMemberList_team_17 = ( newTeamMemberList - ( [ TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T10:04:36.715Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldDisabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T03:02:37.641Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T23:21:44.944Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T08:47:48.774Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - } + ( [ mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T10:04:36.715Z")) + ) + ) + UserLegalHoldDisabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + (Nothing) + UserLegalHoldDisabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000000000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T03:02:37.641Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0000-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T23:21:44.944Z")) + ) + ) + UserLegalHoldDisabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T08:47:48.774Z")) + ) + ) + UserLegalHoldDisabled ] ) (ListTruncated) @@ -1158,56 +1043,51 @@ testObject_TeamMemberList_team_17 = testObject_TeamMemberList_team_18 :: TeamMemberList testObject_TeamMemberList_team_18 = ( newTeamMemberList - ( [ TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T17:44:12.611Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T05:14:06.040Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000001"))), - (fromJust (readUTCTimeMillis "1864-05-09T05:24:40.864Z")) - ), - _legalHoldStatus = UserLegalHoldPending - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T20:09:48.156Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T20:09:31.059Z")) - ), - _legalHoldStatus = UserLegalHoldPending - } + ( [ mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000000000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T17:44:12.611Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T05:14:06.040Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000001"))), + (fromJust (readUTCTimeMillis "1864-05-09T05:24:40.864Z")) + ) + ) + UserLegalHoldPending, + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0001-0000-000000000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T20:09:48.156Z")) + ) + ) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T20:09:31.059Z")) + ) + ) + UserLegalHoldPending ] ) (ListTruncated) @@ -1216,20 +1096,19 @@ testObject_TeamMemberList_team_18 = testObject_TeamMemberList_team_19 :: TeamMemberList testObject_TeamMemberList_team_19 = ( newTeamMemberList - ( [ TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0002-0000-000200000000"))), - _permissions = - Permissions - { _self = fromList [CreateConversation, SetTeamData, SetMemberPermissions], - _copy = fromList [] - }, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0002-0000-000200000002"))), - (fromJust (readUTCTimeMillis "1864-05-09T19:12:15.962Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - } + ( [ mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0002-0000-000200000000"))) + ( Permissions + { _self = fromList [CreateConversation, SetTeamData, SetMemberPermissions], + _copy = fromList [] + } + ) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0002-0000-000200000002"))), + (fromJust (readUTCTimeMillis "1864-05-09T19:12:15.962Z")) + ) + ) + UserLegalHoldDisabled ] ) (ListTruncated) @@ -1238,22 +1117,20 @@ testObject_TeamMemberList_team_19 = testObject_TeamMemberList_team_20 :: TeamMemberList testObject_TeamMemberList_team_20 = ( newTeamMemberList - ( [ TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000001"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldEnabled - }, - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000000"))), - _permissions = Permissions {_self = fromList [], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), - (fromJust (readUTCTimeMillis "1864-05-08T15:41:51.601Z")) - ), - _legalHoldStatus = UserLegalHoldPending - } + ( [ mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000100000001"))) + (Permissions {_self = fromList [], _copy = fromList []}) + (Nothing) + UserLegalHoldEnabled, + mkTeamMember + (Id (fromJust (UUID.fromString "00000001-0000-0001-0000-000100000000"))) + (Permissions {_self = fromList [], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000000"))), + (fromJust (readUTCTimeMillis "1864-05-08T15:41:51.601Z")) + ) + ) + UserLegalHoldPending ] ) (ListComplete) diff --git a/libs/wire-api/test/golden/Test/Wire/API/Golden/Generated/TeamMember_team.hs b/libs/wire-api/test/golden/Test/Wire/API/Golden/Generated/TeamMember_team.hs index 432dba47f5..395af66b78 100644 --- a/libs/wire-api/test/golden/Test/Wire/API/Golden/Generated/TeamMember_team.hs +++ b/libs/wire-api/test/golden/Test/Wire/API/Golden/Generated/TeamMember_team.hs @@ -30,7 +30,7 @@ import Data.LegalHold import qualified Data.UUID as UUID (fromString) import GHC.Exts (IsList (fromList)) import Imports (Maybe (Just, Nothing), fromJust) -import Wire.API.Team.Member (TeamMember (..)) +import Wire.API.Team.Member (TeamMember, mkTeamMember) import Wire.API.Team.Permission ( Perm ( AddTeamMember, @@ -52,340 +52,316 @@ import Wire.API.Team.Permission testObject_TeamMember_team_1 :: TeamMember testObject_TeamMember_team_1 = - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000007-0000-0005-0000-000500000002"))), - _permissions = - Permissions - { _self = fromList [GetBilling, GetMemberPermissions, SetMemberPermissions, DeleteTeam], - _copy = fromList [GetBilling] - }, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000001-0000-0003-0000-000300000004"))), - (fromJust (readUTCTimeMillis "1864-05-12T22:05:34.634Z")) - ), - _legalHoldStatus = UserLegalHoldPending - } + mkTeamMember + (Id (fromJust (UUID.fromString "00000007-0000-0005-0000-000500000002"))) + ( Permissions + { _self = fromList [GetBilling, GetMemberPermissions, SetMemberPermissions, DeleteTeam], + _copy = fromList [GetBilling] + } + ) + ( Just + ( (Id (fromJust (UUID.fromString "00000001-0000-0003-0000-000300000004"))), + (fromJust (readUTCTimeMillis "1864-05-12T22:05:34.634Z")) + ) + ) + UserLegalHoldPending testObject_TeamMember_team_2 :: TeamMember testObject_TeamMember_team_2 = - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000003-0000-0000-0000-000500000005"))), - _permissions = - Permissions {_self = fromList [DoNotUseDeprecatedModifyConvName, SetMemberPermissions], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000004"))), - (fromJust (readUTCTimeMillis "1864-05-03T14:56:52.508Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - } + mkTeamMember + (Id (fromJust (UUID.fromString "00000003-0000-0000-0000-000500000005"))) + (Permissions {_self = fromList [DoNotUseDeprecatedModifyConvName, SetMemberPermissions], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0000-0000-000000000004"))), + (fromJust (readUTCTimeMillis "1864-05-03T14:56:52.508Z")) + ) + ) + (UserLegalHoldDisabled) testObject_TeamMember_team_3 :: TeamMember testObject_TeamMember_team_3 = - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000005-0000-0003-0000-000400000003"))), - _permissions = - Permissions - { _self = - fromList - [DoNotUseDeprecatedDeleteConversation, AddTeamMember, DoNotUseDeprecatedAddRemoveConvMember, GetBilling], - _copy = fromList [GetBilling] - }, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0005-0000-000200000007"))), - (fromJust (readUTCTimeMillis "1864-05-06T14:02:04.371Z")) - ), - _legalHoldStatus = UserLegalHoldPending - } + mkTeamMember + (Id (fromJust (UUID.fromString "00000005-0000-0003-0000-000400000003"))) + ( Permissions + { _self = + fromList + [DoNotUseDeprecatedDeleteConversation, AddTeamMember, DoNotUseDeprecatedAddRemoveConvMember, GetBilling], + _copy = fromList [GetBilling] + } + ) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0005-0000-000200000007"))), + (fromJust (readUTCTimeMillis "1864-05-06T14:02:04.371Z")) + ) + ) + (UserLegalHoldPending) testObject_TeamMember_team_4 :: TeamMember testObject_TeamMember_team_4 = - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000008-0000-0005-0000-000100000006"))), - _permissions = - Permissions - { _self = fromList [DoNotUseDeprecatedModifyConvName, SetMemberPermissions], - _copy = fromList [SetMemberPermissions] - }, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000006-0000-0002-0000-000500000001"))), - (fromJust (readUTCTimeMillis "1864-05-12T15:36:56.285Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - } + mkTeamMember + (Id (fromJust (UUID.fromString "00000008-0000-0005-0000-000100000006"))) + ( Permissions + { _self = fromList [DoNotUseDeprecatedModifyConvName, SetMemberPermissions], + _copy = fromList [SetMemberPermissions] + } + ) + ( Just + ( (Id (fromJust (UUID.fromString "00000006-0000-0002-0000-000500000001"))), + (fromJust (readUTCTimeMillis "1864-05-12T15:36:56.285Z")) + ) + ) + (UserLegalHoldEnabled) testObject_TeamMember_team_5 :: TeamMember testObject_TeamMember_team_5 = - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000007-0000-0000-0000-000200000001"))), - _permissions = - Permissions - { _self = fromList [DoNotUseDeprecatedDeleteConversation, GetBilling, SetBilling, GetMemberPermissions], - _copy = fromList [DoNotUseDeprecatedDeleteConversation, GetMemberPermissions] - }, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000004-0000-0002-0000-000300000007"))), - (fromJust (readUTCTimeMillis "1864-05-07T21:02:57.104Z")) - ), - _legalHoldStatus = UserLegalHoldPending - } + mkTeamMember + (Id (fromJust (UUID.fromString "00000007-0000-0000-0000-000200000001"))) + ( Permissions + { _self = fromList [DoNotUseDeprecatedDeleteConversation, GetBilling, SetBilling, GetMemberPermissions], + _copy = fromList [DoNotUseDeprecatedDeleteConversation, GetMemberPermissions] + } + ) + ( Just + ( (Id (fromJust (UUID.fromString "00000004-0000-0002-0000-000300000007"))), + (fromJust (readUTCTimeMillis "1864-05-07T21:02:57.104Z")) + ) + ) + (UserLegalHoldPending) testObject_TeamMember_team_6 :: TeamMember testObject_TeamMember_team_6 = - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000006-0000-0007-0000-000800000005"))), - _permissions = - Permissions - { _self = - fromList - [CreateConversation, AddTeamMember, DoNotUseDeprecatedAddRemoveConvMember, SetBilling, SetTeamData], - _copy = fromList [] - }, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000005-0000-0007-0000-000800000000"))), - (fromJust (readUTCTimeMillis "1864-05-09T03:11:26.909Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - } + mkTeamMember + (Id (fromJust (UUID.fromString "00000006-0000-0007-0000-000800000005"))) + ( Permissions + { _self = + fromList + [CreateConversation, AddTeamMember, DoNotUseDeprecatedAddRemoveConvMember, SetBilling, SetTeamData], + _copy = fromList [] + } + ) + ( Just + ( (Id (fromJust (UUID.fromString "00000005-0000-0007-0000-000800000000"))), + (fromJust (readUTCTimeMillis "1864-05-09T03:11:26.909Z")) + ) + ) + (UserLegalHoldEnabled) testObject_TeamMember_team_7 :: TeamMember testObject_TeamMember_team_7 = - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000007-0000-0000-0000-000200000001"))), - _permissions = - Permissions - { _self = - fromList - [ DoNotUseDeprecatedDeleteConversation, - DoNotUseDeprecatedAddRemoveConvMember, - SetBilling, - SetMemberPermissions, - GetTeamConversations - ], - _copy = fromList [] - }, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldPending - } + mkTeamMember + (Id (fromJust (UUID.fromString "00000007-0000-0000-0000-000200000001"))) + ( Permissions + { _self = + fromList + [ DoNotUseDeprecatedDeleteConversation, + DoNotUseDeprecatedAddRemoveConvMember, + SetBilling, + SetMemberPermissions, + GetTeamConversations + ], + _copy = fromList [] + } + ) + (Nothing) + (UserLegalHoldPending) testObject_TeamMember_team_8 :: TeamMember testObject_TeamMember_team_8 = - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000005-0000-0007-0000-000300000000"))), - _permissions = - Permissions - { _self = - fromList - [ DoNotUseDeprecatedAddRemoveConvMember, - DoNotUseDeprecatedModifyConvName, - SetTeamData, - SetMemberPermissions, - DeleteTeam - ], - _copy = fromList [] - }, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000007-0000-0003-0000-000400000003"))), - (fromJust (readUTCTimeMillis "1864-05-05T18:40:11.956Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - } + mkTeamMember + (Id (fromJust (UUID.fromString "00000005-0000-0007-0000-000300000000"))) + ( Permissions + { _self = + fromList + [ DoNotUseDeprecatedAddRemoveConvMember, + DoNotUseDeprecatedModifyConvName, + SetTeamData, + SetMemberPermissions, + DeleteTeam + ], + _copy = fromList [] + } + ) + ( Just + ( (Id (fromJust (UUID.fromString "00000007-0000-0003-0000-000400000003"))), + (fromJust (readUTCTimeMillis "1864-05-05T18:40:11.956Z")) + ) + ) + (UserLegalHoldDisabled) testObject_TeamMember_team_9 :: TeamMember testObject_TeamMember_team_9 = - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000008-0000-0006-0000-000300000003"))), - _permissions = - Permissions - { _self = fromList [AddTeamMember, DoNotUseDeprecatedModifyConvName], - _copy = fromList [DoNotUseDeprecatedModifyConvName] - }, - _invitation = Nothing, - _legalHoldStatus = UserLegalHoldPending - } + mkTeamMember + (Id (fromJust (UUID.fromString "00000008-0000-0006-0000-000300000003"))) + ( Permissions + { _self = fromList [AddTeamMember, DoNotUseDeprecatedModifyConvName], + _copy = fromList [DoNotUseDeprecatedModifyConvName] + } + ) + (Nothing) + (UserLegalHoldPending) testObject_TeamMember_team_10 :: TeamMember testObject_TeamMember_team_10 = - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000002-0000-0000-0000-000100000006"))), - _permissions = - Permissions {_self = fromList [DoNotUseDeprecatedDeleteConversation, AddTeamMember], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000008-0000-0005-0000-000000000002"))), - (fromJust (readUTCTimeMillis "1864-05-03T19:02:13.669Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - } + mkTeamMember + (Id (fromJust (UUID.fromString "00000002-0000-0000-0000-000100000006"))) + (Permissions {_self = fromList [DoNotUseDeprecatedDeleteConversation, AddTeamMember], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000008-0000-0005-0000-000000000002"))), + (fromJust (readUTCTimeMillis "1864-05-03T19:02:13.669Z")) + ) + ) + (UserLegalHoldDisabled) testObject_TeamMember_team_11 :: TeamMember testObject_TeamMember_team_11 = - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000004-0000-0001-0000-000400000007"))), - _permissions = - Permissions - { _self = - fromList [CreateConversation, DoNotUseDeprecatedDeleteConversation, SetTeamData, SetMemberPermissions], - _copy = fromList [] - }, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000003-0000-0001-0000-000100000005"))), - (fromJust (readUTCTimeMillis "1864-05-04T18:20:29.420Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - } + mkTeamMember + (Id (fromJust (UUID.fromString "00000004-0000-0001-0000-000400000007"))) + ( Permissions + { _self = + fromList [CreateConversation, DoNotUseDeprecatedDeleteConversation, SetTeamData, SetMemberPermissions], + _copy = fromList [] + } + ) + ( Just + ( (Id (fromJust (UUID.fromString "00000003-0000-0001-0000-000100000005"))), + (fromJust (readUTCTimeMillis "1864-05-04T18:20:29.420Z")) + ) + ) + (UserLegalHoldEnabled) testObject_TeamMember_team_12 :: TeamMember testObject_TeamMember_team_12 = - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000002-0000-0006-0000-000200000005"))), - _permissions = Permissions {_self = fromList [GetTeamConversations], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000005-0000-0001-0000-000300000003"))), - (fromJust (readUTCTimeMillis "1864-05-10T22:34:18.259Z")) - ), - _legalHoldStatus = UserLegalHoldPending - } + mkTeamMember + (Id (fromJust (UUID.fromString "00000002-0000-0006-0000-000200000005"))) + (Permissions {_self = fromList [GetTeamConversations], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000005-0000-0001-0000-000300000003"))), + (fromJust (readUTCTimeMillis "1864-05-10T22:34:18.259Z")) + ) + ) + (UserLegalHoldPending) testObject_TeamMember_team_13 :: TeamMember testObject_TeamMember_team_13 = - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000006-0000-0001-0000-000800000006"))), - _permissions = - Permissions {_self = fromList [CreateConversation, GetMemberPermissions], _copy = fromList [CreateConversation]}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000000-0000-0003-0000-000400000007"))), - (fromJust (readUTCTimeMillis "1864-05-06T08:18:27.514Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - } + mkTeamMember + (Id (fromJust (UUID.fromString "00000006-0000-0001-0000-000800000006"))) + (Permissions {_self = fromList [CreateConversation, GetMemberPermissions], _copy = fromList [CreateConversation]}) + ( Just + ( (Id (fromJust (UUID.fromString "00000000-0000-0003-0000-000400000007"))), + (fromJust (readUTCTimeMillis "1864-05-06T08:18:27.514Z")) + ) + ) + (UserLegalHoldDisabled) testObject_TeamMember_team_14 :: TeamMember testObject_TeamMember_team_14 = - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000004-0000-0000-0000-000300000007"))), - _permissions = - Permissions - { _self = fromList [DoNotUseDeprecatedDeleteConversation, AddTeamMember, GetBilling, GetMemberPermissions], - _copy = fromList [GetBilling, GetMemberPermissions] - }, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000008-0000-0000-0000-000200000002"))), - (fromJust (readUTCTimeMillis "1864-05-12T15:53:41.144Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - } + mkTeamMember + (Id (fromJust (UUID.fromString "00000004-0000-0000-0000-000300000007"))) + ( Permissions + { _self = fromList [DoNotUseDeprecatedDeleteConversation, AddTeamMember, GetBilling, GetMemberPermissions], + _copy = fromList [GetBilling, GetMemberPermissions] + } + ) + ( Just + ( (Id (fromJust (UUID.fromString "00000008-0000-0000-0000-000200000002"))), + (fromJust (readUTCTimeMillis "1864-05-12T15:53:41.144Z")) + ) + ) + (UserLegalHoldDisabled) testObject_TeamMember_team_15 :: TeamMember testObject_TeamMember_team_15 = - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000005-0000-0006-0000-000800000006"))), - _permissions = Permissions {_self = fromList [DeleteTeam], _copy = fromList [DeleteTeam]}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000008-0000-0000-0000-000500000003"))), - (fromJust (readUTCTimeMillis "1864-05-04T06:15:13.870Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - } + mkTeamMember + (Id (fromJust (UUID.fromString "00000005-0000-0006-0000-000800000006"))) + (Permissions {_self = fromList [DeleteTeam], _copy = fromList [DeleteTeam]}) + ( Just + ( (Id (fromJust (UUID.fromString "00000008-0000-0000-0000-000500000003"))), + (fromJust (readUTCTimeMillis "1864-05-04T06:15:13.870Z")) + ) + ) + (UserLegalHoldEnabled) testObject_TeamMember_team_16 :: TeamMember testObject_TeamMember_team_16 = - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000000-0000-0008-0000-000200000008"))), - _permissions = - Permissions {_self = fromList [DoNotUseDeprecatedDeleteConversation, GetTeamConversations], _copy = fromList []}, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000006-0000-0000-0000-000400000002"))), - (fromJust (readUTCTimeMillis "1864-05-10T04:27:37.101Z")) - ), - _legalHoldStatus = UserLegalHoldPending - } + mkTeamMember + (Id (fromJust (UUID.fromString "00000000-0000-0008-0000-000200000008"))) + (Permissions {_self = fromList [DoNotUseDeprecatedDeleteConversation, GetTeamConversations], _copy = fromList []}) + ( Just + ( (Id (fromJust (UUID.fromString "00000006-0000-0000-0000-000400000002"))), + (fromJust (readUTCTimeMillis "1864-05-10T04:27:37.101Z")) + ) + ) + (UserLegalHoldPending) testObject_TeamMember_team_17 :: TeamMember testObject_TeamMember_team_17 = - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000006-0000-0006-0000-000500000007"))), - _permissions = - Permissions - { _self = - fromList - [ DoNotUseDeprecatedAddRemoveConvMember, - DoNotUseDeprecatedModifyConvName, - GetBilling, - SetTeamData, - GetTeamConversations - ], - _copy = fromList [DoNotUseDeprecatedAddRemoveConvMember] - }, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000006-0000-0003-0000-000700000004"))), - (fromJust (readUTCTimeMillis "1864-05-07T23:22:37.991Z")) - ), - _legalHoldStatus = UserLegalHoldDisabled - } + mkTeamMember + (Id (fromJust (UUID.fromString "00000006-0000-0006-0000-000500000007"))) + ( Permissions + { _self = + fromList + [ DoNotUseDeprecatedAddRemoveConvMember, + DoNotUseDeprecatedModifyConvName, + GetBilling, + SetTeamData, + GetTeamConversations + ], + _copy = fromList [DoNotUseDeprecatedAddRemoveConvMember] + } + ) + ( Just + ( (Id (fromJust (UUID.fromString "00000006-0000-0003-0000-000700000004"))), + (fromJust (readUTCTimeMillis "1864-05-07T23:22:37.991Z")) + ) + ) + (UserLegalHoldDisabled) testObject_TeamMember_team_18 :: TeamMember testObject_TeamMember_team_18 = - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000005-0000-0005-0000-000200000008"))), - _permissions = - Permissions - { _self = - fromList [RemoveTeamMember, DoNotUseDeprecatedModifyConvName, GetMemberPermissions, SetMemberPermissions], - _copy = fromList [SetMemberPermissions] - }, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000007-0000-0008-0000-000500000006"))), - (fromJust (readUTCTimeMillis "1864-05-15T14:48:55.847Z")) - ), - _legalHoldStatus = UserLegalHoldPending - } + mkTeamMember + (Id (fromJust (UUID.fromString "00000005-0000-0005-0000-000200000008"))) + ( Permissions + { _self = + fromList [RemoveTeamMember, DoNotUseDeprecatedModifyConvName, GetMemberPermissions, SetMemberPermissions], + _copy = fromList [SetMemberPermissions] + } + ) + ( Just + ( (Id (fromJust (UUID.fromString "00000007-0000-0008-0000-000500000006"))), + (fromJust (readUTCTimeMillis "1864-05-15T14:48:55.847Z")) + ) + ) + (UserLegalHoldPending) testObject_TeamMember_team_19 :: TeamMember testObject_TeamMember_team_19 = - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000003-0000-0002-0000-000200000008"))), - _permissions = - Permissions - { _self = - fromList [AddTeamMember, DoNotUseDeprecatedModifyConvName, GetBilling, SetBilling, SetMemberPermissions], - _copy = fromList [SetMemberPermissions] - }, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000006-0000-0001-0000-000200000008"))), - (fromJust (readUTCTimeMillis "1864-05-12T01:37:35.003Z")) - ), - _legalHoldStatus = UserLegalHoldPending - } + mkTeamMember + (Id (fromJust (UUID.fromString "00000003-0000-0002-0000-000200000008"))) + ( Permissions + { _self = + fromList [AddTeamMember, DoNotUseDeprecatedModifyConvName, GetBilling, SetBilling, SetMemberPermissions], + _copy = fromList [SetMemberPermissions] + } + ) + ( Just + ( (Id (fromJust (UUID.fromString "00000006-0000-0001-0000-000200000008"))), + (fromJust (readUTCTimeMillis "1864-05-12T01:37:35.003Z")) + ) + ) + (UserLegalHoldPending) testObject_TeamMember_team_20 :: TeamMember testObject_TeamMember_team_20 = - TeamMember - { _userId = (Id (fromJust (UUID.fromString "00000005-0000-0007-0000-000100000005"))), - _permissions = - Permissions - { _self = fromList [CreateConversation, AddTeamMember, DoNotUseDeprecatedModifyConvName, GetBilling], - _copy = fromList [] - }, - _invitation = - Just - ( (Id (fromJust (UUID.fromString "00000005-0000-0001-0000-000800000007"))), - (fromJust (readUTCTimeMillis "1864-05-04T22:12:50.096Z")) - ), - _legalHoldStatus = UserLegalHoldEnabled - } + mkTeamMember + (Id (fromJust (UUID.fromString "00000005-0000-0007-0000-000100000005"))) + ( Permissions + { _self = fromList [CreateConversation, AddTeamMember, DoNotUseDeprecatedModifyConvName, GetBilling], + _copy = fromList [] + } + ) + ( Just + ( (Id (fromJust (UUID.fromString "00000005-0000-0001-0000-000800000007"))), + (fromJust (readUTCTimeMillis "1864-05-04T22:12:50.096Z")) + ) + ) + (UserLegalHoldEnabled) diff --git a/services/brig/src/Brig/IO/Intra.hs b/services/brig/src/Brig/IO/Intra.hs index 55fbb8f54b..a7ed7bc506 100644 --- a/services/brig/src/Brig/IO/Intra.hs +++ b/services/brig/src/Brig/IO/Intra.hs @@ -122,6 +122,7 @@ import Wire.API.Federation.Error import Wire.API.Message (UserClients) import Wire.API.Team.Feature (IncludeLockStatus (..), TeamFeatureName (..), TeamFeatureStatus) import Wire.API.Team.LegalHold (LegalholdProtectee) +import qualified Wire.API.Team.Member as Member ----------------------------------------------------------------------------- -- Event Handlers @@ -853,7 +854,7 @@ addTeamMember u tid (minvmeta, role) = do _ -> False where prm = Team.rolePermissions role - bdy = Team.newNewTeamMember u prm minvmeta + bdy = Member.mkNewTeamMember u prm minvmeta req = paths ["i", "teams", toByteString' tid, "members"] . header "Content-Type" "application/json" diff --git a/services/brig/test/integration/API/Team/Util.hs b/services/brig/test/integration/API/Team/Util.hs index aa44fc7589..36811ec25d 100644 --- a/services/brig/test/integration/API/Team/Util.hs +++ b/services/brig/test/integration/API/Team/Util.hs @@ -48,6 +48,7 @@ import Util import Web.Cookie (parseSetCookie, setCookieName) import Wire.API.Team.Feature (TeamFeatureStatusValue (..)) import qualified Wire.API.Team.Feature as Public +import qualified Wire.API.Team.Member as Member import qualified Wire.API.User as Public -- | FUTUREWORK: Remove 'createPopulatedBindingTeam', 'createPopulatedBindingTeamWithNames', @@ -204,7 +205,7 @@ updatePermissions from tid (to, perm) galley = !!! const 200 === statusCode where - changeMember = Team.newNewTeamMember to perm Nothing + changeMember = Member.mkNewTeamMember to perm Nothing createTeamConv :: HasCallStack => Galley -> TeamId -> UserId -> [UserId] -> Maybe Milliseconds -> Http ConvId createTeamConv g tid u us mtimer = do diff --git a/services/galley/src/Galley/API/Public.hs b/services/galley/src/Galley/API/Public.hs index 31d41ae053..42db3104f9 100644 --- a/services/galley/src/Galley/API/Public.hs +++ b/services/galley/src/Galley/API/Public.hs @@ -187,25 +187,14 @@ servantSitemap = GalleyAPI.featureConfigClassifiedDomainsGet = Features.getFeatureConfig @'Public.WithoutLockStatus @'Public.TeamFeatureClassifiedDomains Features.getClassifiedDomainsInternal, GalleyAPI.featureConfigConferenceCallingGet = Features.getFeatureConfig @'Public.WithoutLockStatus @'Public.TeamFeatureConferenceCalling Features.getConferenceCallingInternal, GalleyAPI.featureConfigSelfDeletingMessagesGet = Features.getFeatureConfig @'Public.WithLockStatus @'Public.TeamFeatureSelfDeletingMessages Features.getSelfDeletingMessagesInternal, - GalleyAPI.featureConfigGuestLinksGet = Features.getFeatureConfig @'Public.WithLockStatus @'Public.TeamFeatureGuestLinks Features.getGuestLinkInternal + GalleyAPI.featureConfigGuestLinksGet = Features.getFeatureConfig @'Public.WithLockStatus @'Public.TeamFeatureGuestLinks Features.getGuestLinkInternal, + GalleyAPI.createNonBindingTeam = Teams.createNonBindingTeamH } sitemap :: Routes ApiBuilder (Sem GalleyEffects) () sitemap = do -- Team API ----------------------------------------------------------- - post "/teams" (continue Teams.createNonBindingTeamH) $ - zauthUserId - .&. zauthConnId - .&. jsonRequest @Public.NonBindingNewTeam - .&. accept "application" "json" - document "POST" "createNonBindingTeam" $ do - summary "Create a new non binding team" - body (ref Public.modelNewNonBindingTeam) $ - description "JSON body" - response 201 "Team ID as `Location` header value" end - errorResponse (Error.errorDescriptionTypeToWai @Error.NotConnected) - put "/teams/:tid" (continue Teams.updateTeamH) $ zauthUserId .&. zauthConnId diff --git a/services/galley/src/Galley/API/Teams.hs b/services/galley/src/Galley/API/Teams.hs index 9d46c2fcd7..34e27ae7fc 100644 --- a/services/galley/src/Galley/API/Teams.hs +++ b/services/galley/src/Galley/API/Teams.hs @@ -135,6 +135,7 @@ import qualified Wire.API.Team as Public import qualified Wire.API.Team.Conversation as Public import Wire.API.Team.Export (TeamExportUser (..)) import qualified Wire.API.Team.Feature as Public +import Wire.API.Team.Member (ntmNewTeamMember, teamMemberJson, teamMemberListJson) import qualified Wire.API.Team.Member as Public import qualified Wire.API.Team.SearchVisibility as Public import Wire.API.User (User, UserSSOId (UserScimExternalId), userSCIMExternalId, userSSOId) @@ -203,41 +204,22 @@ lookupTeam zusr tid = do else pure Nothing createNonBindingTeamH :: - Members - '[ BrigAccess, - Error ActionError, - Error TeamError, - GundeckAccess, - Input UTCTime, - P.TinyLog, - TeamStore, - WaiRoutes - ] - r => - UserId ::: ConnId ::: JsonRequest Public.NonBindingNewTeam ::: JSON -> - Sem r Response -createNonBindingTeamH (zusr ::: zcon ::: req ::: _) = do - newTeam <- fromJsonBody req - newTeamId <- createNonBindingTeam zusr zcon newTeam - pure (empty & setStatus status201 . location newTeamId) - -createNonBindingTeam :: - Members - '[ BrigAccess, - Error ActionError, - Error TeamError, - GundeckAccess, - Input UTCTime, - TeamStore, - P.TinyLog - ] - r => + forall r. + ( Member BrigAccess r, + Member (Error ActionError) r, + Member (Error TeamError) r, + Member GundeckAccess r, + Member (Input UTCTime) r, + Member P.TinyLog r, + Member TeamStore r, + Member WaiRoutes r + ) => UserId -> ConnId -> Public.NonBindingNewTeam -> Sem r TeamId -createNonBindingTeam zusr zcon (Public.NonBindingNewTeam body) = do - let owner = Public.TeamMember zusr fullPermissions Nothing LH.defUserLegalHoldStatus +createNonBindingTeamH zusr zcon (Public.NonBindingNewTeam body) = do + let owner = Public.mkTeamMember zusr fullPermissions Nothing LH.defUserLegalHoldStatus let others = filter ((zusr /=) . view userId) . maybe [] fromRange @@ -275,7 +257,7 @@ createBindingTeam :: BindingNewTeam -> Sem r TeamId createBindingTeam zusr tid (BindingNewTeam body) = do - let owner = Public.TeamMember zusr fullPermissions Nothing LH.defUserLegalHoldStatus + let owner = Public.mkTeamMember zusr fullPermissions Nothing LH.defUserLegalHoldStatus team <- E.createTeam (Just tid) zusr (body ^. newTeamName) (body ^. newTeamIcon) (body ^. newTeamIconKey) Binding finishCreateTeam team owner [] Nothing @@ -835,7 +817,7 @@ addTeamMember :: Public.NewTeamMember -> Sem r () addTeamMember zusr zcon tid nmem = do - let uid = nmem ^. ntmNewTeamMember . userId + let uid = nmem ^. nUserId P.debug $ Log.field "targets" (toByteString uid) . Log.field "action" (Log.val "Teams.addTeamMember") @@ -843,7 +825,7 @@ addTeamMember zusr zcon tid nmem = do zusrMembership <- E.getTeamMember tid zusr >>= permissionCheck AddTeamMember - let targetPermissions = nmem ^. ntmNewTeamMember . permissions + let targetPermissions = nmem ^. nPermissions targetPermissions `ensureNotElevated` zusrMembership ensureNonBindingTeam tid ensureUnboundUsers [uid] @@ -904,7 +886,7 @@ uncheckedAddTeamMember tid nmem = do (TeamSize sizeBeforeJoin) <- E.getSize tid ensureNotTooLargeForLegalHold tid (fromIntegral sizeBeforeJoin + 1) (TeamSize sizeBeforeAdd) <- addTeamMemberInternal tid Nothing Nothing nmem mems - billingUserIds <- Journal.getBillingUserIds tid $ Just $ newTeamMemberList ((nmem ^. ntmNewTeamMember) : mems ^. teamMembers) (mems ^. teamMemberListType) + billingUserIds <- Journal.getBillingUserIds tid $ Just $ newTeamMemberList (ntmNewTeamMember nmem : mems ^. teamMembers) (mems ^. teamMemberListType) Journal.teamUpdate tid (sizeBeforeAdd + 1) billingUserIds updateTeamMemberH :: @@ -925,7 +907,7 @@ updateTeamMemberH :: Sem r Response updateTeamMemberH (zusr ::: zcon ::: tid ::: req ::: _) = do -- the team member to be updated - targetMember <- view ntmNewTeamMember <$> (fromJsonBody req) + targetMember <- ntmNewTeamMember <$> fromJsonBody req updateTeamMember zusr zcon tid targetMember pure empty @@ -1385,7 +1367,7 @@ addTeamMemberInternal :: NewTeamMember -> TeamMemberList -> Sem r TeamSize -addTeamMemberInternal tid origin originConn (view ntmNewTeamMember -> new) memList = do +addTeamMemberInternal tid origin originConn (ntmNewTeamMember -> new) memList = do P.debug $ Log.field "targets" (toByteString (new ^. userId)) . Log.field "action" (Log.val "Teams.addTeamMemberInternal") diff --git a/services/galley/src/Galley/Cassandra/Team.hs b/services/galley/src/Galley/Cassandra/Team.hs index 7d0f373a29..a89af42d6d 100644 --- a/services/galley/src/Galley/Cassandra/Team.hs +++ b/services/galley/src/Galley/Cassandra/Team.hs @@ -410,8 +410,8 @@ newTeamMember' lh tid (uid, perms, minvu, minvt, fromMaybe defUserLegalHoldStatu UserLegalHoldPending -> UserLegalHoldPending UserLegalHoldEnabled -> UserLegalHoldEnabled - mk (Just invu) (Just invt) = pure $ TeamMember uid perms (Just (invu, invt)) lhStatus - mk Nothing Nothing = pure $ TeamMember uid perms Nothing lhStatus + mk (Just invu) (Just invt) = pure $ mkTeamMember uid perms (Just (invu, invt)) lhStatus + mk Nothing Nothing = pure $ mkTeamMember uid perms Nothing lhStatus mk _ _ = throwM $ ErrorCall "TeamMember with incomplete metadata." teamConversationsForPagination :: TeamId -> Maybe ConvId -> Range 1 HardTruncationLimit Int32 -> Client (Page TeamConversation) diff --git a/services/galley/test/integration/API/MessageTimer.hs b/services/galley/test/integration/API/MessageTimer.hs index f0e1d91fb2..e773e3a549 100644 --- a/services/galley/test/integration/API/MessageTimer.hs +++ b/services/galley/test/integration/API/MessageTimer.hs @@ -189,7 +189,7 @@ messageTimerChangeWithoutAllowedAction = do -- Create a team and a guest user [owner, member, guest] <- randomUsers 3 connectUsers owner (list1 member [guest]) - tid <- createNonBindingTeam "team" owner [Member.TeamMember member Teams.fullPermissions Nothing LH.defUserLegalHoldStatus] + tid <- createNonBindingTeam "team" owner [Member.mkTeamMember member Teams.fullPermissions Nothing LH.defUserLegalHoldStatus] -- Create a conversation cid <- createTeamConvWithRole owner tid [member, guest] Nothing Nothing Nothing roleNameWireMember -- Try to change the timer (as a non admin, guest user) and observe failure diff --git a/services/galley/test/integration/API/Teams.hs b/services/galley/test/integration/API/Teams.hs index 837f499864..2e0890f7c4 100644 --- a/services/galley/test/integration/API/Teams.hs +++ b/services/galley/test/integration/API/Teams.hs @@ -480,7 +480,7 @@ testAddTeamMember = do Util.connectUsers (mem1 ^. userId) (list1 (mem2 ^. userId) []) tid <- Util.createNonBindingTeam "foo" owner [mem1, mem2] mem3 <- newTeamMember' p1 <$> Util.randomUser - let payload = json (newNewTeamMember (mem3 ^. userId) (mem3 ^. permissions) (mem3 ^. invitation)) + let payload = json (Member.mkNewTeamMember (mem3 ^. userId) (mem3 ^. permissions) (mem3 ^. invitation)) Util.connectUsers (mem1 ^. userId) (list1 (mem3 ^. userId) []) Util.connectUsers (mem2 ^. userId) (list1 (mem3 ^. userId) []) -- `mem1` lacks permission to add new team members @@ -566,7 +566,7 @@ testAddTeamMemberCheckBound = do ( g . paths ["teams", toByteString' tidBound, "members"] . zUser ownerBound . zConn "conn" - . json (newNewTeamMember (rndMem ^. userId) (rndMem ^. permissions) (rndMem ^. invitation)) + . json (Member.mkNewTeamMember (rndMem ^. userId) (rndMem ^. permissions) (rndMem ^. invitation)) ) !!! const 403 === statusCode owner <- Util.randomUser @@ -576,7 +576,7 @@ testAddTeamMemberCheckBound = do post ( g . paths ["teams", toByteString' tid, "members"] . zUser owner . zConn "conn" - . json (newNewTeamMember (boundMem ^. userId) (boundMem ^. permissions) (boundMem ^. invitation)) + . json (Member.mkNewTeamMember (boundMem ^. userId) (boundMem ^. permissions) (boundMem ^. invitation)) ) !!! const 403 === statusCode @@ -970,7 +970,7 @@ testUpdateTeamConv (rolePermissions -> perms) convRole = do owner <- Util.randomUser member <- Util.randomUser Util.connectUsers owner (list1 member []) - tid <- Util.createNonBindingTeam "foo" owner [Member.TeamMember member perms Nothing LH.defUserLegalHoldStatus] + tid <- Util.createNonBindingTeam "foo" owner [Member.mkTeamMember member perms Nothing LH.defUserLegalHoldStatus] cid <- Util.createTeamConvWithRole owner tid [member] (Just "gossip") Nothing Nothing convRole resp <- updateTeamConv member cid (ConversationRename "not gossip") -- FUTUREWORK: Ensure that the team role _really_ does not matter @@ -1459,7 +1459,7 @@ testBillingInLargeTeamWithoutIndexedBillingTeamMembers = do foldM ( \billingMembers n -> do newBillingMemberId <- randomUser - let mem = json $ newNewTeamMember newBillingMemberId (rolePermissions RoleOwner) Nothing + let mem = json $ Member.mkNewTeamMember newBillingMemberId (rolePermissions RoleOwner) Nothing -- We cannot properly add the new owner with an invite as we don't have a way to -- override galley settings while making a call to brig withoutIndexedBillingTeamMembers $ @@ -1477,7 +1477,7 @@ testBillingInLargeTeamWithoutIndexedBillingTeamMembers = do -- If we add another owner, one of them won't get notified ownerFanoutPlusTwo <- randomUser - let memFanoutPlusTwo = json $ newNewTeamMember ownerFanoutPlusTwo (rolePermissions RoleOwner) Nothing + let memFanoutPlusTwo = json $ Member.mkNewTeamMember ownerFanoutPlusTwo (rolePermissions RoleOwner) Nothing -- We cannot properly add the new owner with an invite as we don't have a way to -- override galley settings while making a call to brig withoutIndexedBillingTeamMembers $ @@ -1513,7 +1513,7 @@ testBillingInLargeTeamWithoutIndexedBillingTeamMembers = do refreshIndex -- Promotions and demotion should also be kept track of regardless of feature being enabled - let demoteFanoutPlusThree = newNewTeamMember ownerFanoutPlusThree (rolePermissions RoleAdmin) Nothing + let demoteFanoutPlusThree = Member.mkNewTeamMember ownerFanoutPlusThree (rolePermissions RoleAdmin) Nothing withoutIndexedBillingTeamMembers $ updateTeamMember galley team firstOwner demoteFanoutPlusThree !!! const 200 === statusCode ensureQueueEmpty @@ -1522,7 +1522,7 @@ testBillingInLargeTeamWithoutIndexedBillingTeamMembers = do tUpdateUncertainCount [4, 5] (allOwnersBeforeFanoutLimit <> [ownerFanoutPlusFour, ownerFanoutPlusFive]) refreshIndex - let promoteFanoutPlusThree = newNewTeamMember ownerFanoutPlusThree (rolePermissions RoleOwner) Nothing + let promoteFanoutPlusThree = Member.mkNewTeamMember ownerFanoutPlusThree (rolePermissions RoleOwner) Nothing withoutIndexedBillingTeamMembers $ updateTeamMember galley team firstOwner promoteFanoutPlusThree !!! const 200 === statusCode ensureQueueEmpty @@ -1548,28 +1548,28 @@ testUpdateTeamMember = do assertQueue "add member" $ tUpdate 2 [owner] refreshIndex -- non-owner can **NOT** demote owner - let demoteOwner = newNewTeamMember owner (rolePermissions RoleAdmin) Nothing + let demoteOwner = Member.mkNewTeamMember owner (rolePermissions RoleAdmin) Nothing updateTeamMember g tid (member ^. userId) demoteOwner !!! do const 403 === statusCode const "access-denied" === (Error.label . responseJsonUnsafeWithMsg "error label") -- owner can demote non-owner - let demoteMember = newNewTeamMember (member ^. userId) noPermissions (member ^. invitation) + let demoteMember = Member.mkNewTeamMember (member ^. userId) noPermissions (member ^. invitation) WS.bracketR2 c owner (member ^. userId) $ \(wsOwner, wsMember) -> do updateTeamMember g tid owner demoteMember !!! do const 200 === statusCode member' <- Util.getTeamMember owner tid (member ^. userId) - liftIO $ assertEqual "permissions" (member' ^. permissions) (demoteMember ^. ntmNewTeamMember . permissions) + liftIO $ assertEqual "permissions" (member' ^. permissions) (demoteMember ^. nPermissions) checkTeamMemberUpdateEvent tid (member ^. userId) wsOwner (pure noPermissions) checkTeamMemberUpdateEvent tid (member ^. userId) wsMember (pure noPermissions) WS.assertNoEvent timeout [wsOwner, wsMember] assertQueue "Member demoted" $ tUpdate 2 [owner] -- owner can promote non-owner - let promoteMember = newNewTeamMember (member ^. userId) fullPermissions (member ^. invitation) + let promoteMember = Member.mkNewTeamMember (member ^. userId) fullPermissions (member ^. invitation) WS.bracketR2 c owner (member ^. userId) $ \(wsOwner, wsMember) -> do updateTeamMember g tid owner promoteMember !!! do const 200 === statusCode member' <- Util.getTeamMember owner tid (member ^. userId) - liftIO $ assertEqual "permissions" (member' ^. permissions) (promoteMember ^. ntmNewTeamMember . permissions) + liftIO $ assertEqual "permissions" (member' ^. permissions) (promoteMember ^. nPermissions) checkTeamMemberUpdateEvent tid (member ^. userId) wsOwner (pure fullPermissions) checkTeamMemberUpdateEvent tid (member ^. userId) wsMember (pure fullPermissions) WS.assertNoEvent timeout [wsOwner, wsMember] @@ -1582,7 +1582,7 @@ testUpdateTeamMember = do updateTeamMember g tid (member ^. userId) demoteOwner !!! do const 200 === statusCode owner' <- Util.getTeamMember (member ^. userId) tid owner - liftIO $ assertEqual "permissions" (owner' ^. permissions) (demoteOwner ^. ntmNewTeamMember . permissions) + liftIO $ assertEqual "permissions" (owner' ^. permissions) (demoteOwner ^. nPermissions) -- owner no longer has GetPermissions, but she can still see the update because it's about her! checkTeamMemberUpdateEvent tid owner wsOwner (pure (rolePermissions RoleAdmin)) checkTeamMemberUpdateEvent tid owner wsMember (pure (rolePermissions RoleAdmin)) @@ -1881,7 +1881,7 @@ postCryptoBroadcastMessage100OrMaxConns = do (xxx, yyy, _, _) -> error ("Unexpected while connecting users: " ++ show xxx ++ " and " ++ show yyy) newTeamMember' :: Permissions -> UserId -> TeamMember -newTeamMember' perms uid = Member.TeamMember uid perms Nothing LH.defUserLegalHoldStatus +newTeamMember' perms uid = Member.mkTeamMember uid perms Nothing LH.defUserLegalHoldStatus -- NOTE: all client functions calling @{/i,}/teams/*/features/*@ can be replaced by -- hypothetical functions 'getTeamFeatureFlag', 'getTeamFeatureFlagInternal', diff --git a/services/galley/test/integration/API/Util.hs b/services/galley/test/integration/API/Util.hs index 31af5c651a..3a767e13e9 100644 --- a/services/galley/test/integration/API/Util.hs +++ b/services/galley/test/integration/API/Util.hs @@ -122,6 +122,7 @@ import Wire.API.Message import qualified Wire.API.Message.Proto as Proto import Wire.API.Routes.Internal.Brig.Connection import Wire.API.Routes.MultiTablePaging +import Wire.API.Team.Member (mkNewTeamMember) import Wire.API.User.Client (ClientCapability (..), UserClientsFull (UserClientsFull)) import qualified Wire.API.User.Client as Client import Wire.API.User.Identity (mkSimpleSampleUref) @@ -358,7 +359,7 @@ getTeamMemberInternal tid mid = do addTeamMember :: HasCallStack => UserId -> TeamId -> UserId -> Permissions -> Maybe (UserId, UTCTimeMillis) -> TestM () addTeamMember usr tid muid mperms mmbinv = do g <- view tsGalley - let payload = json (newNewTeamMember muid mperms mmbinv) + let payload = json (mkNewTeamMember muid mperms mmbinv) post (g . paths ["teams", toByteString' tid, "members"] . zUser usr . zConn "conn" . payload) !!! const 200 === statusCode @@ -370,7 +371,7 @@ addTeamMemberInternal tid muid mperms mmbinv = addTeamMemberInternal' tid muid m addTeamMemberInternal' :: HasCallStack => TeamId -> UserId -> Permissions -> Maybe (UserId, UTCTimeMillis) -> TestM ResponseLBS addTeamMemberInternal' tid muid mperms mmbinv = do g <- view tsGalley - let payload = json (newNewTeamMember muid mperms mmbinv) + let payload = json (mkNewTeamMember muid mperms mmbinv) post (g . paths ["i", "teams", toByteString' tid, "members"] . payload) addUserToTeam :: HasCallStack => UserId -> TeamId -> TestM TeamMember @@ -417,7 +418,7 @@ addUserToTeamWithSSO hasEmail tid = do makeOwner :: HasCallStack => UserId -> TeamMember -> TeamId -> TestM () makeOwner owner mem tid = do galley <- view tsGalley - let changeMember = newNewTeamMember (mem ^. Team.userId) fullPermissions (mem ^. Team.invitation) + let changeMember = mkNewTeamMember (mem ^. Team.userId) fullPermissions (mem ^. Team.invitation) put ( galley . paths ["teams", toByteString' tid, "members"] diff --git a/services/spar/test-integration/Util/Core.hs b/services/spar/test-integration/Util/Core.hs index f51f878974..a621f285f1 100644 --- a/services/spar/test-integration/Util/Core.hs +++ b/services/spar/test-integration/Util/Core.hs @@ -199,6 +199,7 @@ import Wire.API.Routes.Public.Spar import Wire.API.Team.Feature (TeamFeatureStatusValue (..)) import qualified Wire.API.Team.Feature as Public import qualified Wire.API.Team.Invitation as TeamInvitation +import qualified Wire.API.Team.Member as Member import Wire.API.User (HandleUpdate (HandleUpdate), UserUpdate) import qualified Wire.API.User as User import Wire.API.User.Identity (mkSampleUref) @@ -472,7 +473,7 @@ createTeamMember brigreq galleyreq teamid perms = do postUser name False (Just ssoid) (Just teamid) brigreq UserId -> TeamId -> UserId -> TestSpar () promoteTeamMember usr tid memid = do gly <- view teGalley let bdy :: Galley.NewTeamMember - bdy = Galley.newNewTeamMember memid Galley.fullPermissions Nothing + bdy = Member.mkNewTeamMember memid Galley.fullPermissions Nothing call $ put (gly . paths ["teams", toByteString' tid, "members"] . zAuthAccess usr "conn" . json bdy) !!! const 200 === statusCode @@ -1209,7 +1210,7 @@ ssoToUidSpar tid ssoid = do veid <- either (error . ("could not parse brig sso_id: " <>)) pure $ Intra.veidFromUserSSOId ssoid runSpar $ runValidExternalId - (SAMLUserStore.get) + SAMLUserStore.get (ScimExternalIdStore.lookup tid) veid diff --git a/tools/stern/src/Stern/Types.hs b/tools/stern/src/Stern/Types.hs index 6f2e43a272..3fc157ab11 100644 --- a/tools/stern/src/Stern/Types.hs +++ b/tools/stern/src/Stern/Types.hs @@ -35,6 +35,7 @@ import Data.Range import Galley.Types.Teams import Galley.Types.Teams.Intra import Imports +import Wire.API.Team.Member (teamMemberJson) newtype TeamMemberInfo = TeamMemberInfo {tm :: TeamMember}