module Test.FeatureFlags.Channels where import Test.FeatureFlags.Util import Testlib.Prelude testChannels :: (HasCallStack) => APIAccess -> App () testChannels :: HasCallStack => APIAccess -> App () testChannels APIAccess access = String -> FeatureTests mkFeatureTests String "channels" FeatureTests -> (FeatureTests -> FeatureTests) -> FeatureTests forall a b. a -> (a -> b) -> b & Value -> FeatureTests -> FeatureTests addUpdate Value validConfig FeatureTests -> (FeatureTests -> FeatureTests) -> FeatureTests forall a b. a -> (a -> b) -> b & Value -> FeatureTests -> FeatureTests addInvalidUpdate Value invalidConfig 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 validConfig :: Value validConfig :: Value validConfig = [Pair] -> Value object [ String "status" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "enabled", String "config" String -> Value -> Pair forall a. ToJSON a => String -> a -> Pair .= [Pair] -> Value object [ String "allowed_to_create_channels" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "everyone", String "allowed_to_open_channels" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "everyone" ] ] invalidConfig :: Value invalidConfig :: Value invalidConfig = [Pair] -> Value object [ String "status" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "enabled", String "config" String -> Value -> Pair forall a. ToJSON a => String -> a -> Pair .= [Pair] -> Value object [ String "allowed_to_create_channels" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "everyone", String "allowed_to_open_channels" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "INVALID" ] ] testPatchChannels :: (HasCallStack) => App () testPatchChannels :: HasCallStack => App () testPatchChannels = do Domain -> String -> Value -> App () forall domain. (HasCallStack, MakesValue domain) => domain -> String -> Value -> App () checkPatch Domain OwnDomain String "channels" (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 "channels" (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 "channels" (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 "channels" (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 "allowed_to_create_channels" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "admins", String "allowed_to_open_channels" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "everyone" ] ]