test-connect-sha1.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. var mysql = require('../../../index.js');
  2. var auth = require('../../../lib/auth_41.js');
  3. var assert = require('assert');
  4. var server;
  5. function authenticate(params, cb) {
  6. var doubleSha = auth.doubleSha1('testpassword');
  7. var isValid = auth.verifyToken(params.authPluginData1, params.authPluginData2, params.authToken, doubleSha);
  8. assert(isValid);
  9. cb(null);
  10. }
  11. var queryCalls = 0;
  12. var server = mysql.createServer();
  13. server.listen(3307);
  14. server.on('connection', function(conn) {
  15. conn.serverHandshake({
  16. protocolVersion: 10,
  17. serverVersion: 'node.js rocks',
  18. connectionId: 1234,
  19. statusFlags: 2,
  20. characterSet: 8,
  21. capabilityFlags: 0xffffff,
  22. authCallback: authenticate
  23. });
  24. conn.on('query', function(sql) {
  25. assert.equal(sql, 'select 1+1');
  26. queryCalls++;
  27. conn.close();
  28. });
  29. });
  30. var connection = mysql.createConnection({
  31. port: 3307,
  32. user: 'testuser',
  33. database: 'testdatabase',
  34. passwordSha1: Buffer('8bb6118f8fd6935ad0876a3be34a717d32708ffd', 'hex')
  35. });
  36. connection.on('error', function(err) {
  37. assert.equal(err.code, 'PROTOCOL_CONNECTION_LOST');
  38. });
  39. connection.query('select 1+1', function(err) {
  40. assert.equal(err.code, 'PROTOCOL_CONNECTION_LOST');
  41. server._server.close();
  42. });
  43. var _1_2 = false;
  44. var _1_3 = false;
  45. connection.query('select 1+2', function(err) {
  46. assert.equal(err.code, 'PROTOCOL_CONNECTION_LOST');
  47. _1_2 = true;
  48. });
  49. connection.query('select 1+3', function(err) {
  50. assert.equal(err.code, 'PROTOCOL_CONNECTION_LOST');
  51. _1_3 = true;
  52. });
  53. process.on('exit', function() {
  54. assert.equal(queryCalls, 1);
  55. assert.equal(_1_2, true);
  56. assert.equal(_1_3, true);
  57. });