Merge pull request #534 from begriffs/unicode-schema
Regression test for read/write unicode table names
This commit is contained in:
@@ -146,6 +146,7 @@ Test-Suite spec
|
|||||||
, Feature.QueryLimitedSpec
|
, Feature.QueryLimitedSpec
|
||||||
, Feature.RangeSpec
|
, Feature.RangeSpec
|
||||||
, Feature.StructureSpec
|
, Feature.StructureSpec
|
||||||
|
, Feature.UnicodeSpec
|
||||||
, Paths_postgrest
|
, Paths_postgrest
|
||||||
, PostgREST.App
|
, PostgREST.App
|
||||||
, PostgREST.Auth
|
, PostgREST.Auth
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
module Feature.UnicodeSpec where
|
||||||
|
|
||||||
|
import Test.Hspec
|
||||||
|
import Test.Hspec.Wai
|
||||||
|
import Test.Hspec.Wai.JSON
|
||||||
|
import Network.Wai (Application)
|
||||||
|
import Control.Monad (void)
|
||||||
|
|
||||||
|
spec :: SpecWith Application
|
||||||
|
spec =
|
||||||
|
describe "Reading and writing to unicode schema and table names" $
|
||||||
|
it "Can read and write values" $ do
|
||||||
|
get "/%D9%85%D9%88%D8%A7%D8%B1%D8%AF"
|
||||||
|
`shouldRespondWith` "[]"
|
||||||
|
|
||||||
|
void $ post "/%D9%85%D9%88%D8%A7%D8%B1%D8%AF"
|
||||||
|
[json| { "هویت": 1 } |]
|
||||||
|
|
||||||
|
get "/%D9%85%D9%88%D8%A7%D8%B1%D8%AF"
|
||||||
|
`shouldRespondWith` [json| [{ "هویت": 1 }] |]
|
||||||
@@ -18,6 +18,7 @@ import qualified Feature.QueryLimitedSpec
|
|||||||
import qualified Feature.QuerySpec
|
import qualified Feature.QuerySpec
|
||||||
import qualified Feature.RangeSpec
|
import qualified Feature.RangeSpec
|
||||||
import qualified Feature.StructureSpec
|
import qualified Feature.StructureSpec
|
||||||
|
import qualified Feature.UnicodeSpec
|
||||||
|
|
||||||
main :: IO ()
|
main :: IO ()
|
||||||
main = do
|
main = do
|
||||||
@@ -29,6 +30,7 @@ main = do
|
|||||||
let dbStructure = either (error.show) id result
|
let dbStructure = either (error.show) id result
|
||||||
withApp = return $ postgrest testCfg dbStructure pool
|
withApp = return $ postgrest testCfg dbStructure pool
|
||||||
ltdApp = return $ postgrest testLtdRowsCfg dbStructure pool
|
ltdApp = return $ postgrest testLtdRowsCfg dbStructure pool
|
||||||
|
unicodeApp = return $ postgrest testUnicodeCfg dbStructure pool
|
||||||
|
|
||||||
hspec $ do
|
hspec $ do
|
||||||
mapM_ (beforeAll_ resetDb . before withApp) specs
|
mapM_ (beforeAll_ resetDb . before withApp) specs
|
||||||
@@ -37,6 +39,10 @@ main = do
|
|||||||
beforeAll_ resetDb . before ltdApp $
|
beforeAll_ resetDb . before ltdApp $
|
||||||
describe "Feature.QueryLimitedSpec" Feature.QueryLimitedSpec.spec
|
describe "Feature.QueryLimitedSpec" Feature.QueryLimitedSpec.spec
|
||||||
|
|
||||||
|
-- this test runs with a different schema
|
||||||
|
beforeAll_ resetDb . before unicodeApp $
|
||||||
|
describe "Feature.UnicodeSpec" Feature.UnicodeSpec.spec
|
||||||
|
|
||||||
where
|
where
|
||||||
specs = map (uncurry describe) [
|
specs = map (uncurry describe) [
|
||||||
("Feature.AuthSpec" , Feature.AuthSpec.spec)
|
("Feature.AuthSpec" , Feature.AuthSpec.spec)
|
||||||
|
|||||||
@@ -21,6 +21,10 @@ testCfg :: AppConfig
|
|||||||
testCfg =
|
testCfg =
|
||||||
AppConfig testDbConn "postgrest_test_anonymous" "test" 3000 (secret "safe") 10 Nothing True
|
AppConfig testDbConn "postgrest_test_anonymous" "test" 3000 (secret "safe") 10 Nothing True
|
||||||
|
|
||||||
|
testUnicodeCfg :: AppConfig
|
||||||
|
testUnicodeCfg =
|
||||||
|
AppConfig testDbConn "postgrest_test_anonymous" "تست" 3000 (secret "safe") 10 Nothing True
|
||||||
|
|
||||||
testLtdRowsCfg :: AppConfig
|
testLtdRowsCfg :: AppConfig
|
||||||
testLtdRowsCfg =
|
testLtdRowsCfg =
|
||||||
AppConfig testDbConn "postgrest_test_anonymous" "test" 3000 (secret "safe") 10 (Just 3) True
|
AppConfig testDbConn "postgrest_test_anonymous" "test" 3000 (secret "safe") 10 (Just 3) True
|
||||||
|
|||||||
Vendored
+3
-1
@@ -2,10 +2,11 @@
|
|||||||
GRANT USAGE ON SCHEMA
|
GRANT USAGE ON SCHEMA
|
||||||
postgrest
|
postgrest
|
||||||
, test
|
, test
|
||||||
|
, "تست"
|
||||||
TO postgrest_test_anonymous;
|
TO postgrest_test_anonymous;
|
||||||
|
|
||||||
-- Schema test objects
|
-- Schema test objects
|
||||||
SET search_path = test, pg_catalog;
|
SET search_path = test, "تست", pg_catalog;
|
||||||
|
|
||||||
GRANT ALL ON TABLE
|
GRANT ALL ON TABLE
|
||||||
items
|
items
|
||||||
@@ -36,6 +37,7 @@ GRANT ALL ON TABLE
|
|||||||
, "Escap3e;"
|
, "Escap3e;"
|
||||||
, "ghostBusters"
|
, "ghostBusters"
|
||||||
, "withUnique"
|
, "withUnique"
|
||||||
|
, "موارد"
|
||||||
TO postgrest_test_anonymous;
|
TO postgrest_test_anonymous;
|
||||||
|
|
||||||
GRANT INSERT ON TABLE insertonly TO postgrest_test_anonymous;
|
GRANT INSERT ON TABLE insertonly TO postgrest_test_anonymous;
|
||||||
|
|||||||
Vendored
+15
-1
@@ -33,6 +33,13 @@ CREATE SCHEMA private;
|
|||||||
CREATE SCHEMA test;
|
CREATE SCHEMA test;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: تست; Type: SCHEMA; Schema: -; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE SCHEMA تست;
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: -
|
-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: -
|
||||||
--
|
--
|
||||||
@@ -162,6 +169,14 @@ CREATE FUNCTION anti_id(test.items) RETURNS bigint
|
|||||||
AS $_$ SELECT $1.id * -1 $_$;
|
AS $_$ SELECT $1.id * -1 $_$;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SET search_path = تست, pg_catalog;
|
||||||
|
|
||||||
|
CREATE TABLE موارد (
|
||||||
|
هویت bigint NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
SET search_path = test, pg_catalog;
|
SET search_path = test, pg_catalog;
|
||||||
|
|
||||||
--
|
--
|
||||||
@@ -985,7 +1000,6 @@ ALTER TABLE ONLY users_tasks
|
|||||||
ALTER TABLE ONLY users_tasks
|
ALTER TABLE ONLY users_tasks
|
||||||
ADD CONSTRAINT users_tasks_user_id_fkey FOREIGN KEY (user_id) REFERENCES users(id);
|
ADD CONSTRAINT users_tasks_user_id_fkey FOREIGN KEY (user_id) REFERENCES users(id);
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- PostgreSQL database dump complete
|
-- PostgreSQL database dump complete
|
||||||
--
|
--
|
||||||
|
|||||||
Reference in New Issue
Block a user