Annotation of embedaddon/php/ext/mysqli/tests/mysqli_expire_password.phpt, revision 1.1.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>