Removed the excessive comments in favor of a simplified description. Use stack-allocated TestConnections and simplify assertions. The main change is the different SQL used to update the user with the old password. Direct modification of the `mysql`.`user` database isn't very neat but it guarantees that the value is updated.
		
			
				
	
	
		
			29 lines
		
	
	
		
			1021 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			1021 B
		
	
	
	
		
			C++
		
	
	
	
	
	
/**
 | 
						|
 * Check that old-style passwords are detected
 | 
						|
 */
 | 
						|
 | 
						|
#include "testconnections.h"
 | 
						|
 | 
						|
int main(int argc, char *argv[])
 | 
						|
{
 | 
						|
    TestConnections test(argc, argv);
 | 
						|
 | 
						|
    test.repl->connect();
 | 
						|
    execute_query(test.repl->nodes[0], "CREATE USER 'old'@'%%' IDENTIFIED BY 'old';");
 | 
						|
    execute_query(test.repl->nodes[0], "UPDATE mysql.user SET password = OLD_PASSWORD('old') WHERE user = 'old';");
 | 
						|
    execute_query(test.repl->nodes[0], "FLUSH PRIVILEGES");
 | 
						|
    test.repl->sync_slaves();
 | 
						|
 | 
						|
    test.set_timeout(20);
 | 
						|
    test.tprintf("Trying to connect using user with old style password");
 | 
						|
 | 
						|
    MYSQL* conn = open_conn(test.maxscales->rwsplit_port[0], test.maxscales->IP[0], (char *) "old", (char *)  "old", test.ssl);
 | 
						|
    test.add_result(mysql_errno(conn) == 0, "Connections is open for the user with old style password.\n");
 | 
						|
    mysql_close(conn);
 | 
						|
 | 
						|
    execute_query(test.repl->nodes[0], "DROP USER 'old'@'%%'");
 | 
						|
    test.check_log_err(0, "MaxScale does not support these old passwords", true);
 | 
						|
 | 
						|
    return test.global_result;
 | 
						|
}
 |