Files
node/Nodejs-Socketio-Mysql-Demo/node_modules/mysql/test/unit/legacy/test-auth.js
2012-05-25 09:03:56 -04:00

119 lines
3.1 KiB
JavaScript

var common = require('./common');
var auth = require(common.dir.lib + '/auth');
function test(test) {
gently = new Gently();
test();
gently.verify(test.name);
}
test(function sha1() {
assert.deepEqual(
auth.sha1('root'),
new Buffer([
220, 118, 233, 240, 192,
0, 110, 143, 145, 158,
12, 81, 92, 102, 219,
186, 57, 130, 247, 133
]).toString('binary')
);
});
test(function xor() {
var a = new Buffer([170, 220]), // 10101010 11011100
b = new Buffer([220, 170]), // 11011100 10101010
expected = new Buffer([118, 118]); // 01110110 01110110
assert.deepEqual(auth.xor(a.toString('binary'), b.toString('binary')), expected);
});
test(function token() {
var SCRAMBLE = new Buffer([0, 1, 2, 3, 4, 5]);
(function testRegular() {
var PASS = 'root',
STAGE_1 = auth.sha1(PASS),
TOKEN = auth.xor(
auth.sha1(new Buffer(SCRAMBLE + auth.sha1(STAGE_1), 'binary')),
STAGE_1
);
assert.deepEqual(auth.token('root', SCRAMBLE), TOKEN);
})();
(function testNoPassword() {
assert.deepEqual(auth.token(null, SCRAMBLE), new Buffer(0));
})();
});
test(function hashPassword() {
function verify(password, bytes){
var expected = new Buffer(bytes);
var actual = auth.hashPassword(password);
assert.deepEqual(actual, expected);
}
verify('root', [0x67, 0x45, 0x7E, 0x22, 0x6a, 0x1a, 0x15, 0xbd]);
verify('long password test', [0x6c, 0x24, 0x68, 0x41, 0x2c, 0xa6, 0x86, 0x56]);
verify('saf789yasfbsd89f', [0x6c, 0x9b, 0x2f, 0x07, 0x17, 0xeb, 0x95, 0xc6]);
});
test(function randomInit() {
function verify(in1, in2, out1, out2){
var r = auth.randomInit(in1, in2);
assert.equal(out1, r.seed1);
assert.equal(out2, r.seed2);
}
verify(0x00000000, 0x00000000, 0x00000000, 0x00000000);
verify(0x0000FFFF, 0x0000FFFF, 0x0000ffff, 0x0000ffff);
verify(0x50000000, 0x50000000, 0x10000001, 0x10000001);
verify(0xFFFFFFFF, 0xFFFFFFFF, 0x00000003, 0x00000003);
verify(3252345, 7149734, 0x0031a079, 0x006d18a6);
});
test(function myRnd() {
function verifySequence(seed1, seed2, expected){
var r = auth.randomInit(seed1, seed2);
for (var i = 0; i < expected.length; i++){
var n = auth.myRnd(r);
// we will test to 14 digits, since
// we only ever use this function mutliplied
// by small numbers anyway
var a = ':'+n;
var b = ':'+expected[i];
assert.equal(a.substr(1, 16), b.substr(1, 16));
}
}
verifySequence(3252345, 7149734, [
0.0157456556481734,
0.0696413620092360,
0.3009698738353047,
0.2959253138824602,
0.5767169786400320,
0.9958089822864243,
0.2488940062456708,
0.2570431151027261,
0.5385335875102631,
0.9215386229767824,
]);
});
test(function scramble323() {
function verify(message, password, bytes){
var expected = new Buffer(bytes);
var actual = auth.scramble323(new Buffer(message), password);
assert.deepEqual(actual, expected);
}
verify('8bytesofstuff', 'root', [0x5a, 0x4d, 0x46, 0x47, 0x43, 0x53, 0x58, 0x5f]);
verify('e8cf00cec9ec825af22', 'saf789yasfbsd', [0x4d, 0x54, 0x5b, 0x47, 0x5f, 0x52, 0x4d, 0x45]);
});