diff options
author | flown4qqqq <flown4qqqq@yandex-team.com> | 2025-01-24 00:47:07 +0300 |
---|---|---|
committer | flown4qqqq <flown4qqqq@yandex-team.com> | 2025-01-24 01:01:16 +0300 |
commit | bf896a57c7a7ffb14ba93068a4c3efeab50dfb36 (patch) | |
tree | 38715f12c0ddf2192da62ab1a41f119c0293e1e2 /yql/essentials/sql/v1/sql_ut_antlr4.cpp | |
parent | e0834724754ae9e26fd14e27027e69cc22d1939f (diff) | |
download | ydb-bf896a57c7a7ffb14ba93068a4c3efeab50dfb36.tar.gz |
Add option 'HASH' into CREATE USER
Need for: <https://github.com/ydb-platform/ydb-rfc/blob/main/backup_fstek.md>
```
CREATE USER my_user HASH '
{"hash": "p4ffeMugohqyBwyckYCK1TjJfz3LIHbKiGL+t+oEhzw=",
"salt": "U+tzBtgo06EBQCjlARA6Jg==",
"type": "argon2id"
}'
```
commit_hash:a0c695c2e2f7f794e5c4db978fe33a7bfea59e2c
Diffstat (limited to 'yql/essentials/sql/v1/sql_ut_antlr4.cpp')
-rw-r--r-- | yql/essentials/sql/v1/sql_ut_antlr4.cpp | 59 |
1 files changed, 51 insertions, 8 deletions
diff --git a/yql/essentials/sql/v1/sql_ut_antlr4.cpp b/yql/essentials/sql/v1/sql_ut_antlr4.cpp index 05e85605ef..4b1233bfee 100644 --- a/yql/essentials/sql/v1/sql_ut_antlr4.cpp +++ b/yql/essentials/sql/v1/sql_ut_antlr4.cpp @@ -483,7 +483,6 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) { )"); UNIT_ASSERT(reqCreateUser.IsOk()); - UNIT_ASSERT(reqCreateUser.Root); auto reqAlterUser = SqlToYql(R"( USE plato; @@ -491,7 +490,7 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) { )"); UNIT_ASSERT(!reqAlterUser.IsOk()); - UNIT_ASSERT_STRING_CONTAINS(reqAlterUser.Issues.ToString(), "Error: mismatched input ';' expecting {ENCRYPTED, LOGIN, NOLOGIN, PASSWORD, RENAME, WITH}"); + UNIT_ASSERT_STRING_CONTAINS(reqAlterUser.Issues.ToString(), "Error: mismatched input ';' expecting {ENCRYPTED, HASH, LOGIN, NOLOGIN, PASSWORD, RENAME, WITH}"); auto reqPasswordAndLogin = SqlToYql(R"( USE plato; @@ -499,7 +498,6 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) { )"); UNIT_ASSERT(reqPasswordAndLogin.IsOk()); - UNIT_ASSERT(reqPasswordAndLogin.Root); auto reqPasswordAndNoLogin = SqlToYql(R"( USE plato; @@ -507,7 +505,6 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) { )"); UNIT_ASSERT(reqPasswordAndNoLogin.IsOk()); - UNIT_ASSERT(reqPasswordAndNoLogin.Root); auto reqLogin = SqlToYql(R"( USE plato; @@ -515,7 +512,6 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) { )"); UNIT_ASSERT(reqLogin.IsOk()); - UNIT_ASSERT(reqLogin.Root); auto reqNoLogin = SqlToYql(R"( USE plato; @@ -523,7 +519,6 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) { )"); UNIT_ASSERT(reqNoLogin.IsOk()); - UNIT_ASSERT(reqNoLogin.Root); auto reqLoginNoLogin = SqlToYql(R"( USE plato; @@ -540,7 +535,6 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) { )"); UNIT_ASSERT(reqAlterLoginNoLogin.IsOk()); - UNIT_ASSERT(reqAlterLoginNoLogin.Root); auto reqAlterLoginNoLoginWithPassword = SqlToYql(R"( USE plato; @@ -549,7 +543,56 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) { )"); UNIT_ASSERT(reqAlterLoginNoLoginWithPassword.IsOk()); - UNIT_ASSERT(reqAlterLoginNoLoginWithPassword.Root); + } + + Y_UNIT_TEST(CreateUserWithHash) { + auto reqCreateUser = SqlToYql(R"( + USE plato; + CREATE USER user1 HASH '{ + "hash": "p4ffeMugohqyBwyckYCK1TjJfz3LIHbKiGL+t+oEhzw=", + "salt": "U+tzBtgo06EBQCjlARA6Jg==", + "type": "argon2id" + }'; + )"); + + UNIT_ASSERT(reqCreateUser.IsOk()); + + auto reqCreateUserWithNoLogin = SqlToYql(R"( + USE plato; + CREATE USER user1 HASH '{ + "hash": "p4ffeMugohqyBwyckYCK1TjJfz3LIHbKiGL+t+oEhzw=", + "salt": "U+tzBtgo06EBQCjlARA6Jg==", + "type": "argon2id" + }' + NOLOGIN; + )"); + + UNIT_ASSERT(reqCreateUserWithNoLogin.IsOk()); + + auto reqCreateUserWithPassword = SqlToYql(R"( + USE plato; + CREATE USER user1 HASH '{ + "hash": "p4ffeMugohqyBwyckYCK1TjJfz3LIHbKiGL+t+oEhzw=", + "salt": "U+tzBtgo06EBQCjlARA6Jg==", + "type": "argon2id" + }' + PASSWORD '123'; + )"); + + UNIT_ASSERT(!reqCreateUserWithPassword.IsOk()); + UNIT_ASSERT_STRING_CONTAINS(reqCreateUserWithPassword.Issues.ToString(), "Error: Conflicting or redundant options"); + + auto reqAlterUser = SqlToYql(R"( + USE plato; + CREATE USER user1; + ALTER USER user1 HASH '{ + "hash": "p4ffeMugohqyBwyckYCK1TjJfz3LIHbKiGL+t+oEhzw=", + "salt": "U+tzBtgo06EBQCjlARA6Jg==", + "type": "argon2id" + }'; + )"); + + UNIT_ASSERT(reqAlterUser.IsOk()); } Y_UNIT_TEST(JoinWithoutConcreteColumns) { |