Skip to content

Commit

Permalink
fix: #371 missing MIFARE_BLOCK_SIZE for mifareClassicHandlerAndroid
Browse files Browse the repository at this point in the history
  • Loading branch information
whitedogg13 committed Feb 20, 2021
1 parent 5f72f0c commit b136419
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 5 deletions.
33 changes: 33 additions & 0 deletions __tests__/NfcManagerAndroid.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
jest.mock('../src/NativeNfcManager');

import {Platform} from 'react-native';

describe('NfcManager (android)', () => {
Platform.setOS('android');
const NfcManagerModule = require('../src/index.js');
const NfcManager = NfcManagerModule.default;

test('constructor', () => {
expect(Platform.OS).toBe('android');
// the NfcManager instance doest exist
expect(!!NfcManager).toEqual(true);
});

test('mifareClassicHandler', async () => {
expect(!!NfcManager.mifareClassicHandlerAndroid).toBe(true);

try {
// should throw exception if the data is not an array of length 16
await NfcManager.mifareClassicHandlerAndroid.mifareClassicWriteBlock(1, [
1,
]);
expect(true).toBe(false);
} catch (ex) {}

// testcase for https://github.com/whitedogg13/react-native-nfc-manager/issues/371
await NfcManager.mifareClassicHandlerAndroid.mifareClassicWriteBlock(
5,
Array.from({length: 16}).map((_, i) => i),
);
});
});
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@
"scripts": {
"lint": "eslint .",
"lint:fix": "eslint --fix .",
"test": "jest",
"test": "jest -i",
"release": "release-it"
}
}
2 changes: 1 addition & 1 deletion src/NfcManagerAndroid.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ class NfcManagerAndroid extends NfcManagerBase {
// -------------------------------------
get mifareClassicHandlerAndroid() {
if (!this._mifareClassicHandlerAndroid) {
this._mifareClassicHandlerAndroid = new MifareClassicHandlerAndroid();
this._mifareClassicHandlerAndroid = new MifareClassicHandlerAndroid(this);
}
return this._mifareClassicHandlerAndroid;
}
Expand Down
8 changes: 6 additions & 2 deletions src/NfcTech/MifareClassicHandlerAndroid.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
import {callNative} from '../NativeNfcManager';

class MifareClassicHandlerAndroid {
constructor(nfcManager) {
this.nfcManager = nfcManager;
}

async mifareClassicAuthenticateA(sector, key) {
if (!key || !Array.isArray(key) || key.length !== 6) {
throw new Error('key should be an Array[6] of integers (0 - 255)');
Expand Down Expand Up @@ -41,10 +45,10 @@ class MifareClassicHandlerAndroid {
if (
!data ||
!Array.isArray(data) ||
data.length !== this.MIFARE_BLOCK_SIZE
data.length !== this.nfcManager.MIFARE_BLOCK_SIZE
) {
throw new Error(
`data should be a non-empty Array[${this.MIFARE_BLOCK_SIZE}] of integers (0 - 255)`,
`data should be a non-empty Array[${this.nfcManager.MIFARE_BLOCK_SIZE}] of integers (0 - 255)`,
);
}

Expand Down
4 changes: 3 additions & 1 deletion src/__mocks__/NativeNfcManager.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
const NativeNfcManager = {};
const NativeNfcManager = {
MIFARE_BLOCK_SIZE: 16,
};

const NfcManagerEmitterListener = {};
const NfcManagerEmitter = {
Expand Down

0 comments on commit b136419

Please sign in to comment.