test: Split spec tests into multiple subfolders

Signed-off-by: Wolfgang Walther <walther@technowledgy.de>
This commit is contained in:
Wolfgang Walther
2022-01-28 19:26:33 +01:00
committed by Wolfgang Walther
parent 8a722e2cfe
commit 927ff6f1e5
32 changed files with 126 additions and 124 deletions
+29 -29
View File
@@ -167,42 +167,42 @@ test-suite spec
NoImplicitPrelude NoImplicitPrelude
hs-source-dirs: test/spec hs-source-dirs: test/spec
main-is: Main.hs main-is: Main.hs
other-modules: Feature.AndOrParamsSpec other-modules: Feature.Auth.AsymmetricJwtSpec
Feature.AsymmetricJwtSpec Feature.Auth.AudienceJwtSecretSpec
Feature.AudienceJwtSecretSpec Feature.Auth.AuthSpec
Feature.AuthSpec Feature.Auth.BinaryJwtSecretSpec
Feature.BinaryJwtSecretSpec Feature.Auth.NoAnonSpec
Feature.Auth.NoJwtSpec
Feature.ConcurrentSpec Feature.ConcurrentSpec
Feature.CorsSpec Feature.CorsSpec
Feature.DeleteSpec
Feature.DisabledOpenApiSpec
Feature.EmbedDisambiguationSpec
Feature.EmbedInnerJoinSpec
Feature.ExtraSearchPathSpec Feature.ExtraSearchPathSpec
Feature.HtmlRawOutputSpec
Feature.InsertSpec
Feature.IgnorePrivOpenApiSpec
Feature.JsonOperatorSpec
Feature.LegacyGucsSpec Feature.LegacyGucsSpec
Feature.MultipleSchemaSpec Feature.OpenApi.DisabledOpenApiSpec
Feature.NoAnonSpec Feature.OpenApi.IgnorePrivOpenApiSpec
Feature.NoJwtSpec Feature.OpenApi.OpenApiSpec
Feature.NonexistentSchemaSpec Feature.OpenApi.ProxySpec
Feature.OpenApiSpec Feature.OpenApi.RootSpec
Feature.OptionsSpec Feature.OptionsSpec
Feature.ProxySpec Feature.Query.AndOrParamsSpec
Feature.QueryLimitedSpec Feature.Query.DeleteSpec
Feature.QuerySpec Feature.Query.EmbedDisambiguationSpec
Feature.RangeSpec Feature.Query.EmbedInnerJoinSpec
Feature.RawOutputTypesSpec Feature.Query.HtmlRawOutputSpec
Feature.Query.InsertSpec
Feature.Query.JsonOperatorSpec
Feature.Query.MultipleSchemaSpec
Feature.Query.NonexistentSchemaSpec
Feature.Query.QueryLimitedSpec
Feature.Query.QuerySpec
Feature.Query.RangeSpec
Feature.Query.RawOutputTypesSpec
Feature.Query.RpcSpec
Feature.Query.SingularSpec
Feature.Query.UnicodeSpec
Feature.Query.UpdateSpec
Feature.Query.UpsertSpec
Feature.RollbackSpec Feature.RollbackSpec
Feature.RootSpec
Feature.RpcPreRequestGucsSpec Feature.RpcPreRequestGucsSpec
Feature.RpcSpec
Feature.SingularSpec
Feature.UnicodeSpec
Feature.UpdateSpec
Feature.UpsertSpec
SpecHelper SpecHelper
TestTypes TestTypes
build-depends: base >= 4.9 && < 4.16 build-depends: base >= 4.9 && < 4.16
+4 -4
View File
@@ -444,11 +444,11 @@ findProc qi argumentsKeys paramsAsSingleObject allProcs contentType isInvPost =
-- If the function is called with post and has a single unnamed parameter -- If the function is called with post and has a single unnamed parameter
-- it can be called depending on content type and the parameter type -- it can be called depending on content type and the parameter type
hasSingleUnnamedParam ProcDescription{pdParams=[ProcParam{ppType}]} = isInvPost && case (contentType, ppType) of hasSingleUnnamedParam ProcDescription{pdParams=[ProcParam{ppType}]} = isInvPost && case (contentType, ppType) of
(CTApplicationJSON, "json") -> True (CTApplicationJSON, "json") -> True
(CTApplicationJSON, "jsonb") -> True (CTApplicationJSON, "jsonb") -> True
(CTTextPlain, "text") -> True (CTTextPlain, "text") -> True
(CTOctetStream, "bytea") -> True (CTOctetStream, "bytea") -> True
_ -> False _ -> False
hasSingleUnnamedParam _ = False hasSingleUnnamedParam _ = False
matchesParams proc = matchesParams proc =
let let
@@ -1,4 +1,4 @@
module Feature.AsymmetricJwtSpec where module Feature.Auth.AsymmetricJwtSpec where
import Network.Wai (Application) import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.AudienceJwtSecretSpec where module Feature.Auth.AudienceJwtSecretSpec where
import Network.Wai (Application) import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.AuthSpec where module Feature.Auth.AuthSpec where
import Network.Wai (Application) import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.BinaryJwtSecretSpec where module Feature.Auth.BinaryJwtSecretSpec where
import Network.Wai (Application) import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.NoAnonSpec where module Feature.Auth.NoAnonSpec where
import Network.Wai (Application) import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.NoJwtSpec where module Feature.Auth.NoJwtSpec where
import Network.Wai (Application) import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.DisabledOpenApiSpec where module Feature.OpenApi.DisabledOpenApiSpec where
import Network.HTTP.Types import Network.HTTP.Types
import Network.Wai (Application) import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.IgnorePrivOpenApiSpec where module Feature.OpenApi.IgnorePrivOpenApiSpec where
import Control.Lens ((^?)) import Control.Lens ((^?))
@@ -1,4 +1,4 @@
module Feature.OpenApiSpec where module Feature.OpenApi.OpenApiSpec where
import Control.Lens ((^?)) import Control.Lens ((^?))
import Data.Aeson.Types (Value (..)) import Data.Aeson.Types (Value (..))
@@ -1,4 +1,4 @@
module Feature.ProxySpec where module Feature.OpenApi.ProxySpec where
import Network.Wai (Application) import Network.Wai (Application)
import Test.Hspec hiding (pendingWith) import Test.Hspec hiding (pendingWith)
@@ -1,4 +1,4 @@
module Feature.RootSpec where module Feature.OpenApi.RootSpec where
import Network.HTTP.Types import Network.HTTP.Types
import Network.Wai (Application) import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.AndOrParamsSpec where module Feature.Query.AndOrParamsSpec where
import Network.Wai (Application) import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.DeleteSpec where module Feature.Query.DeleteSpec where
import Network.Wai (Application) import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.EmbedDisambiguationSpec where module Feature.Query.EmbedDisambiguationSpec where
import Network.Wai (Application) import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.EmbedInnerJoinSpec where module Feature.Query.EmbedInnerJoinSpec where
import Network.HTTP.Types import Network.HTTP.Types
import Network.Wai (Application) import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.HtmlRawOutputSpec where module Feature.Query.HtmlRawOutputSpec where
import Network.Wai (Application) import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.InsertSpec where module Feature.Query.InsertSpec where
import Data.List (lookup) import Data.List (lookup)
import Network.Wai (Application) import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.JsonOperatorSpec where module Feature.Query.JsonOperatorSpec where
import Network.Wai (Application) import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.MultipleSchemaSpec where module Feature.Query.MultipleSchemaSpec where
import Control.Lens ((^?)) import Control.Lens ((^?))
import Data.Aeson.Lens import Data.Aeson.Lens
@@ -1,4 +1,4 @@
module Feature.NonexistentSchemaSpec where module Feature.Query.NonexistentSchemaSpec where
import Network.Wai (Application) import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.QueryLimitedSpec where module Feature.Query.QueryLimitedSpec where
import Network.Wai (Application) import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.QuerySpec where module Feature.Query.QuerySpec where
import Network.Wai (Application) import Network.Wai (Application)
import Network.Wai.Test (SResponse (simpleHeaders)) import Network.Wai.Test (SResponse (simpleHeaders))
@@ -1,4 +1,4 @@
module Feature.RangeSpec where module Feature.Query.RangeSpec where
import qualified Data.ByteString.Lazy as BL import qualified Data.ByteString.Lazy as BL
@@ -1,4 +1,4 @@
module Feature.RawOutputTypesSpec where module Feature.Query.RawOutputTypesSpec where
import Network.Wai (Application) import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.RpcSpec where module Feature.Query.RpcSpec where
import qualified Data.ByteString.Lazy as BL (empty, readFile) import qualified Data.ByteString.Lazy as BL (empty, readFile)
@@ -1,4 +1,4 @@
module Feature.SingularSpec where module Feature.Query.SingularSpec where
import Network.Wai (Application) import Network.Wai (Application)
import Network.Wai.Test (SResponse (..)) import Network.Wai.Test (SResponse (..))
@@ -1,4 +1,4 @@
module Feature.UnicodeSpec where module Feature.Query.UnicodeSpec where
import Network.Wai (Application) import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.UpdateSpec where module Feature.Query.UpdateSpec where
import Network.Wai (Application) import Network.Wai (Application)
import Test.Hspec hiding (pendingWith) import Test.Hspec hiding (pendingWith)
@@ -1,4 +1,4 @@
module Feature.UpsertSpec where module Feature.Query.UpsertSpec where
import Network.Wai (Application) import Network.Wai (Application)
+64 -62
View File
@@ -19,42 +19,42 @@ import SpecHelper
import qualified PostgREST.AppState as AppState import qualified PostgREST.AppState as AppState
import qualified Feature.AndOrParamsSpec import qualified Feature.Auth.AsymmetricJwtSpec
import qualified Feature.AsymmetricJwtSpec import qualified Feature.Auth.AudienceJwtSecretSpec
import qualified Feature.AudienceJwtSecretSpec import qualified Feature.Auth.AuthSpec
import qualified Feature.AuthSpec import qualified Feature.Auth.BinaryJwtSecretSpec
import qualified Feature.BinaryJwtSecretSpec import qualified Feature.Auth.NoAnonSpec
import qualified Feature.Auth.NoJwtSpec
import qualified Feature.ConcurrentSpec import qualified Feature.ConcurrentSpec
import qualified Feature.CorsSpec import qualified Feature.CorsSpec
import qualified Feature.DeleteSpec
import qualified Feature.DisabledOpenApiSpec
import qualified Feature.EmbedDisambiguationSpec
import qualified Feature.EmbedInnerJoinSpec
import qualified Feature.ExtraSearchPathSpec import qualified Feature.ExtraSearchPathSpec
import qualified Feature.HtmlRawOutputSpec
import qualified Feature.IgnorePrivOpenApiSpec
import qualified Feature.InsertSpec
import qualified Feature.JsonOperatorSpec
import qualified Feature.LegacyGucsSpec import qualified Feature.LegacyGucsSpec
import qualified Feature.MultipleSchemaSpec import qualified Feature.OpenApi.DisabledOpenApiSpec
import qualified Feature.NoAnonSpec import qualified Feature.OpenApi.IgnorePrivOpenApiSpec
import qualified Feature.NoJwtSpec import qualified Feature.OpenApi.OpenApiSpec
import qualified Feature.NonexistentSchemaSpec import qualified Feature.OpenApi.ProxySpec
import qualified Feature.OpenApiSpec import qualified Feature.OpenApi.RootSpec
import qualified Feature.OptionsSpec import qualified Feature.OptionsSpec
import qualified Feature.ProxySpec import qualified Feature.Query.AndOrParamsSpec
import qualified Feature.QueryLimitedSpec import qualified Feature.Query.DeleteSpec
import qualified Feature.QuerySpec import qualified Feature.Query.EmbedDisambiguationSpec
import qualified Feature.RangeSpec import qualified Feature.Query.EmbedInnerJoinSpec
import qualified Feature.RawOutputTypesSpec import qualified Feature.Query.HtmlRawOutputSpec
import qualified Feature.Query.InsertSpec
import qualified Feature.Query.JsonOperatorSpec
import qualified Feature.Query.MultipleSchemaSpec
import qualified Feature.Query.NonexistentSchemaSpec
import qualified Feature.Query.QueryLimitedSpec
import qualified Feature.Query.QuerySpec
import qualified Feature.Query.RangeSpec
import qualified Feature.Query.RawOutputTypesSpec
import qualified Feature.Query.RpcSpec
import qualified Feature.Query.SingularSpec
import qualified Feature.Query.UnicodeSpec
import qualified Feature.Query.UpdateSpec
import qualified Feature.Query.UpsertSpec
import qualified Feature.RollbackSpec import qualified Feature.RollbackSpec
import qualified Feature.RootSpec
import qualified Feature.RpcPreRequestGucsSpec import qualified Feature.RpcPreRequestGucsSpec
import qualified Feature.RpcSpec
import qualified Feature.SingularSpec
import qualified Feature.UnicodeSpec
import qualified Feature.UpdateSpec
import qualified Feature.UpsertSpec
main :: IO () main :: IO ()
@@ -122,23 +122,23 @@ main = do
analyzeTable "child_entities" analyzeTable "child_entities"
specs = uncurry describe <$> [ specs = uncurry describe <$> [
("Feature.AndOrParamsSpec" , Feature.AndOrParamsSpec.spec actualPgVersion) ("Feature.Query.AndOrParamsSpec" , Feature.Query.AndOrParamsSpec.spec actualPgVersion)
, ("Feature.AuthSpec" , Feature.AuthSpec.spec actualPgVersion) , ("Feature.Auth.AuthSpec" , Feature.Auth.AuthSpec.spec actualPgVersion)
, ("Feature.ConcurrentSpec" , Feature.ConcurrentSpec.spec) , ("Feature.ConcurrentSpec" , Feature.ConcurrentSpec.spec)
, ("Feature.CorsSpec" , Feature.CorsSpec.spec) , ("Feature.CorsSpec" , Feature.CorsSpec.spec)
, ("Feature.DeleteSpec" , Feature.DeleteSpec.spec) , ("Feature.Query.DeleteSpec" , Feature.Query.DeleteSpec.spec)
, ("Feature.EmbedDisambiguationSpec" , Feature.EmbedDisambiguationSpec.spec) , ("Feature.Query.EmbedDisambiguationSpec" , Feature.Query.EmbedDisambiguationSpec.spec)
, ("Feature.EmbedInnerJoinSpec" , Feature.EmbedInnerJoinSpec.spec) , ("Feature.Query.EmbedInnerJoinSpec" , Feature.Query.EmbedInnerJoinSpec.spec)
, ("Feature.InsertSpec" , Feature.InsertSpec.spec actualPgVersion) , ("Feature.Query.InsertSpec" , Feature.Query.InsertSpec.spec actualPgVersion)
, ("Feature.JsonOperatorSpec" , Feature.JsonOperatorSpec.spec actualPgVersion) , ("Feature.Query.JsonOperatorSpec" , Feature.Query.JsonOperatorSpec.spec actualPgVersion)
, ("Feature.OpenApiSpec" , Feature.OpenApiSpec.spec actualPgVersion) , ("Feature.OpenApi.OpenApiSpec" , Feature.OpenApi.OpenApiSpec.spec actualPgVersion)
, ("Feature.OptionsSpec" , Feature.OptionsSpec.spec actualPgVersion) , ("Feature.OptionsSpec" , Feature.OptionsSpec.spec actualPgVersion)
, ("Feature.QuerySpec" , Feature.QuerySpec.spec actualPgVersion) , ("Feature.Query.QuerySpec" , Feature.Query.QuerySpec.spec actualPgVersion)
, ("Feature.RawOutputTypesSpec" , Feature.RawOutputTypesSpec.spec) , ("Feature.Query.RawOutputTypesSpec" , Feature.Query.RawOutputTypesSpec.spec)
, ("Feature.RpcSpec" , Feature.RpcSpec.spec actualPgVersion) , ("Feature.Query.RpcSpec" , Feature.Query.RpcSpec.spec actualPgVersion)
, ("Feature.SingularSpec" , Feature.SingularSpec.spec) , ("Feature.Query.SingularSpec" , Feature.Query.SingularSpec.spec)
, ("Feature.UpdateSpec" , Feature.UpdateSpec.spec) , ("Feature.Query.UpdateSpec" , Feature.Query.UpdateSpec.spec)
, ("Feature.UpsertSpec" , Feature.UpsertSpec.spec actualPgVersion) , ("Feature.Query.UpsertSpec" , Feature.Query.UpsertSpec.spec actualPgVersion)
] ]
hspec $ do hspec $ do
@@ -146,59 +146,59 @@ main = do
-- we analyze to get accurate results from EXPLAIN -- we analyze to get accurate results from EXPLAIN
parallel $ beforeAll_ analyze . before withApp $ parallel $ beforeAll_ analyze . before withApp $
describe "Feature.RangeSpec" Feature.RangeSpec.spec describe "Feature.Query.RangeSpec" Feature.Query.RangeSpec.spec
-- this test runs with a raw-output-media-types set to text/html -- this test runs with a raw-output-media-types set to text/html
parallel $ before htmlRawOutputApp $ parallel $ before htmlRawOutputApp $
describe "Feature.HtmlRawOutputSpec" Feature.HtmlRawOutputSpec.spec describe "Feature.Query.HtmlRawOutputSpec" Feature.Query.HtmlRawOutputSpec.spec
-- this test runs with a different server flag -- this test runs with a different server flag
parallel $ before maxRowsApp $ parallel $ before maxRowsApp $
describe "Feature.QueryLimitedSpec" Feature.QueryLimitedSpec.spec describe "Feature.Query.QueryLimitedSpec" Feature.Query.QueryLimitedSpec.spec
-- this test runs with a different schema -- this test runs with a different schema
parallel $ before unicodeApp $ parallel $ before unicodeApp $
describe "Feature.UnicodeSpec" Feature.UnicodeSpec.spec describe "Feature.Query.UnicodeSpec" Feature.Query.UnicodeSpec.spec
-- this test runs with openapi-mode set to disabled -- this test runs with openapi-mode set to disabled
parallel $ before disabledOpenApi $ parallel $ before disabledOpenApi $
describe "Feature.DisabledOpenApiSpec" Feature.DisabledOpenApiSpec.spec describe "Feature.DisabledOpenApiSpec" Feature.OpenApi.DisabledOpenApiSpec.spec
-- this test runs with openapi-mode set to ignore-acl -- this test runs with openapi-mode set to ignore-acl
parallel $ before ignorePrivOpenApi $ parallel $ before ignorePrivOpenApi $
describe "Feature.IgnorePrivOpenApiSpec" Feature.IgnorePrivOpenApiSpec.spec describe "Feature.OpenApi.IgnorePrivOpenApiSpec" Feature.OpenApi.IgnorePrivOpenApiSpec.spec
-- this test runs with a proxy -- this test runs with a proxy
parallel $ before proxyApp $ parallel $ before proxyApp $
describe "Feature.ProxySpec" Feature.ProxySpec.spec describe "Feature.OpenApi.ProxySpec" Feature.OpenApi.ProxySpec.spec
-- this test runs without an anonymous role -- this test runs without an anonymous role
parallel $ before noAnonApp $ parallel $ before noAnonApp $
describe "Feature.NoAnonSpec" Feature.NoAnonSpec.spec describe "Feature.Auth.NoAnonSpec" Feature.Auth.NoAnonSpec.spec
-- this test runs without a JWT secret -- this test runs without a JWT secret
parallel $ before noJwtApp $ parallel $ before noJwtApp $
describe "Feature.NoJwtSpec" Feature.NoJwtSpec.spec describe "Feature.Auth.NoJwtSpec" Feature.Auth.NoJwtSpec.spec
-- this test runs with a binary JWT secret -- this test runs with a binary JWT secret
parallel $ before binaryJwtApp $ parallel $ before binaryJwtApp $
describe "Feature.BinaryJwtSecretSpec" Feature.BinaryJwtSecretSpec.spec describe "Feature.Auth.BinaryJwtSecretSpec" Feature.Auth.BinaryJwtSecretSpec.spec
-- this test runs with a binary JWT secret and an audience claim -- this test runs with a binary JWT secret and an audience claim
parallel $ before audJwtApp $ parallel $ before audJwtApp $
describe "Feature.AudienceJwtSecretSpec" Feature.AudienceJwtSecretSpec.spec describe "Feature.Auth.AudienceJwtSecretSpec" Feature.Auth.AudienceJwtSecretSpec.spec
-- this test runs with asymmetric JWK -- this test runs with asymmetric JWK
parallel $ before asymJwkApp $ parallel $ before asymJwkApp $
describe "Feature.AsymmetricJwtSpec" Feature.AsymmetricJwtSpec.spec describe "Feature.Auth.AsymmetricJwtSpec" Feature.Auth.AsymmetricJwtSpec.spec
-- this test runs with asymmetric JWKSet -- this test runs with asymmetric JWKSet
parallel $ before asymJwkSetApp $ parallel $ before asymJwkSetApp $
describe "Feature.AsymmetricJwtSpec" Feature.AsymmetricJwtSpec.spec describe "Feature.Auth.AsymmetricJwtSpec" Feature.Auth.AsymmetricJwtSpec.spec
-- this test runs with a nonexistent db-schema -- this test runs with a nonexistent db-schema
parallel $ before nonexistentSchemaApp $ parallel $ before nonexistentSchemaApp $
describe "Feature.NonexistentSchemaSpec" Feature.NonexistentSchemaSpec.spec describe "Feature.Query.NonexistentSchemaSpec" Feature.Query.NonexistentSchemaSpec.spec
-- this test runs with an extra search path -- this test runs with an extra search path
parallel $ before extraSearchPathApp $ parallel $ before extraSearchPathApp $
@@ -206,13 +206,15 @@ main = do
-- this test runs with a root spec function override -- this test runs with a root spec function override
parallel $ before rootSpecApp $ parallel $ before rootSpecApp $
describe "Feature.RootSpec" Feature.RootSpec.spec describe "Feature.OpenApi.RootSpec" Feature.OpenApi.RootSpec.spec
-- this test runs with a pre request function override
parallel $ before responseHeadersApp $ parallel $ before responseHeadersApp $
describe "Feature.RpcPreRequestGucsSpec" Feature.RpcPreRequestGucsSpec.spec describe "Feature.RpcPreRequestGucsSpec" Feature.RpcPreRequestGucsSpec.spec
-- this test runs with multiple schemas -- this test runs with multiple schemas
parallel $ before multipleSchemaApp $ parallel $ before multipleSchemaApp $
describe "Feature.MultipleSchemaSpec" Feature.MultipleSchemaSpec.spec describe "Feature.Query.MultipleSchemaSpec" Feature.Query.MultipleSchemaSpec.spec
-- this test runs with db-uses-legacy-gucs = false -- this test runs with db-uses-legacy-gucs = false
parallel $ before testCfgLegacyGucsApp $ parallel $ before testCfgLegacyGucsApp $