Files
postgrest/test/spec/Feature/ExtraSearchPathSpec.hs
T
Laurence IslaandGitHub f7745e1569 fix: Allow schema names with special characters in the search path
Fixes regression where the search path did not recognize schemas with uppercase, spaces and other special characters in their names.
2022-06-23 18:54:43 -05:00

68 lines
2.9 KiB
Haskell

module Feature.ExtraSearchPathSpec where
import Network.HTTP.Types
import Network.Wai (Application)
import Test.Hspec
import Test.Hspec.Wai
import Test.Hspec.Wai.JSON
import Protolude hiding (get)
import SpecHelper
spec :: SpecWith ((), Application)
spec = describe "extra search path" $ do
it "finds the ltree <@ operator on the public schema" $
request methodGet "/ltree_sample?path=cd.Top.Science.Astronomy" [] ""
`shouldRespondWith` [json|[
{"path":"Top.Science.Astronomy"},
{"path":"Top.Science.Astronomy.Astrophysics"},
{"path":"Top.Science.Astronomy.Cosmology"}]|]
{ matchHeaders = [matchContentTypeJson] }
it "finds the ltree ~ operator on the public schema" $ do
request methodGet "/ltree_sample?path=match.*.Science" [] ""
`shouldRespondWith` [json|[
{"path": "Top.Science"}]|]
{ matchHeaders = [matchContentTypeJson] }
request methodGet "/ltree_sample?path=match.*.Astronomy.*" [] ""
`shouldRespondWith` [json|[
{"path": "Top.Science.Astronomy"},
{"path": "Top.Science.Astronomy.Astrophysics"},
{"path": "Top.Science.Astronomy.Cosmology"},
{"path": "Top.Collections.Pictures.Astronomy"},
{"path": "Top.Collections.Pictures.Astronomy.Stars"},
{"path": "Top.Collections.Pictures.Astronomy.Galaxies"},
{"path": "Top.Collections.Pictures.Astronomy.Astronauts"}]|]
{ matchHeaders = [matchContentTypeJson] }
request methodGet "/ltree_sample?path=match.*.Collections.*{1,2}" [] ""
`shouldRespondWith` [json|[
{"path": "Top.Collections.Pictures"},
{"path": "Top.Collections.Pictures.Astronomy"}]|]
{ matchHeaders = [matchContentTypeJson] }
it "finds the ltree nlevel function on the public schema, used through a computed column" $
request methodGet "/ltree_sample?select=number_of_labels&path=eq.Top.Science" [] ""
`shouldRespondWith` [json|[{"number_of_labels":2}]|]
{ matchHeaders = [matchContentTypeJson] }
it "finds the isn = operator on the extensions schema" $
request methodGet "/isn_sample?id=eq.978-0-393-04002-9&select=name" [] ""
`shouldRespondWith` [json|[{"name":"Mathematics: From the Birth of Numbers"}]|]
{ matchHeaders = [matchContentTypeJson] }
it "finds the isn is_valid function on the extensions schema" $
request methodGet "/rpc/is_valid_isbn?input=978-0-393-04002-9" [] ""
`shouldRespondWith` [json|true|]
{ matchHeaders = [matchContentTypeJson] }
it "finds a function on a schema with uppercase and special characters in its name" $
request methodGet "/rpc/special_extended_schema?val=value" [] ""
`shouldRespondWith` [json|"value"|]
{ matchHeaders = [matchContentTypeJson] }
it "can detect fk relations through multiple views recursively when middle views are in extra search path" $
get "/consumers_extra_view?select=*,orders_view(*)" `shouldRespondWith` 200