module Test.FeatureFlags.SelfDeletingMessages where import qualified Data.Aeson.Types as A import Test.FeatureFlags.Util import Testlib.Prelude feature :: (ToJSON timeout) => [A.Pair] -> timeout -> Value feature :: forall timeout. ToJSON timeout => [Pair] -> timeout -> Value feature [Pair] ps timeout timeout = [Pair] -> Value object ( [Pair] ps [Pair] -> [Pair] -> [Pair] forall a. Semigroup a => a -> a -> a <> [ String "ttl" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "unlimited", String "config" String -> Value -> Pair forall a. ToJSON a => String -> a -> Pair .= [Pair] -> Value object [String "enforcedTimeoutSeconds" String -> Value -> Pair forall a. ToJSON a => String -> a -> Pair .= timeout -> Value forall a. ToJSON a => a -> Value toJSON timeout timeout] ] ) testSelfDeletingMessages :: (HasCallStack) => APIAccess -> App () testSelfDeletingMessages :: HasCallStack => APIAccess -> App () testSelfDeletingMessages APIAccess access = String -> FeatureTests mkFeatureTests String "selfDeletingMessages" FeatureTests -> (FeatureTests -> FeatureTests) -> FeatureTests forall a b. a -> (a -> b) -> b & Value -> FeatureTests -> FeatureTests addUpdate ([Pair] -> Int -> Value forall timeout. ToJSON timeout => [Pair] -> timeout -> Value feature [String "status" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "disabled"] (Int 0 :: Int)) FeatureTests -> (FeatureTests -> FeatureTests) -> FeatureTests forall a b. a -> (a -> b) -> b & Value -> FeatureTests -> FeatureTests addUpdate ([Pair] -> Int -> Value forall timeout. ToJSON timeout => [Pair] -> timeout -> Value feature [String "status" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "enabled"] (Int 30 :: Int)) FeatureTests -> (FeatureTests -> FeatureTests) -> FeatureTests forall a b. a -> (a -> b) -> b & Value -> FeatureTests -> FeatureTests addInvalidUpdate ([Pair] -> String -> Value forall timeout. ToJSON timeout => [Pair] -> timeout -> Value feature [String "status" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "enabled"] String "") FeatureTests -> (FeatureTests -> App ()) -> App () forall a b. a -> (a -> b) -> b & Domain -> APIAccess -> FeatureTests -> App () forall domain. (HasCallStack, MakesValue domain) => domain -> APIAccess -> FeatureTests -> App () runFeatureTests Domain OwnDomain APIAccess access testPatchSelfDeletingMessages :: (HasCallStack) => App () testPatchSelfDeletingMessages :: HasCallStack => App () testPatchSelfDeletingMessages = do Domain -> String -> Value -> App () forall domain. (HasCallStack, MakesValue domain) => domain -> String -> Value -> App () checkPatch Domain OwnDomain String "selfDeletingMessages" (Value -> App ()) -> Value -> App () forall a b. (a -> b) -> a -> b $ [Pair] -> Value object [String "lockStatus" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "locked"] Domain -> String -> Value -> App () forall domain. (HasCallStack, MakesValue domain) => domain -> String -> Value -> App () checkPatch Domain OwnDomain String "selfDeletingMessages" (Value -> App ()) -> Value -> App () forall a b. (a -> b) -> a -> b $ [Pair] -> Value object [String "status" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "disabled"] Domain -> String -> Value -> App () forall domain. (HasCallStack, MakesValue domain) => domain -> String -> Value -> App () checkPatch Domain OwnDomain String "selfDeletingMessages" (Value -> App ()) -> Value -> App () forall a b. (a -> b) -> a -> b $ [Pair] -> Value object [String "lockStatus" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "locked", String "status" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "disabled"] Domain -> String -> Value -> App () forall domain. (HasCallStack, MakesValue domain) => domain -> String -> Value -> App () checkPatch Domain OwnDomain String "selfDeletingMessages" (Value -> App ()) -> Value -> App () forall a b. (a -> b) -> a -> b $ [Pair] -> Value object [String "lockStatus" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "unlocked", String "config" String -> Value -> Pair forall a. ToJSON a => String -> a -> Pair .= [Pair] -> Value object [String "enforcedTimeoutSeconds" String -> Value -> Pair forall a. ToJSON a => String -> a -> Pair .= Scientific -> Value A.Number Scientific 30]] Domain -> String -> Value -> App () forall domain. (HasCallStack, MakesValue domain) => domain -> String -> Value -> App () checkPatch Domain OwnDomain String "selfDeletingMessages" (Value -> App ()) -> Value -> App () forall a b. (a -> b) -> a -> b $ [Pair] -> Value object [String "config" String -> Value -> Pair forall a. ToJSON a => String -> a -> Pair .= [Pair] -> Value object [String "enforcedTimeoutSeconds" String -> Value -> Pair forall a. ToJSON a => String -> a -> Pair .= Scientific -> Value A.Number Scientific 60]]