~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/auth_schema/tests/t/basic.test

  • Committer: Mark Atwood
  • Date: 2011-10-14 15:57:51 UTC
  • mfrom: (2425.1.5 auth_db)
  • Revision ID: me@mark.atwood.name-20111014155751-yf1y5jk190g4xyo5
mergeĀ lp:~daniel-nichter/drizzle/auth_schema

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# auth_file has to be used to provide access for user root, else the tests
 
2
# won't work.  auth_schema can't provide this access because no one has
 
3
# access until the auth table is created.
 
4
 
 
5
# Check that the plugin is loaded and using the default auth.users table.
 
6
SHOW VARIABLES LIKE 'auth_schema%';
 
7
 
 
8
# mysql_protocol provides MYSQL_PASSWORD().
 
9
SELECT MYSQL_PASSWORD('test_pass');
 
10
 
 
11
CREATE SCHEMA auth;
 
12
USE auth;
 
13
CREATE TABLE users (
 
14
  user     VARCHAR(255) NOT NULL,
 
15
  password VARCHAR(40),
 
16
  UNIQUE INDEX user_idx (user)
 
17
);
 
18
INSERT INTO users VALUES ('test_user', '34F2496C75CF8F8D8EBE14067C9C8B1AA8E80DEF');
 
19
 
 
20
SELECT * FROM users ORDER BY user;
 
21
 
 
22
connect(conn1, localhost, test_user, test_pass,,);
 
23
SELECT 'connection 1 works';
 
24
 
 
25
--exec $TOP_BUILDDIR/client/drizzle --host=localhost --port=$MASTER_MYPORT -e "SELECT 'client 1 works'" --user=test_user --password=test_pass 2>&1
 
26
 
 
27
# Test that bad passwords aren't accepted.
 
28
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
 
29
--replace_regex /@'.*?'/@'LOCALHOST'/
 
30
--error ER_ACCESS_DENIED_ERROR
 
31
connect (bad_user,localhost,test_user,foo,,);
 
32
 
 
33
# Test that the auth table can be changed dynamically.
 
34
USE auth;
 
35
CREATE TABLE users2 (
 
36
  user     VARCHAR(255) NOT NULL,
 
37
  password VARCHAR(40),
 
38
  UNIQUE INDEX user_idx (user)
 
39
);
 
40
INSERT INTO users2 VALUES ('test_user2', '34F2496C75CF8F8D8EBE14067C9C8B1AA8E80DEF');
 
41
SELECT * FROM users2 ORDER BY user;
 
42
 
 
43
SET GLOBAL auth_schema_table='`auth`.`users2`';
 
44
SHOW VARIABLES LIKE 'auth_schema%';
 
45
 
 
46
connect(conn2, localhost, test_user2, test_pass,,);
 
47
SELECT 'connection 2 works';
 
48
 
 
49
--exec $TOP_BUILDDIR/client/drizzle --host=localhost --port=$MASTER_MYPORT -e "SELECT 'client 2 works'" --user=test_user2 --password=test_pass 2>&1
 
50
 
 
51
# Restore the original auth table for subsequent tests (or --repeat 2).
 
52
SET GLOBAL auth_schema_table='auth.users';
 
53
 
 
54
# Test that auth_schema works with hex strings created MYSQL_PASSWORD().
 
55
INSERT INTO auth.users VALUES ('test_user3', MYSQL_PASSWORD('mypass'));
 
56
SELECT * FROM auth.users WHERE user='test_user3';
 
57
 
 
58
--exec $TOP_BUILDDIR/client/drizzle --host=localhost --port=$MASTER_MYPORT -e "SELECT 'client 3 works'" --user=test_user3 --password=mypass 2>&1
 
59
 
 
60
# Disable authentication.
 
61
SET GLOBAL auth_schema_enabled=0;
 
62
SHOW VARIABLES LIKE 'auth_schema%';
 
63
 
 
64
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
 
65
--replace_regex /@'.*?'/@'LOCALHOST'/
 
66
--error ER_ACCESS_DENIED_ERROR
 
67
connect(conn3, localhost, test_user, test_pass,,);
 
68
 
 
69
# Re-enable authentication.
 
70
SET GLOBAL auth_schema_enabled=1;
 
71
SHOW VARIABLES LIKE 'auth_schema%';
 
72
 
 
73
connect(conn3, localhost, test_user, test_pass,,);
 
74
SELECT 'auth re-enabled';
 
75
 
 
76
# Escape user name; avoid SQL injection.
 
77
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
 
78
--replace_regex /@'.*?'/@'LOCALHOST'/
 
79
--error ER_ACCESS_DENIED_ERROR
 
80
connect(conn4, localhost, "'; drop table auth.users; select '", test_pass,,);
 
81
 
 
82
SHOW TABLES FROM auth;
 
83
 
 
84
# Don't crash if we try to set the auth table to NULL.
 
85
--error ER_WRONG_ARGUMENTS
 
86
SET GLOBAL auth_schema_table=NULL;
 
87
SHOW VARIABLES LIKE 'auth_schema_table';
 
88
 
 
89
# And don't permit a blank string for the auth table.
 
90
--error ER_WRONG_ARGUMENTS
 
91
SET GLOBAL auth_schema_table='';
 
92
SHOW VARIABLES LIKE 'auth_schema_table';
 
93
 
 
94
DROP SCHEMA auth;