module Test.FeatureFlags.SearchVisibilityInbound where import qualified API.Galley as Public import qualified API.GalleyInternal as Internal import SetupHelpers import Test.FeatureFlags.Util import Testlib.Prelude testFeatureNoConfigMultiSearchVisibilityInbound :: (HasCallStack) => App () testFeatureNoConfigMultiSearchVisibilityInbound :: HasCallStack => App () testFeatureNoConfigMultiSearchVisibilityInbound = do (Value _owner1, String team1, [Value] _) <- Domain -> Int -> App (Value, String, [Value]) forall domain. (HasCallStack, MakesValue domain) => domain -> Int -> App (Value, String, [Value]) createTeam Domain OwnDomain Int 0 (Value _owner2, String team2, [Value] _) <- Domain -> Int -> App (Value, String, [Value]) forall domain. (HasCallStack, MakesValue domain) => domain -> Int -> App (Value, String, [Value]) createTeam Domain OwnDomain Int 0 HasCallStack => Response -> App () Response -> App () assertSuccess (Response -> App ()) -> App Response -> App () forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<< Domain -> String -> String -> String -> App Response forall domain team. (HasCallStack, MakesValue domain, MakesValue team) => domain -> team -> String -> String -> App Response Internal.setTeamFeatureStatus Domain OwnDomain String team2 String "searchVisibilityInbound" String "enabled" Response response <- Domain -> String -> [String] -> App Response forall domain featureName. (HasCallStack, MakesValue domain, MakesValue featureName) => domain -> featureName -> [String] -> App Response Internal.getFeatureStatusMulti Domain OwnDomain String "searchVisibilityInbound" [String team1, String team2] [Value] statuses <- Response response.json App Value -> String -> App Value forall a. (HasCallStack, MakesValue a) => a -> String -> App Value %. String "default_status" App Value -> (Value -> App [Value]) -> App [Value] forall a b. App a -> (a -> App b) -> App b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= Value -> App [Value] forall a. (HasCallStack, MakesValue a) => a -> App [Value] asList [Value] -> Int forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length [Value] statuses Int -> Int -> App () forall a. (MakesValue a, HasCallStack) => a -> Int -> App () `shouldMatchInt` Int 2 [Value] statuses [Value] -> [Value] -> App () forall a b. (MakesValue a, MakesValue b, HasCallStack) => a -> b -> App () `shouldMatchSet` [[Pair] -> Value object [String "team" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String team1, String "status" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "disabled"], [Pair] -> Value object [String "team" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String team2, String "status" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "enabled"]] testSearchVisibilityInboundInternal :: (HasCallStack) => APIAccess -> App () testSearchVisibilityInboundInternal :: HasCallStack => APIAccess -> App () testSearchVisibilityInboundInternal APIAccess access = do let featureName :: String featureName = String "searchVisibilityInbound" (Value alice, String tid, [Value] _) <- Domain -> Int -> App (Value, String, [Value]) forall domain. (HasCallStack, MakesValue domain) => domain -> Int -> App (Value, String, [Value]) createTeam Domain OwnDomain Int 2 Value eve <- Domain -> CreateUser -> App Value forall domain. (HasCallStack, MakesValue domain) => domain -> CreateUser -> App Value randomUser Domain OwnDomain CreateUser forall a. Default a => a def HasCallStack => Response -> App () Response -> App () assertForbidden (Response -> App ()) -> App Response -> App () forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<< Value -> String -> String -> App Response forall user tid. (HasCallStack, MakesValue user, MakesValue tid) => user -> tid -> String -> App Response Public.getTeamFeature Value eve String tid String featureName String -> Value -> String -> Value -> App () forall user tid. (HasCallStack, MakesValue user, MakesValue tid) => String -> user -> tid -> Value -> App () checkFeature String featureName Value alice String tid Value disabled App () -> App () forall (f :: * -> *) a. Functor f => f a -> f () void (App () -> App ()) -> App () -> App () forall a b. (a -> b) -> a -> b $ Value -> (WebSocket -> App ()) -> App () forall w a. (HasCallStack, ToWSConnect w) => w -> (WebSocket -> App a) -> App a withWebSocket Value alice ((WebSocket -> App ()) -> App ()) -> (WebSocket -> App ()) -> App () forall a b. (a -> b) -> a -> b $ \WebSocket ws -> do HasCallStack => APIAccess -> WebSocket -> String -> String -> Value -> App () APIAccess -> WebSocket -> String -> String -> Value -> App () setFlag APIAccess access WebSocket ws String tid String featureName Value enabled HasCallStack => APIAccess -> WebSocket -> String -> String -> Value -> App () APIAccess -> WebSocket -> String -> String -> Value -> App () setFlag APIAccess access WebSocket ws String tid String featureName Value disabled