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
hs-source-dirs: test/spec
main-is: Main.hs
other-modules: Feature.AndOrParamsSpec
Feature.AsymmetricJwtSpec
Feature.AudienceJwtSecretSpec
Feature.AuthSpec
Feature.BinaryJwtSecretSpec
other-modules: Feature.Auth.AsymmetricJwtSpec
Feature.Auth.AudienceJwtSecretSpec
Feature.Auth.AuthSpec
Feature.Auth.BinaryJwtSecretSpec
Feature.Auth.NoAnonSpec
Feature.Auth.NoJwtSpec
Feature.ConcurrentSpec
Feature.CorsSpec
Feature.DeleteSpec
Feature.DisabledOpenApiSpec
Feature.EmbedDisambiguationSpec
Feature.EmbedInnerJoinSpec
Feature.ExtraSearchPathSpec
Feature.HtmlRawOutputSpec
Feature.InsertSpec
Feature.IgnorePrivOpenApiSpec
Feature.JsonOperatorSpec
Feature.LegacyGucsSpec
Feature.MultipleSchemaSpec
Feature.NoAnonSpec
Feature.NoJwtSpec
Feature.NonexistentSchemaSpec
Feature.OpenApiSpec
Feature.OpenApi.DisabledOpenApiSpec
Feature.OpenApi.IgnorePrivOpenApiSpec
Feature.OpenApi.OpenApiSpec
Feature.OpenApi.ProxySpec
Feature.OpenApi.RootSpec
Feature.OptionsSpec
Feature.ProxySpec
Feature.QueryLimitedSpec
Feature.QuerySpec
Feature.RangeSpec
Feature.RawOutputTypesSpec
Feature.Query.AndOrParamsSpec
Feature.Query.DeleteSpec
Feature.Query.EmbedDisambiguationSpec
Feature.Query.EmbedInnerJoinSpec
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.RootSpec
Feature.RpcPreRequestGucsSpec
Feature.RpcSpec
Feature.SingularSpec
Feature.UnicodeSpec
Feature.UpdateSpec
Feature.UpsertSpec
SpecHelper
TestTypes
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
-- it can be called depending on content type and the parameter type
hasSingleUnnamedParam ProcDescription{pdParams=[ProcParam{ppType}]} = isInvPost && case (contentType, ppType) of
(CTApplicationJSON, "json") -> True
(CTApplicationJSON, "json") -> True
(CTApplicationJSON, "jsonb") -> True
(CTTextPlain, "text") -> True
(CTOctetStream, "bytea") -> True
_ -> False
(CTTextPlain, "text") -> True
(CTOctetStream, "bytea") -> True
_ -> False
hasSingleUnnamedParam _ = False
matchesParams proc =
let
@@ -1,4 +1,4 @@
module Feature.AsymmetricJwtSpec where
module Feature.Auth.AsymmetricJwtSpec where
import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.AudienceJwtSecretSpec where
module Feature.Auth.AudienceJwtSecretSpec where
import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.AuthSpec where
module Feature.Auth.AuthSpec where
import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.BinaryJwtSecretSpec where
module Feature.Auth.BinaryJwtSecretSpec where
import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.NoAnonSpec where
module Feature.Auth.NoAnonSpec where
import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.NoJwtSpec where
module Feature.Auth.NoJwtSpec where
import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.DisabledOpenApiSpec where
module Feature.OpenApi.DisabledOpenApiSpec where
import Network.HTTP.Types
import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.IgnorePrivOpenApiSpec where
module Feature.OpenApi.IgnorePrivOpenApiSpec where
import Control.Lens ((^?))
@@ -1,4 +1,4 @@
module Feature.OpenApiSpec where
module Feature.OpenApi.OpenApiSpec where
import Control.Lens ((^?))
import Data.Aeson.Types (Value (..))
@@ -1,4 +1,4 @@
module Feature.ProxySpec where
module Feature.OpenApi.ProxySpec where
import Network.Wai (Application)
import Test.Hspec hiding (pendingWith)
@@ -1,4 +1,4 @@
module Feature.RootSpec where
module Feature.OpenApi.RootSpec where
import Network.HTTP.Types
import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.AndOrParamsSpec where
module Feature.Query.AndOrParamsSpec where
import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.DeleteSpec where
module Feature.Query.DeleteSpec where
import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.EmbedDisambiguationSpec where
module Feature.Query.EmbedDisambiguationSpec where
import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.EmbedInnerJoinSpec where
module Feature.Query.EmbedInnerJoinSpec where
import Network.HTTP.Types
import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.HtmlRawOutputSpec where
module Feature.Query.HtmlRawOutputSpec where
import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.InsertSpec where
module Feature.Query.InsertSpec where
import Data.List (lookup)
import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.JsonOperatorSpec where
module Feature.Query.JsonOperatorSpec where
import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.MultipleSchemaSpec where
module Feature.Query.MultipleSchemaSpec where
import Control.Lens ((^?))
import Data.Aeson.Lens
@@ -1,4 +1,4 @@
module Feature.NonexistentSchemaSpec where
module Feature.Query.NonexistentSchemaSpec where
import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.QueryLimitedSpec where
module Feature.Query.QueryLimitedSpec where
import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.QuerySpec where
module Feature.Query.QuerySpec where
import Network.Wai (Application)
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
@@ -1,4 +1,4 @@
module Feature.RawOutputTypesSpec where
module Feature.Query.RawOutputTypesSpec where
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)
@@ -1,4 +1,4 @@
module Feature.SingularSpec where
module Feature.Query.SingularSpec where
import Network.Wai (Application)
import Network.Wai.Test (SResponse (..))
@@ -1,4 +1,4 @@
module Feature.UnicodeSpec where
module Feature.Query.UnicodeSpec where
import Network.Wai (Application)
@@ -1,4 +1,4 @@
module Feature.UpdateSpec where
module Feature.Query.UpdateSpec where
import Network.Wai (Application)
import Test.Hspec hiding (pendingWith)
@@ -1,4 +1,4 @@
module Feature.UpsertSpec where
module Feature.Query.UpsertSpec where
import Network.Wai (Application)
+64 -62
View File
@@ -19,42 +19,42 @@ import SpecHelper
import qualified PostgREST.AppState as AppState
import qualified Feature.AndOrParamsSpec
import qualified Feature.AsymmetricJwtSpec
import qualified Feature.AudienceJwtSecretSpec
import qualified Feature.AuthSpec
import qualified Feature.BinaryJwtSecretSpec
import qualified Feature.Auth.AsymmetricJwtSpec
import qualified Feature.Auth.AudienceJwtSecretSpec
import qualified Feature.Auth.AuthSpec
import qualified Feature.Auth.BinaryJwtSecretSpec
import qualified Feature.Auth.NoAnonSpec
import qualified Feature.Auth.NoJwtSpec
import qualified Feature.ConcurrentSpec
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.HtmlRawOutputSpec
import qualified Feature.IgnorePrivOpenApiSpec
import qualified Feature.InsertSpec
import qualified Feature.JsonOperatorSpec
import qualified Feature.LegacyGucsSpec
import qualified Feature.MultipleSchemaSpec
import qualified Feature.NoAnonSpec
import qualified Feature.NoJwtSpec
import qualified Feature.NonexistentSchemaSpec
import qualified Feature.OpenApiSpec
import qualified Feature.OpenApi.DisabledOpenApiSpec
import qualified Feature.OpenApi.IgnorePrivOpenApiSpec
import qualified Feature.OpenApi.OpenApiSpec
import qualified Feature.OpenApi.ProxySpec
import qualified Feature.OpenApi.RootSpec
import qualified Feature.OptionsSpec
import qualified Feature.ProxySpec
import qualified Feature.QueryLimitedSpec
import qualified Feature.QuerySpec
import qualified Feature.RangeSpec
import qualified Feature.RawOutputTypesSpec
import qualified Feature.Query.AndOrParamsSpec
import qualified Feature.Query.DeleteSpec
import qualified Feature.Query.EmbedDisambiguationSpec
import qualified Feature.Query.EmbedInnerJoinSpec
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.RootSpec
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 ()
@@ -122,23 +122,23 @@ main = do
analyzeTable "child_entities"
specs = uncurry describe <$> [
("Feature.AndOrParamsSpec" , Feature.AndOrParamsSpec.spec actualPgVersion)
, ("Feature.AuthSpec" , Feature.AuthSpec.spec actualPgVersion)
, ("Feature.ConcurrentSpec" , Feature.ConcurrentSpec.spec)
, ("Feature.CorsSpec" , Feature.CorsSpec.spec)
, ("Feature.DeleteSpec" , Feature.DeleteSpec.spec)
, ("Feature.EmbedDisambiguationSpec" , Feature.EmbedDisambiguationSpec.spec)
, ("Feature.EmbedInnerJoinSpec" , Feature.EmbedInnerJoinSpec.spec)
, ("Feature.InsertSpec" , Feature.InsertSpec.spec actualPgVersion)
, ("Feature.JsonOperatorSpec" , Feature.JsonOperatorSpec.spec actualPgVersion)
, ("Feature.OpenApiSpec" , Feature.OpenApiSpec.spec actualPgVersion)
, ("Feature.OptionsSpec" , Feature.OptionsSpec.spec actualPgVersion)
, ("Feature.QuerySpec" , Feature.QuerySpec.spec actualPgVersion)
, ("Feature.RawOutputTypesSpec" , Feature.RawOutputTypesSpec.spec)
, ("Feature.RpcSpec" , Feature.RpcSpec.spec actualPgVersion)
, ("Feature.SingularSpec" , Feature.SingularSpec.spec)
, ("Feature.UpdateSpec" , Feature.UpdateSpec.spec)
, ("Feature.UpsertSpec" , Feature.UpsertSpec.spec actualPgVersion)
("Feature.Query.AndOrParamsSpec" , Feature.Query.AndOrParamsSpec.spec actualPgVersion)
, ("Feature.Auth.AuthSpec" , Feature.Auth.AuthSpec.spec actualPgVersion)
, ("Feature.ConcurrentSpec" , Feature.ConcurrentSpec.spec)
, ("Feature.CorsSpec" , Feature.CorsSpec.spec)
, ("Feature.Query.DeleteSpec" , Feature.Query.DeleteSpec.spec)
, ("Feature.Query.EmbedDisambiguationSpec" , Feature.Query.EmbedDisambiguationSpec.spec)
, ("Feature.Query.EmbedInnerJoinSpec" , Feature.Query.EmbedInnerJoinSpec.spec)
, ("Feature.Query.InsertSpec" , Feature.Query.InsertSpec.spec actualPgVersion)
, ("Feature.Query.JsonOperatorSpec" , Feature.Query.JsonOperatorSpec.spec actualPgVersion)
, ("Feature.OpenApi.OpenApiSpec" , Feature.OpenApi.OpenApiSpec.spec actualPgVersion)
, ("Feature.OptionsSpec" , Feature.OptionsSpec.spec actualPgVersion)
, ("Feature.Query.QuerySpec" , Feature.Query.QuerySpec.spec actualPgVersion)
, ("Feature.Query.RawOutputTypesSpec" , Feature.Query.RawOutputTypesSpec.spec)
, ("Feature.Query.RpcSpec" , Feature.Query.RpcSpec.spec actualPgVersion)
, ("Feature.Query.SingularSpec" , Feature.Query.SingularSpec.spec)
, ("Feature.Query.UpdateSpec" , Feature.Query.UpdateSpec.spec)
, ("Feature.Query.UpsertSpec" , Feature.Query.UpsertSpec.spec actualPgVersion)
]
hspec $ do
@@ -146,59 +146,59 @@ main = do
-- we analyze to get accurate results from EXPLAIN
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
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
parallel $ before maxRowsApp $
describe "Feature.QueryLimitedSpec" Feature.QueryLimitedSpec.spec
describe "Feature.Query.QueryLimitedSpec" Feature.Query.QueryLimitedSpec.spec
-- this test runs with a different schema
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
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
parallel $ before ignorePrivOpenApi $
describe "Feature.IgnorePrivOpenApiSpec" Feature.IgnorePrivOpenApiSpec.spec
describe "Feature.OpenApi.IgnorePrivOpenApiSpec" Feature.OpenApi.IgnorePrivOpenApiSpec.spec
-- this test runs with a proxy
parallel $ before proxyApp $
describe "Feature.ProxySpec" Feature.ProxySpec.spec
describe "Feature.OpenApi.ProxySpec" Feature.OpenApi.ProxySpec.spec
-- this test runs without an anonymous role
parallel $ before noAnonApp $
describe "Feature.NoAnonSpec" Feature.NoAnonSpec.spec
describe "Feature.Auth.NoAnonSpec" Feature.Auth.NoAnonSpec.spec
-- this test runs without a JWT secret
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
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
parallel $ before audJwtApp $
describe "Feature.AudienceJwtSecretSpec" Feature.AudienceJwtSecretSpec.spec
describe "Feature.Auth.AudienceJwtSecretSpec" Feature.Auth.AudienceJwtSecretSpec.spec
-- this test runs with asymmetric JWK
parallel $ before asymJwkApp $
describe "Feature.AsymmetricJwtSpec" Feature.AsymmetricJwtSpec.spec
describe "Feature.Auth.AsymmetricJwtSpec" Feature.Auth.AsymmetricJwtSpec.spec
-- this test runs with asymmetric JWKSet
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
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
parallel $ before extraSearchPathApp $
@@ -206,13 +206,15 @@ main = do
-- this test runs with a root spec function override
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 $
describe "Feature.RpcPreRequestGucsSpec" Feature.RpcPreRequestGucsSpec.spec
-- this test runs with multiple schemas
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
parallel $ before testCfgLegacyGucsApp $