test-change-user.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. var assert = require('assert');
  2. var common = require('../../common');
  3. var connection = common.createConnection();
  4. // create test user first
  5. connection.query("GRANT ALL ON *.* TO 'changeuser1'@'localhost' IDENTIFIED BY 'changeuser1pass'");
  6. connection.query("GRANT ALL ON *.* TO 'changeuser2'@'localhost' IDENTIFIED BY 'changeuser2pass'");
  7. connection.query('FLUSH PRIVILEGES');
  8. connection.changeUser({
  9. user: 'changeuser1',
  10. password: 'changeuser1pass'
  11. });
  12. connection.query('select user()', function(err, rows) {
  13. if (err) throw err;
  14. assert.deepEqual(rows, [ { 'user()': 'changeuser1@localhost' } ]);
  15. });
  16. connection.changeUser({
  17. user: 'changeuser2',
  18. password: 'changeuser2pass'
  19. });
  20. connection.query('select user()', function(err, rows) {
  21. if (err) throw err;
  22. assert.deepEqual(rows, [ { 'user()': 'changeuser2@localhost' } ]);
  23. });
  24. connection.changeUser({
  25. user: 'changeuser1',
  26. passwordSha1: new Buffer('f961d39c82138dcec42b8d0dcb3e40a14fb7e8cd', 'hex') // sha1(changeuser1pass)
  27. });
  28. connection.query('select user()', function(err, rows) {
  29. if (err) throw err;
  30. assert.deepEqual(rows, [ { 'user()': 'changeuser1@localhost' } ]);
  31. });
  32. connection.end();
  33. // from felixge/node-mysql/test/unit/connection/test-change-database-fatal-error.js:
  34. // This test verifies that changeUser errors are treated as fatal errors. The
  35. // rationale for that is that a failure to execute a changeUser sequence may
  36. // cause unexpected behavior for queries that were enqueued under the
  37. // assumption of changeUser to succeed.
  38. var beforeChange = 1;
  39. connection.changeUser({database: 'does-not-exist'}, function (err) {
  40. assert.ok(err, 'got error');
  41. assert.equal(err.code, 'ER_BAD_DB_ERROR');
  42. assert.equal(err.fatal, true);
  43. });
  44. connection.on('error', function(err) {
  45. assert.ok(err, 'got disconnect');
  46. assert.equal(err.code, 'PROTOCOL_CONNECTION_LOST');
  47. assert.equal(beforeChange, 1);
  48. });