Annotation of embedaddon/php/ext/mysqli/tests/mysqli_expire_password.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: MySQL 5.6 EXPIRE PASSWORD protocol change
! 3: --SKIPIF--
! 4: <?php
! 5: require_once('skipif.inc');
! 6: require_once('skipifemb.inc');
! 7: require_once('connect.inc');
! 8:
! 9: if ($IS_MYSQLND && !version_compare(PHP_VERSION, '5.4.12-dev', ">=")) {
! 10: die("SKIP Available in mysqlnd as of PHP 5.4.12-dev");
! 11: }
! 12:
! 13: if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
! 14: die(sprintf("SKIP Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
! 15: $host, $user, $db, $port, $socket));
! 16: }
! 17:
! 18: if ($link->server_version < 50610)
! 19: die(sprintf("SKIP Needs MySQL 5.6.10 or newer, found MySQL %s\n", $link->server_info));
! 20:
! 21: if (!$IS_MYSQLND && (mysqli_get_client_version() < 50610)) {
! 22: die(sprintf("SKIP Needs libmysql 5.6.10 or newer, found %s\n", mysqli_get_client_version()));
! 23: }
! 24:
! 25: mysqli_query($link, 'DROP USER expiretest');
! 26: mysqli_query($link, 'DROP USER expiretest@localhost');
! 27:
! 28: if (!mysqli_query($link, 'CREATE USER expiretest@"%"') ||
! 29: !mysqli_query($link, 'CREATE USER expiretest@"localhost"')) {
! 30: printf("skip Cannot create second DB user [%d] %s", mysqli_errno($link), mysqli_error($link));
! 31: mysqli_close($link);
! 32: die("skip CREATE USER failed");
! 33: }
! 34:
! 35: if (!mysqli_query($link, 'ALTER USER expiretest@"%" PASSWORD EXPIRE') ||
! 36: !mysqli_query($link, 'ALTER USER expiretest@"localhost" PASSWORD EXPIRE')) {
! 37: printf("skip Cannot modify second DB user [%d] %s", mysqli_errno($link), mysqli_error($link));
! 38: mysqli_close($link);
! 39: die("skip ALTER USER failed");
! 40: }
! 41:
! 42: if (!$link->query("DROP TABLE IF EXISTS test") ||
! 43: !$link->query("CREATE TABLE test (id INT)") || !$link->query("INSERT INTO test(id) VALUES (1)"))
! 44: die(sprintf("SKIP [%d] %s\n", $link->errno, $link->error));
! 45:
! 46:
! 47:
! 48: if (!mysqli_query($link, sprintf("GRANT SELECT ON TABLE %s.test TO expiretest@'%%'", $db)) ||
! 49: !mysqli_query($link, sprintf("GRANT SELECT ON TABLE %s.test TO expiretest@'localhost'", $db))) {
! 50: printf("skip Cannot grant SELECT to user [%d] %s", mysqli_errno($link), mysqli_error($link));
! 51: mysqli_close($link);
! 52: die("skip GRANT failed");
! 53: }
! 54: ?>
! 55: --FILE--
! 56: <?php
! 57: require_once('connect.inc');
! 58: require_once('table.inc');
! 59:
! 60: /* default */
! 61: if (!$link = my_mysqli_connect($host, 'expiretest', "", $db, $port, $socket)) {
! 62: printf("[001] Cannot connect [%d] %s\n",
! 63: mysqli_connect_errno(), mysqli_connect_error());
! 64: } else {
! 65: $link->query("SELECT id FROM test WHERE id = 1");
! 66: printf("[002] Connect should fail, [%d] %s\n", $link->errno, $link->error);
! 67: }
! 68:
! 69: /* explicitly requesting default */
! 70: $link = mysqli_init();
! 71: $link->options(MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, 0);
! 72: if (!my_mysqli_real_connect($link, $host, 'expiretest', "", $db, $port, $socket)) {
! 73: printf("[003] Cannot connect [%d] %s\n",
! 74: mysqli_connect_errno(), mysqli_connect_error());
! 75: } else {
! 76: $link->query("SELECT id FROM test WHERE id = 1");
! 77: printf("[004] Connect should fail, [%d] %s\n", $link->errno, $link->error);
! 78: }
! 79:
! 80: /* allow connect */
! 81: $link = mysqli_init();
! 82: $link->options(MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, 1);
! 83: if (!my_mysqli_real_connect($link, $host, 'expiretest', "", $db, $port, $socket)) {
! 84: printf("[005] Cannot connect [%d] %s\n",
! 85: mysqli_connect_errno(), mysqli_connect_error());
! 86: } else {
! 87: $link->query("SELECT id FROM test WHERE id = 1");
! 88: printf("[006] Connect allowed, query fail, [%d] %s\n", $link->errno, $link->error);
! 89: $link->close();
! 90: }
! 91:
! 92: /* allow connect, fix pw */
! 93: $link = mysqli_init();
! 94: $link->options(MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, 1);
! 95: if (!my_mysqli_real_connect($link, $host, 'expiretest', "", $db, $port, $socket)) {
! 96: printf("[007] Cannot connect [%d] %s\n",
! 97: mysqli_connect_errno(), mysqli_connect_error());
! 98: } else {
! 99: $link->query("SET PASSWORD=PASSWORD('expiretest')");
! 100: printf("[008] Connect allowed, pw set, [%d] %s\n", $link->errno, $link->error);
! 101: if ($res = $link->query("SELECT id FROM test WHERE id = 1"))
! 102: var_dump($res->fetch_assoc());
! 103: $link->close();
! 104: }
! 105:
! 106:
! 107: /* check login */
! 108: if (!$link = my_mysqli_connect($host, 'expiretest', "expiretest", $db, $port, $socket)) {
! 109: printf("[001] Cannot connect [%d] %s\n",
! 110: mysqli_connect_errno(), mysqli_connect_error());
! 111: } else {
! 112: $link->query("SELECT id FROM test WHERE id = 1");
! 113: if ($res = $link->query("SELECT id FROM test WHERE id = 1"))
! 114: var_dump($res->fetch_assoc());
! 115: $link->close();
! 116: }
! 117:
! 118:
! 119:
! 120: print "done!";
! 121: ?>
! 122: --CLEAN--
! 123: <?php
! 124: require_once("clean_table.inc");
! 125: mysqli_query($link, 'DROP USER expiretest');
! 126: mysqli_query($link, 'DROP USER expiretest@localhost');
! 127: ?>
! 128: --EXPECTF--
! 129:
! 130: Warning: mysqli_real_connect(): (HY000/1820): %s in %s on line %d
! 131: [001] Cannot connect [1820] %s
! 132:
! 133: Warning: mysqli_real_connect(): (HY000/1820): %s in %s on line %d
! 134: [003] Cannot connect [1820] %s
! 135: [006] Connect allowed, query fail, [1820] %s
! 136: [008] Connect allowed, pw set, [0%A
! 137: array(1) {
! 138: ["id"]=>
! 139: string(1) "1"
! 140: }
! 141: array(1) {
! 142: ["id"]=>
! 143: string(1) "1"
! 144: }
! 145: done!
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>