polardbxengine/mysql-test/suite/x/t/connection_expire.test

227 lines
7.1 KiB
Plaintext

## Password expired handling
## Preamble
--source include/xplugin_preamble.inc
--source include/xplugin_create_user.inc
## Test starts here
SELECT password_last_changed into @passwordchanged from mysql.user where host='localhost' and user='x_root';
create user foo@localhost;
alter user foo@localhost password expire;
create user xplugin@localhost identified by 'xplugin';
grant all on *.* to xplugin@localhost;
alter user xplugin@localhost password expire;
##
--echo
--echo Test: Expired password with no support for sandbox mode (should fail)
--write_file $MYSQL_TMP_DIR/connection_expire.tmp
-->import connection.macro
-->callmacro Verify_its_xprotocol_connection
-->expecterror ER_MUST_CHANGE_PASSWORD_LOGIN
-->login foo
EOF
--exec $MYSQLXTEST -hlocalhost --no-auth --file=$MYSQL_TMP_DIR/connection_expire.tmp 2>&1
--remove_file $MYSQL_TMP_DIR/connection_expire.tmp
###
--echo
--echo Test: Expired password with support for sandbox mode (should succeed)
--write_file $MYSQL_TMP_DIR/connection_expire.tmp
-->import connection.macro
-->callmacro Verify_its_xprotocol_connection
Mysqlx.Connection.CapabilitiesSet {
capabilities {
capabilities {
name: "client.pwd_expire_ok"
value {
type: SCALAR
scalar {
type: V_BOOL
v_bool: true
}
}
}
}
}
# OK
-->recv
-->login foo
EOF
--exec $MYSQLXTEST -hlocalhost --no-auth --file=$MYSQL_TMP_DIR/connection_expire.tmp 2>&1
--write_file $MYSQL_TMP_DIR/connection_expire_x_root.tmp
-->import connection.macro
-->callmacro Verify_its_xprotocol_connection
Mysqlx.Connection.CapabilitiesSet {
capabilities {
capabilities {
name: "client.pwd_expire_ok"
value {
type: SCALAR
scalar {
type: V_BOOL
v_bool: true
}
}
}
}
}
# OK
-->recv
-->login x_root
EOF
--write_file $MYSQL_TMP_DIR/connection_expire_x_root_wrongpwd.tmp
-->import connection.macro
-->callmacro Verify_its_xprotocol_connection
Mysqlx.Connection.CapabilitiesSet {
capabilities {
capabilities {
name: "client.pwd_expire_ok"
value {
type: SCALAR
scalar {
type: V_BOOL
v_bool: true
}
}
}
}
}
-->recv
-->expecterror ER_ACCESS_DENIED_ERROR
-->login x_root x_root1
EOF
--write_file $MYSQL_TMP_DIR/connection_expire_user.tmp
-->expecterror %EXPECT_ERROR%
-->sql
select user(),current_user();
-->endsql
EOF
--write_file $MYSQL_TMP_DIR/connection_expire_user_xplugin.tmp
-->stmtsql select user(),current_user();
-->expecterror %EXPECT_ERROR%
-->recvresult
-->stmtsql create database xplugin;
-->expecterror %EXPECT_ERROR%
-->recvresult
-->sql
set password = 'xplugin';
create database xplugin;
drop database xplugin;
select user(),current_user();
alter user xplugin@localhost password expire;
-->endsql
EOF
--write_file $MYSQL_TMP_DIR/connection_expect_expired_user_xplugin.tmp
-->expecterror ER_MUST_CHANGE_PASSWORD_LOGIN
-->newsession bla xplugin xplugin
EOF
--write_file $MYSQL_TMP_DIR/connection_expire_user_xplugin_collection.tmp
Mysqlx.Sql.StmtExecute {
stmt: "create database xplugin;"
}
-->recvtype Mysqlx.Error
Mysqlx.Sql.StmtExecute {
stmt: "create_collection"
args {
type: SCALAR
scalar {
type: V_STRING
v_string {
value: "xplugin"
}
}
}
args {
type: SCALAR
scalar {
type: V_STRING
v_string {
value: "table2"
}
}
}
namespace: "xplugin"
}
-->expecterror %EXPECT_ERROR%
-->recvresult
EOF
--write_file $MYSQL_TMP_DIR/connection_expire_empty.tmp
-->echo Empty
EOF
--echo Test: try connecting with non-x_root user when its password expird and x_root user password expired,expect password expired notice
alter user x_root@localhost password expire;
--exec $MYSQLXTEST --expect-error ER_MUST_CHANGE_PASSWORD_LOGIN -ufoo --file $MYSQL_TMP_DIR/connection_expire_empty.tmp 2>&1
--echo Test: try connecting with Expired password using x_root user and expect password expire notice
--exec $MYSQLXTEST -hlocalhost --no-auth --file=$MYSQL_TMP_DIR/connection_expire_x_root.tmp 2>&1
--echo Test: try connecting with non-x_root user when its password expird and x_root user password expired,expect password expired notice
--exec $MYSQLXTEST -hlocalhost --no-auth --file=$MYSQL_TMP_DIR/connection_expire.tmp 2>&1
--echo Test: try connecting with x_root user whose password expired with wrong password and expect invalid user or password error
--exec $MYSQLXTEST -hlocalhost --no-auth --file=$MYSQL_TMP_DIR/connection_expire_x_root_wrongpwd.tmp 2>&1
##try login with password expired user when server started with disconnect_on_expired_password=off option
set password for x_root@localhost = '';
let $restart_parameters = restart: --disconnect_on_expired_password=off;
--source include/restart_mysqld.inc
--echo Test: expect expired Notice for connection
--exec $MYSQLXTEST -ufoo -v%EXPECT_ERROR%=ER_MUST_CHANGE_PASSWORD --file=$MYSQL_TMP_DIR/connection_expire_user.tmp 2>&1
##try login with password expired user when server started with skip-disconnect_on_expired_password option
set password for x_root@localhost = '';
let $restart_parameters = restart: --skip-disconnect_on_expired_password;
--source include/restart_mysqld.inc
--echo Test: expect expired Notice for connection
--exec $MYSQLXTEST -ufoo -v%EXPECT_ERROR%=ER_MUST_CHANGE_PASSWORD --file=$MYSQL_TMP_DIR/connection_expire_user.tmp 2>&1
###try execute statements with password exipired user once connected,connect should be successful with --skip-disconnect_on_expired_password
--exec $MYSQLXTEST -uxplugin -pxplugin -v%EXPECT_ERROR%=ER_MUST_CHANGE_PASSWORD --file=$MYSQL_TMP_DIR/connection_expire_user_xplugin.tmp 2>&1
###try execute statements with password exipired user once connected,connect should be successful with --disconnect_on_expired_password and statement execution should be failed until password reset
let $restart_parameters = restart: --disconnect_on_expired_password;
--source include/restart_mysqld.inc
--exec $MYSQLXTEST --connect-expired-password -uxplugin -pxplugin -v%EXPECT_ERROR%=ER_MUST_CHANGE_PASSWORD --file=$MYSQL_TMP_DIR/connection_expire_user_xplugin.tmp 2>&1
## Connect with expired password without advertising connect on expired (should get kicked out)
--exec $MYSQLXTEST --no-auth --file=$MYSQL_TMP_DIR/connection_expect_expired_user_xplugin.tmp 2>&1
##try executing xplugin collection with password expired user,expect error
--exec $MYSQLXTEST --connect-expired-password -uxplugin -pxplugin -v%EXPECT_ERROR%=ER_MUST_CHANGE_PASSWORD --file=$MYSQL_TMP_DIR/connection_expire_user_xplugin_collection.tmp 2>&1
## Cleanup
drop user foo@localhost;
drop user xplugin@localhost;
update mysql.user set password_last_changed = @passwordchanged where host = 'localhost' and user='x_root';
flush privileges;
--remove_file $MYSQL_TMP_DIR/connection_expire_x_root.tmp
--remove_file $MYSQL_TMP_DIR/connection_expire.tmp
--remove_file $MYSQL_TMP_DIR/connection_expire_user.tmp
--remove_file $MYSQL_TMP_DIR/connection_expire_x_root_wrongpwd.tmp
--remove_file $MYSQL_TMP_DIR/connection_expire_user_xplugin.tmp
--remove_file $MYSQL_TMP_DIR/connection_expire_user_xplugin_collection.tmp
--source include/xplugin_drop_user.inc