Files
yotocol/node_modules/@pokusew/pcsclite/test/test.js
2025-04-28 20:44:10 -05:00

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();
});
});
});
});
});