blob: 6811f02e200e03490656eba007ebe9c7a87bc91f [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.ignite.internal.sql;
import org.apache.ignite.internal.sql.command.SqlAlterUserCommand;
import org.apache.ignite.internal.sql.command.SqlCreateUserCommand;
import org.apache.ignite.internal.sql.command.SqlDropUserCommand;
import org.junit.Test;
/**
* Tests for SQL parser: CREATE INDEX.
*/
@SuppressWarnings({"UnusedReturnValue"})
public class SqlParserUserSelfTest extends SqlParserAbstractSelfTest {
/**
* Tests for CREATE USER command.
*
* @throws Exception If failed.
*/
@Test
public void testCreateUser() throws Exception {
// Base.
parseValidateCreate("CREATE USER test WITH PASSWORD 'test'", "TEST", "test");
parseValidateCreate("CREATE USER \"test\" WITH PASSWORD 'test'", "test", "test");
parseValidateCreate("CREATE USER \"Test Name\" WITH PASSWORD 'PaSSword'",
"Test Name", "PaSSword");
parseValidateCreate("CREATE USER test WITH PASSWORD '~!''@#$%^&*()_+=-`:\"|?.,/'",
"TEST", "~!'@#$%^&*()_+=-`:\"|?.,/");
assertParseError(null, "CREATE USER 'test' WITH PASSWORD 'test'",
"Unexpected token: \"test\" (expected: \"[username identifier]\")");
assertParseError(null, "CREATE USER \"PUBLIC\".\"test\" WITH PASSWORD 'test'",
"Unexpected token: \".\" (expected: \"WITH\")");
}
/**
* Tests for ALTER USER command.
*
* @throws Exception If failed.
*/
@Test
public void testAlterUser() throws Exception {
// Base.
parseValidateAlter("ALTER USER test WITH PASSWORD 'test'", "TEST", "test");
parseValidateAlter("ALTER USER \"test\" WITH PASSWORD 'test'", "test", "test");
parseValidateAlter("ALTER USER \"Test Name\" WITH PASSWORD 'PaSSword'",
"Test Name", "PaSSword");
parseValidateAlter("ALTER USER test WITH PASSWORD '~!''@#$%^&*()_+=-`:\"|?.,/'",
"TEST", "~!'@#$%^&*()_+=-`:\"|?.,/");
assertParseError(null, "ALTER USER 'test' WITH PASSWORD 'test'",
"Unexpected token: \"test\" (expected: \"[username identifier]\")");
assertParseError(null, "ALTER USER \"PUBLIC\".\"test\" WITH PASSWORD 'test'",
"Unexpected token: \".\" (expected: \"WITH\")");
}
/**
* Tests for ALTER USER command.
*
* @throws Exception If failed.
*/
@Test
public void testDropUser() throws Exception {
// Base.
parseValidateDrop("DROP USER test", "TEST");
parseValidateDrop("DROP USER \"test\"", "test");
parseValidateDrop("DROP USER \"Test Name\"", "Test Name");
assertParseError(null, "DROP USER 'test'",
"Unexpected token: \"test\" (expected: \"[username identifier]\")");
assertParseError(null, "DROP USER \"PUBLIC\".\"test\"",
"Unexpected token: \".\"");
}
/**
* Parse and validate SQL script.
*
* @param sql SQL.
* @param expUserName Expected user name.
* @param expPasswd Expected user password.
* @return Command.
*/
private static SqlCreateUserCommand parseValidateCreate(String sql, String expUserName, String expPasswd) {
SqlCreateUserCommand cmd = (SqlCreateUserCommand)new SqlParser(null, sql).nextCommand();
assertEquals(expUserName, cmd.userName());
assertEquals(expPasswd, cmd.password());
return cmd;
}
/**
* Parse and validate SQL script.
*
* @param sql SQL.
* @param expUserName Expected user name.
* @param expPasswd Expected user password.
* @return Command.
*/
private static SqlAlterUserCommand parseValidateAlter(String sql, String expUserName, String expPasswd) {
SqlAlterUserCommand cmd = (SqlAlterUserCommand)new SqlParser(null, sql).nextCommand();
assertEquals(expUserName, cmd.userName());
assertEquals(expPasswd, cmd.password());
return cmd;
}
/**
* Parse and validate SQL script.
*
* @param sql SQL.
* @param expUserName Expected user name.
* @return Command.
*/
private static SqlDropUserCommand parseValidateDrop(String sql, String expUserName) {
SqlDropUserCommand cmd = (SqlDropUserCommand)new SqlParser(null, sql).nextCommand();
assertEquals(expUserName, cmd.userName());
return cmd;
}
}