mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-29 02:52:13 +00:00
Added unit tests for parsing sha256_password and sha256_hash with salt
This commit is contained in:
parent
c98e25d36c
commit
6189b28489
@ -5,13 +5,14 @@
|
|||||||
#include <Parsers/ASTIdentifier.h>
|
#include <Parsers/ASTIdentifier.h>
|
||||||
#include <Parsers/ParserAlterQuery.h>
|
#include <Parsers/ParserAlterQuery.h>
|
||||||
#include <Parsers/ParserCreateQuery.h>
|
#include <Parsers/ParserCreateQuery.h>
|
||||||
|
#include <Parsers/Access/ParserCreateUserQuery.h>
|
||||||
#include <Parsers/ParserOptimizeQuery.h>
|
#include <Parsers/ParserOptimizeQuery.h>
|
||||||
#include <Parsers/ParserQueryWithOutput.h>
|
#include <Parsers/ParserQueryWithOutput.h>
|
||||||
#include <Parsers/formatAST.h>
|
#include <Parsers/formatAST.h>
|
||||||
#include <Parsers/parseQuery.h>
|
#include <Parsers/parseQuery.h>
|
||||||
|
#include "Access/AccessEntityIO.cpp"
|
||||||
#include <string_view>
|
#include <string_view>
|
||||||
|
#include <regex>
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
@ -50,9 +51,26 @@ TEST_P(ParserTest, parseQuery)
|
|||||||
{
|
{
|
||||||
ASTPtr ast;
|
ASTPtr ast;
|
||||||
ASSERT_NO_THROW(ast = parseQuery(*parser, input_text.begin(), input_text.end(), 0, 0));
|
ASSERT_NO_THROW(ast = parseQuery(*parser, input_text.begin(), input_text.end(), 0, 0));
|
||||||
|
|
||||||
|
if (std::string("CREATE USER or ALTER USER query").compare(parser->getName())
|
||||||
|
&& std::string("ATTACH access entity query").compare(parser->getName()))
|
||||||
|
{
|
||||||
EXPECT_EQ(expected_ast, serializeAST(*ast->clone(), false));
|
EXPECT_EQ(expected_ast, serializeAST(*ast->clone(), false));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
if (input_text.starts_with("ATTACH"))
|
||||||
|
{
|
||||||
|
auto salt = (dynamic_cast<const ASTCreateUserQuery *>(ast.get())->auth_data)->getSalt();
|
||||||
|
EXPECT_TRUE(std::regex_match(salt, std::regex(expected_ast)));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EXPECT_TRUE(std::regex_match(serializeAST(*ast->clone(), false), std::regex(expected_ast)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
ASSERT_THROW(parseQuery(*parser, input_text.begin(), input_text.end(), 0, 0), DB::Exception);
|
ASSERT_THROW(parseQuery(*parser, input_text.begin(), input_text.end(), 0, 0), DB::Exception);
|
||||||
}
|
}
|
||||||
@ -226,3 +244,35 @@ INSTANTIATE_TEST_SUITE_P(ParserCreateDatabaseQuery, ParserTest,
|
|||||||
"CREATE DATABASE db\nENGINE = Foo\nSETTINGS a = 1, b = 2\nTABLE OVERRIDE `a`\n(\n ORDER BY (`id`, `version`)\n)\nCOMMENT 'db comment'"
|
"CREATE DATABASE db\nENGINE = Foo\nSETTINGS a = 1, b = 2\nTABLE OVERRIDE `a`\n(\n ORDER BY (`id`, `version`)\n)\nCOMMENT 'db comment'"
|
||||||
}
|
}
|
||||||
})));
|
})));
|
||||||
|
|
||||||
|
INSTANTIATE_TEST_SUITE_P(ParserCreateUserQuery, ParserTest,
|
||||||
|
::testing::Combine(
|
||||||
|
::testing::Values(std::make_shared<ParserCreateUserQuery>()),
|
||||||
|
::testing::ValuesIn(std::initializer_list<ParserTestCase>{
|
||||||
|
{
|
||||||
|
"CREATE USER user1 IDENTIFIED WITH sha256_password BY 'qwe123'",
|
||||||
|
"CREATE USER user1 IDENTIFIED WITH sha256_hash BY '[A-Za-z0-9]{64}' '[A-Za-z0-9]{64}'"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ALTER USER user1 IDENTIFIED WITH sha256_password BY 'qwe123'",
|
||||||
|
"ALTER USER user1 IDENTIFIED WITH sha256_hash BY '[A-Za-z0-9]{64}' '[A-Za-z0-9]{64}'"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ATTACH USER user1 IDENTIFIED WITH sha256_hash BY '2CC4880302693485717D34E06046594CFDFE425E3F04AA5A094C4AABAB3CB0BF' 'EFFD7F6B03B3EA68B8F86C1E91614DD50E42EB31EF7160524916444D58B5E264';",
|
||||||
|
"ALTER USER user1 IDENTIFIED WITH sha256_hash BY '[A-Za-z0-9]{64}' '[A-Za-z0-9]{64}'"
|
||||||
|
}
|
||||||
|
})));
|
||||||
|
|
||||||
|
INSTANTIATE_TEST_SUITE_P(ParserAttachUserQuery, ParserTest,
|
||||||
|
::testing::Combine(
|
||||||
|
::testing::Values(std::make_shared<ParserAttachAccessEntity>()),
|
||||||
|
::testing::ValuesIn(std::initializer_list<ParserTestCase>{
|
||||||
|
{
|
||||||
|
"ATTACH USER user1 IDENTIFIED WITH sha256_hash BY '2CC4880302693485717D34E06046594CFDFE425E3F04AA5A094C4AABAB3CB0BF' 'EFFD7F6B03B3EA68B8F86C1E91614DD50E42EB31EF7160524916444D58B5E264';",
|
||||||
|
"^[A-Za-z0-9]{64}$"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ATTACH USER user1 IDENTIFIED WITH sha256_hash BY '2CC4880302693485717D34E06046594CFDFE425E3F04AA5A094C4AABAB3CB0BF'", //for users created in older releases that sha256_password has no salt
|
||||||
|
"^$"
|
||||||
|
}
|
||||||
|
})));
|
||||||
|
Loading…
Reference in New Issue
Block a user