mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-21 14:31:55 +03:00
044cd25df6
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4938 GitOrigin-RevId: 578a9176f5f28303b74607e008712f75c37355d8
1717 lines
75 KiB
Haskell
1717 lines
75 KiB
Haskell
module Hasura.Server.Init.ArgSpec
|
|
( spec,
|
|
)
|
|
where
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
import Database.PG.Query qualified as Q
|
|
import Hasura.GraphQL.Execute.Subscription.Options qualified as ES
|
|
import Hasura.GraphQL.Schema.NamingCase qualified as NC
|
|
import Hasura.Logging qualified as Logging
|
|
import Hasura.Prelude
|
|
import Hasura.Server.Auth qualified as Auth
|
|
import Hasura.Server.Cors qualified as Cors
|
|
import Hasura.Server.Init qualified as UUT
|
|
import Hasura.Server.Types qualified as Types
|
|
import Hasura.Session qualified as Session
|
|
import Options.Applicative qualified as Opt
|
|
import Test.Hspec qualified as Hspec
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
spec :: Hspec.Spec
|
|
spec = Hspec.describe "Arg Parsing Tests" $ do
|
|
mainParserSpec
|
|
downgradeParserSpec
|
|
serveParserSpec
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
mainParserSpec :: Hspec.Spec
|
|
mainParserSpec =
|
|
Hspec.describe "Main Command" $ do
|
|
Hspec.it "Accepts the serve command" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.parseHgeOpts @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["serve", "--server-port", "420"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
case result of
|
|
Opt.Success _do -> pure ()
|
|
Opt.Failure pf -> Hspec.expectationFailure $ show pf
|
|
Opt.CompletionInvoked _cr -> Hspec.expectationFailure "Completion Invoked"
|
|
|
|
Hspec.it "Accepts the export command" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.parseHgeOpts @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["export"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
case result of
|
|
Opt.Success _do -> pure ()
|
|
Opt.Failure pf -> Hspec.expectationFailure $ show pf
|
|
Opt.CompletionInvoked _cr -> Hspec.expectationFailure "Completion Invoked"
|
|
|
|
Hspec.it "Accepts the clean command" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.parseHgeOpts @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["clean"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
case result of
|
|
Opt.Success _do -> pure ()
|
|
Opt.Failure pf -> Hspec.expectationFailure $ show pf
|
|
Opt.CompletionInvoked _cr -> Hspec.expectationFailure "Completion Invoked"
|
|
|
|
Hspec.it "Accepts the downgrade command" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.parseHgeOpts @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["downgrade", "--to-v1.0.0-beta.1", "--dryRun"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
case result of
|
|
Opt.Success _do -> pure ()
|
|
Opt.Failure pf -> Hspec.expectationFailure $ show pf
|
|
Opt.CompletionInvoked _cr -> Hspec.expectationFailure "Completion Invoked"
|
|
|
|
Hspec.it "Accepts the version command" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.parseHgeOpts @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["version"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
case result of
|
|
Opt.Success _do -> pure ()
|
|
Opt.Failure pf -> Hspec.expectationFailure $ show pf
|
|
Opt.CompletionInvoked _cr -> Hspec.expectationFailure "Completion Invoked"
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
downgradeParserSpec :: Hspec.Spec
|
|
downgradeParserSpec =
|
|
Hspec.describe "Downgrade Command" $ do
|
|
Hspec.it "It accepts '--to-catalog-version'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.downgradeCommandParser Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--to-catalog-version", "v2.8.2"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
result `Hspec.shouldSatisfy` \case
|
|
Opt.Success do' -> do' == UUT.DowngradeOptions "v2.8.2" False
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--to-catalog-version' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.downgradeCommandParser Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--to-catalog-version"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--dry-run' with '--to-catalog-version'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.downgradeCommandParser Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--to-catalog-version", "v2.8.2", "--dryRun"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
result `Hspec.shouldSatisfy` \case
|
|
Opt.Success do' -> do' == UUT.DowngradeOptions "v2.8.2" True
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It accepts '--dry-run' with a downgrade shortcut" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.downgradeCommandParser Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--to-v1.0.0-beta.1", "--dryRun"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
result `Hspec.shouldSatisfy` \case
|
|
Opt.Success do' -> do' == UUT.DowngradeOptions "16" True
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--dry-run' does not expect an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.downgradeCommandParser Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--to-catalog-version", "v2.8.2", "--dryRun", "x"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--dry-run' must be run with '--to-catalog-version' or a downgrade shortcut" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.downgradeCommandParser Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--dryRun"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts a downgrade shortcut" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.downgradeCommandParser Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--to-v1.0.0-beta.1"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
result `Hspec.shouldSatisfy` \case
|
|
Opt.Success do' -> do' == UUT.DowngradeOptions "16" False
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails downgrade shortcuts dont expect arguments" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.downgradeCommandParser Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--to-v1.0.0-beta.1", "x"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
serveParserSpec :: Hspec.Spec
|
|
serveParserSpec =
|
|
Hspec.describe "Serve Command" $ do
|
|
Hspec.it "It accepts '--server-port'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--server-port", "420"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoPort result `Hspec.shouldSatisfy` \case
|
|
Opt.Success port -> port == Just 420
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--server-port' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--server-port"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--server-port' expects an integer" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--server-port", "four"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--server-host'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--server-host", "*"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoHost result `Hspec.shouldSatisfy` \case
|
|
Opt.Success host -> host == Just "*"
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--server-host' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--server-host"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts the flags for a 'RawConnParams'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--stripes", "3", "--connections", "2", "--timeout", "40", "--conn-lifetime", "400", "--use-prepared-statements", "true", "--pool-timeout", "45"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoConnParams result `Hspec.shouldSatisfy` \case
|
|
Opt.Success rawConnParams -> rawConnParams == UUT.RawConnParams (Just 3) (Just 2) (Just 40) (Just 400) (Just True) (Just 45)
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It accepts '--tx-iso'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--tx-iso", "read-committed"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoTxIso result `Hspec.shouldSatisfy` \case
|
|
Opt.Success txIso -> txIso == Just Q.ReadCommitted
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--tx-iso' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--tx-iso"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--tx-iso' expects valid TX isolation levels" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--tx-iso", "foo"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--admin-secret'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--admin-secret", "A monad is a monoid in the category of endofunctors"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoAdminSecret result `Hspec.shouldSatisfy` \case
|
|
Opt.Success adminSecret -> adminSecret == Just (Auth.hashAdminSecret "A monad is a monoid in the category of endofunctors")
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--admin-secret' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--admin-secret"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--access-key'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--access-key", "A monad is a monoid in the category of endofunctors"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoAdminSecret result `Hspec.shouldSatisfy` \case
|
|
Opt.Success adminSecret -> adminSecret == Just (Auth.hashAdminSecret "A monad is a monoid in the category of endofunctors")
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--access-key' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--access-key"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--admin-secret' and '--access-key' cannot be used in conjunction" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--admin-secret", "A monad is a monoid in the category of endofunctors", "--access-key", "x"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--auth-hook'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--auth-hook", "http://www.auth.com"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap (Auth.ahUrl . UUT.rsoAuthHook) result `Hspec.shouldSatisfy` \case
|
|
Opt.Success ahUrl -> ahUrl == Just "http://www.auth.com"
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--auth-hook' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--auth-hook"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--auth-hook-mode'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--auth-hook-mode", "POST"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap (Auth.ahType . UUT.rsoAuthHook) result `Hspec.shouldSatisfy` \case
|
|
Opt.Success ahType -> ahType == Just Auth.AHTPost
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--auth-hook-mode' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--auth-hook-mode"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--auth-hook-mode' only expects GET or POST" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--auth-hook-mode", "PUT"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--jwt-secret'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--jwt-secret", "{ \"jwk_url\": \"https://www.hasura.io\", \"issuer\": \"myapp\" }"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoJwtSecret result `Hspec.shouldSatisfy` \case
|
|
Opt.Success jwtSecret -> jwtSecret == either (const Nothing) Just (readJson "{ \"jwk_url\": \"https://www.hasura.io\", \"issuer\": \"myapp\" }")
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--jwt-secret' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--jwt-secret"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--jwt-secret' expects a JSON serialized 'JWTConfig' object" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--jwt-secret", "{ \"name\": \"Simon\", \"issuer\": \"myapp\" }"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--unauthorized-role'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--unauthorized-role", "guest"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoUnAuthRole result `Hspec.shouldSatisfy` \case
|
|
Opt.Success unAuthRole -> fmap Session.roleNameToTxt unAuthRole == Just "guest"
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--unauthorized-role' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--unauthorized-role"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--cors-domain'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--cors-domain", "https://*.foo.bar.com:8080, http://*.localhost, http://localhost:3000, http://example.com"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoCorsConfig result `Hspec.shouldSatisfy` \case
|
|
Opt.Success corsConfig ->
|
|
corsConfig == eitherToMaybe (Cors.readCorsDomains "https://*.foo.bar.com:8080, http://*.localhost, http://localhost:3000, http://example.com")
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--cors-domain' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--cors-domain"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--cors-domain' rejects an invalid CORS domains" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--cors-domain", "x"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--disable-cors'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--disable-cors"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoCorsConfig result `Hspec.shouldSatisfy` \case
|
|
Opt.Success corsConfig -> corsConfig == Just (Cors.CCDisabled False)
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It accepts '--disable-cors' supercedes '--cors-domain'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--cors-domain", "https://*.foo.bar.com:8080, http://*.localhost, http://localhost:3000, http://example.com", "--disable-cors"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoCorsConfig result `Hspec.shouldSatisfy` \case
|
|
Opt.Success corsConfig -> corsConfig == Just (Cors.CCDisabled False)
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--disable-cors' does not expect an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--disable-cors", "x"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--enable-console'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--enable-console"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoEnableConsole result `Hspec.shouldSatisfy` \case
|
|
Opt.Success enableConsole -> enableConsole == True
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--enable-console' does not expect an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--enable-console", "x"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--console-assets-dir'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--console-assets-dir", "/assets"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoConsoleAssetsDir result `Hspec.shouldSatisfy` \case
|
|
Opt.Success consoleAssetsDir -> consoleAssetsDir == Just "/assets"
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--console-assets-dir' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--console-assets-dir"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--enable-telemetry'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--enable-telemetry", "true"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoEnableTelemetry result `Hspec.shouldSatisfy` \case
|
|
Opt.Success enableTelemetry -> enableTelemetry == Just True
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--enable-telemetry' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--enable-telemetry"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--enable-telemetry' expects a boolean argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--enable-telemetry", "one"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--ws-read-cookie'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--ws-read-cookie"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoWsReadCookie result `Hspec.shouldSatisfy` \case
|
|
Opt.Success wsReadCookie -> wsReadCookie == True
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--ws-read-cookie' does not expect an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--ws-read-cookie", "x"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--stringify-numeric-types'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--stringify-numeric-types"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoStringifyNum result `Hspec.shouldSatisfy` \case
|
|
Opt.Success stringifyNum -> stringifyNum == True
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--stringify-numeric-types' does not expect an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--stringify-numeric-types", "x"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--v1-boolean-null-collapse'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--v1-boolean-null-collapse", "true"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoDangerousBooleanCollapse result `Hspec.shouldSatisfy` \case
|
|
Opt.Success dangerousBooleanCollapse -> dangerousBooleanCollapse == Just True
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--v1-boolean-null-collapse' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--v1-boolean-null-collapse"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--v1-boolean-null-collapse' expects a boolean argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--v1-boolean-null-collapse", "123"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--enabled-apis'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--enabled-apis", "graphql,pgdump"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoEnabledAPIs result `Hspec.shouldSatisfy` \case
|
|
Opt.Success enabledAPIs -> enabledAPIs == Just [UUT.GRAPHQL, UUT.PGDUMP]
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--enabled-apis' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--enabled-apis"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--enabled-apis' expects a valid API arguments" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--enabled-apis", "PIZZA"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--live-queries-multiplexed-refetch-interval'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--live-queries-multiplexed-refetch-interval", "54000"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoMxRefetchInt result `Hspec.shouldSatisfy` \case
|
|
Opt.Success mxRefetchInt -> mxRefetchInt == ES.mkRefetchInterval 54
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--live-queries-multiplexed-refetch-interval' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--live-queries-multiplexed-refetch-interval"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--live-queries-multiplexed-refetch-interval' expects an integer argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--live-queries-multiplexed-refetch-interval", "true"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--live-queries-multiplexed-batch-size'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--live-queries-multiplexed-batch-size", "102"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoMxBatchSize result `Hspec.shouldSatisfy` \case
|
|
Opt.Success mxBatchSize -> mxBatchSize == ES.mkBatchSize 102
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--live-queries-multiplexed-batch-size' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--live-queries-multiplexed-batch-size"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--live-queries-multiplexed-batch-size' expects an integer argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--live-queries-multiplexed-batch-size", "false"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--streaming-queries-multiplexed-refetch-interval'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--streaming-queries-multiplexed-refetch-interval", "57000"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoStreamingMxRefetchInt result `Hspec.shouldSatisfy` \case
|
|
Opt.Success streamingMxRefetchInt -> streamingMxRefetchInt == ES.mkRefetchInterval 57
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--streaming-queries-multiplexed-refetch-interval' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--streaming-queries-multiplexed-refetch-interval"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--streaming-queries-multiplexed-refetch-interval' expects an integer argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--streaming-queries-multiplexed-refetch-interval", "foo"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--streaming-queries-multiplexed-batch-size'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--streaming-queries-multiplexed-batch-size", "102"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoStreamingMxBatchSize result `Hspec.shouldSatisfy` \case
|
|
Opt.Success streamingMxBatchSize -> streamingMxBatchSize == ES.mkBatchSize 102
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--streaming-queries-multiplexed-batch-size' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--streaming-queries-multiplexed-batch-size"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--streaming-queries-multiplexed-batch-size' expects an integer argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--streaming-queries-multiplexed-batch-size", "102.5"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--enable-allowlist'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--enable-allowlist"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoEnableAllowlist result `Hspec.shouldSatisfy` \case
|
|
Opt.Success enableAllowList -> enableAllowList == True
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--enable-allowlist' does not expect an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--enable-allowlist", "x"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--enabled-log-types'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--enabled-log-types", "startup, webhook-log"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoEnabledLogTypes result `Hspec.shouldSatisfy` \case
|
|
Opt.Success enabledLogTypes -> enabledLogTypes == Just [Logging.ELTStartup, Logging.ELTWebhookLog]
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--enabled-log-types' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--enabled-log-types"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--enabled-log-types' expects a valid log types as arguments" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--enabled-log-types", "not-valid-log-type, startup"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--log-level'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--log-level", "warn"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoLogLevel result `Hspec.shouldSatisfy` \case
|
|
Opt.Success logLevel -> logLevel == Just Logging.LevelWarn
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--log-level' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--log-level"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--log-level' expects a valid log level argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--log-level", "shout"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--query-plan-cache-size'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--query-plan-cache-size", "65535"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
-- NOTE: This is deprecated flag whose value is dropped
|
|
Opt.Success _logLevel -> True
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--query-plan-cache-size' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--query-plan-cache-size"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--query-plan-cache-size' expects an integer argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--query-plan-cache-size", "false"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--dev-mode'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--dev-mode"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoDevMode result `Hspec.shouldSatisfy` \case
|
|
Opt.Success devMode -> devMode == True
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--dev-mode' does not expect an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--dev-mode", "x"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--admin-internal-errors'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--admin-internal-errors", "true"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoAdminInternalErrors result `Hspec.shouldSatisfy` \case
|
|
Opt.Success adminInternalErrors -> adminInternalErrors == Just True
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--admin-internal-errors' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--admin-internal-errors"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--admin-internal-errors' expects a boolean argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--admin-internal-errors", "five"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--events-http-pool-size'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--events-http-pool-size", "50"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoEventsHttpPoolSize result `Hspec.shouldSatisfy` \case
|
|
Opt.Success eventsHttpPoolSize -> eventsHttpPoolSize == Just 50
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--events-http-pool-size' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--events-http-pool-size"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--events-http-pool-size' expects an integer argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--events-http-pool-size", "10.5"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--events-fetch-interval'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--events-fetch-interval", "634"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoEventsFetchInterval result `Hspec.shouldSatisfy` \case
|
|
Opt.Success eventsFetchInterval -> eventsFetchInterval == Just 634
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--events-fetch-interval' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--events-fetch-interval"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--events-fetch-interval' expects an integer argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--events-fetch-interval", "true"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--async-actions-fetch-interval'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--async-actions-fetch-interval", "123"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoAsyncActionsFetchInterval result `Hspec.shouldSatisfy` \case
|
|
Opt.Success asyncActionsFetchInterval -> asyncActionsFetchInterval == Just 123
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--async-actions-fetch-interval' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--async-actions-fetch-interval"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--async-actions-fetch-interval' expects an integer argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--async-actions-fetch-interval", "true"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--enable-remote-schema-permissions'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--enable-remote-schema-permissions"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoEnableRemoteSchemaPermissions result `Hspec.shouldSatisfy` \case
|
|
Opt.Success enableRemoteSchemaPermissions -> enableRemoteSchemaPermissions == True
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--enable-remote-schema-permissions' does not expect an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--enable-remote-schema-permissions", "x"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--websocket-compression'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--websocket-compression"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoWebSocketCompression result `Hspec.shouldSatisfy` \case
|
|
Opt.Success webSocketCompression -> webSocketCompression == True
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--websocket-compression' does not expect an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--websocket-compression", "x"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--websocket-keepalive'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--websocket-keepalive", "8"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoWebSocketKeepAlive result `Hspec.shouldSatisfy` \case
|
|
Opt.Success webSocketKeepAlive -> webSocketKeepAlive == Just 8
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--websocket-keepalive' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--websocket-keepalive"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--websocket-keepalive' expects an integer argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--websocket-keepalive", "true"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--infer-function-permissions'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--infer-function-permissions", "false"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoInferFunctionPermissions result `Hspec.shouldSatisfy` \case
|
|
Opt.Success inferFunctionPermissions -> inferFunctionPermissions == Just False
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--infer-function-permissions' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--infer-function-permissions"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--infer-function-permissions' expects a boolean argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--infer-function-permissions", "five"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--enable-maintenance-mode'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--enable-maintenance-mode"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoEnableMaintenanceMode result `Hspec.shouldSatisfy` \case
|
|
Opt.Success enableMaintenanceMode -> enableMaintenanceMode == True
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--enable-maintenance-mode' does not expect an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--enable-maintenance-mode", "x"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--schema-sync-poll-interval'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--schema-sync-poll-interval", "5432"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoSchemaPollInterval result `Hspec.shouldSatisfy` \case
|
|
Opt.Success schemaPollInterval -> schemaPollInterval == Just 5432
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--schema-sync-poll-interval' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--schema-sync-poll-interval"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--schema-sync-poll-interval' expects an integer argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--schema-sync-poll-interval", "true"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--experimental-features'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--experimental-features", "inherited_roles,optimize_permission_filters"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoExperimentalFeatures result `Hspec.shouldSatisfy` \case
|
|
Opt.Success schemaPollInterval -> schemaPollInterval == Just [Types.EFInheritedRoles, Types.EFOptimizePermissionFilters]
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--experimental-features' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--experimental-features"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--experimental-features' expects a valid experimental feature options in the argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--experimental-features", "inherited_roles,pretend_feature"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--events-fetch-batch-size'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--events-fetch-batch-size", "40"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoEventsFetchBatchSize result `Hspec.shouldSatisfy` \case
|
|
Opt.Success eventsFetchBatchSize -> eventsFetchBatchSize == Just 40
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--events-fetch-batch-size' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--events-fetch-batch-size"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--events-fetch-batch-size' expects a non-negative integer argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--events-fetch-batch-size", "-40"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--graceful-shutdown-timeout'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--graceful-shutdown-timeout", "52"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoGracefulShutdownTimeout result `Hspec.shouldSatisfy` \case
|
|
Opt.Success gracefulShutdownTimeout -> gracefulShutdownTimeout == Just 52
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--graceful-shutdown-timeout' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--graceful-shutdown-timeout"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--graceful-shutdown-timeout' expects an integer argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--graceful-shutdown-timeout", "true"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--websocket-connection-init-timeout'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--websocket-connection-init-timeout", "34"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoWebSocketConnectionInitTimeout result `Hspec.shouldSatisfy` \case
|
|
Opt.Success webSocketConnectionInitTimeout -> webSocketConnectionInitTimeout == Just 34
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--websocket-connection-init-timeout' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--websocket-connection-init-timeout"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--websocket-connection-init-timeout' expects an integer argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--websocket-connection-init-timeout", "true"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--enable-metadata-query-logging'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--enable-metadata-query-logging"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoEnableMetadataQueryLoggingEnv result `Hspec.shouldSatisfy` \case
|
|
Opt.Success enableMetadataQueryLogging -> enableMetadataQueryLogging == True
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--enable-metadata-query-logging' does not expect an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--enable-metadata-query-logging", "x"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It accepts '--default-naming-convention'" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--default-naming-convention", "graphql-default"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
fmap UUT.rsoDefaultNamingConvention result `Hspec.shouldSatisfy` \case
|
|
Opt.Success enableMetadataQueryLogging -> enableMetadataQueryLogging == Just NC.GraphqlCase
|
|
Opt.Failure _pf -> False
|
|
Opt.CompletionInvoked _cr -> False
|
|
|
|
Hspec.it "It fails '--default-naming-convention' expects an argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--default-naming-convention"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|
|
|
|
Hspec.it "It fails '--default-naming-convention' expects a valid naming convention argument" $ do
|
|
let -- Given
|
|
parserInfo = Opt.info (UUT.serveCommandParser @Logging.Hasura Opt.<**> Opt.helper) Opt.fullDesc
|
|
-- When
|
|
argInput = ["--default-naming-convention", "mysterious-default"]
|
|
-- Then
|
|
result = Opt.execParserPure Opt.defaultPrefs parserInfo argInput
|
|
|
|
case result of
|
|
Opt.Success _result -> Hspec.expectationFailure "Should not parse successfully"
|
|
Opt.Failure _pf -> pure ()
|
|
Opt.CompletionInvoked cr -> Hspec.expectationFailure $ show cr
|