mirror of
https://github.com/LukeHagar/yotocol.git
synced 2025-12-06 04:22:12 +00:00
158 lines
3.5 KiB
JavaScript
158 lines
3.5 KiB
JavaScript
const { describe, it } = require('mocha');
|
|
const should = require('should');
|
|
const sinon = require('sinon');
|
|
|
|
const pcsc = require('../lib/pcsclite');
|
|
|
|
|
|
describe('Testing PCSCLite private', function () {
|
|
|
|
describe('#start()', function () {
|
|
it('#start() stub', function (done) {
|
|
|
|
const p = pcsc();
|
|
|
|
try {
|
|
|
|
const stub = sinon.stub(p, 'start').callsFake(function (startCb) {
|
|
startCb(undefined, Buffer.from("ACS ACR122U PICC Interface\u0000ACS ACR122U PICC Interface 01\u0000\u0000"));
|
|
});
|
|
|
|
let readerHit = 0;
|
|
|
|
p.on('reader', function (reader) {
|
|
|
|
reader.close();
|
|
|
|
switch (++readerHit) {
|
|
case 1:
|
|
reader.name.should.equal("ACS ACR122U PICC Interface");
|
|
break;
|
|
case 2:
|
|
reader.name.should.equal("ACS ACR122U PICC Interface 01");
|
|
done();
|
|
break;
|
|
}
|
|
|
|
});
|
|
|
|
} finally {
|
|
p.close();
|
|
}
|
|
|
|
});
|
|
});
|
|
|
|
});
|
|
|
|
describe('Testing CardReader private', function () {
|
|
|
|
const get_reader = function () {
|
|
const p = pcsc();
|
|
const stub = sinon.stub(p, 'start').callsFake(function (my_cb) {
|
|
/* "MyReader\0" */
|
|
my_cb(undefined, Buffer.from("MyReader\u0000\u0000"));
|
|
});
|
|
|
|
return p;
|
|
};
|
|
|
|
describe('#_connect()', function () {
|
|
|
|
it('#_connect() success', function (done) {
|
|
const p = get_reader();
|
|
p.on('reader', function (reader) {
|
|
const connect_stub = sinon.stub(reader, '_connect').callsFake(function (share_mode, protocol, connect_cb) {
|
|
connect_cb(undefined, 1);
|
|
});
|
|
|
|
reader.connect(function (err, protocol) {
|
|
should.not.exist(err);
|
|
protocol.should.equal(1);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
it('#_connect() error', function (done) {
|
|
const p = get_reader();
|
|
p.on('reader', function (reader) {
|
|
const cb = sinon.spy();
|
|
const connect_stub = sinon.stub(reader, '_connect').callsFake(function (share_mode, protocol, connect_cb) {
|
|
connect_cb("");
|
|
});
|
|
|
|
reader.connect(cb);
|
|
sinon.assert.calledOnce(cb);
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('#_connect() already connected', function (done) {
|
|
const p = get_reader();
|
|
p.on('reader', function (reader) {
|
|
const cb = sinon.spy();
|
|
reader.connected = true;
|
|
|
|
reader.connect(cb);
|
|
process.nextTick(function () {
|
|
sinon.assert.calledOnce(cb);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
});
|
|
|
|
describe('#_disconnect()', function () {
|
|
|
|
it('#_disconnect() success', function (done) {
|
|
const p = get_reader();
|
|
p.on('reader', function (reader) {
|
|
reader.connected = true;
|
|
const cb = sinon.spy();
|
|
const connect_stub = sinon.stub(reader, '_disconnect').callsFake(function (disposition, disconnect_cb) {
|
|
disconnect_cb(undefined);
|
|
});
|
|
|
|
reader.disconnect(cb);
|
|
sinon.assert.calledOnce(cb);
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('#_disconnect() error', function (done) {
|
|
const p = get_reader();
|
|
p.on('reader', function (reader) {
|
|
reader.connected = true;
|
|
const cb = sinon.spy();
|
|
const connect_stub = sinon.stub(reader, '_disconnect').callsFake(function (disposition,
|
|
disconnect_cb) {
|
|
disconnect_cb("");
|
|
});
|
|
|
|
reader.disconnect(cb);
|
|
sinon.assert.calledOnce(cb);
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('#_disconnect() already disconnected', function (done) {
|
|
const p = get_reader();
|
|
p.on('reader', function (reader) {
|
|
const cb = sinon.spy();
|
|
const connect_stub = sinon.stub(reader, '_disconnect').callsFake(function (disposition, disconnect_cb) {
|
|
disconnect_cb(undefined);
|
|
});
|
|
|
|
reader.disconnect(cb);
|
|
process.nextTick(function () {
|
|
sinon.assert.calledOnce(cb);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
});
|