node-query/node_modules/mysql2/test/integration/connection/test-change-user.js

58 lines
1.9 KiB
JavaScript

var assert = require('assert');
var common = require('../../common');
var connection = common.createConnection();
// create test user first
connection.query("GRANT ALL ON *.* TO 'changeuser1'@'localhost' IDENTIFIED BY 'changeuser1pass'");
connection.query("GRANT ALL ON *.* TO 'changeuser2'@'localhost' IDENTIFIED BY 'changeuser2pass'");
connection.query('FLUSH PRIVILEGES');
connection.changeUser({
user: 'changeuser1',
password: 'changeuser1pass'
});
connection.query('select user()', function(err, rows) {
if (err) throw err;
assert.deepEqual(rows, [ { 'user()': 'changeuser1@localhost' } ]);
});
connection.changeUser({
user: 'changeuser2',
password: 'changeuser2pass'
});
connection.query('select user()', function(err, rows) {
if (err) throw err;
assert.deepEqual(rows, [ { 'user()': 'changeuser2@localhost' } ]);
});
connection.changeUser({
user: 'changeuser1',
passwordSha1: new Buffer('f961d39c82138dcec42b8d0dcb3e40a14fb7e8cd', 'hex') // sha1(changeuser1pass)
});
connection.query('select user()', function(err, rows) {
if (err) throw err;
assert.deepEqual(rows, [ { 'user()': 'changeuser1@localhost' } ]);
});
connection.end();
// from felixge/node-mysql/test/unit/connection/test-change-database-fatal-error.js:
// This test verifies that changeUser errors are treated as fatal errors. The
// rationale for that is that a failure to execute a changeUser sequence may
// cause unexpected behavior for queries that were enqueued under the
// assumption of changeUser to succeed.
var beforeChange = 1;
connection.changeUser({database: 'does-not-exist'}, function (err) {
assert.ok(err, 'got error');
assert.equal(err.code, 'ER_BAD_DB_ERROR');
assert.equal(err.fatal, true);
});
connection.on('error', function(err) {
assert.ok(err, 'got disconnect');
assert.equal(err.code, 'PROTOCOL_CONNECTION_LOST');
assert.equal(beforeChange, 1);
});