fx-hs100-api
Version:
TPLink HS100/HS110 WiFi Smart Plug API
58 lines (49 loc) • 2.41 kB
JavaScript
/* global describe, it */
;
const chai = require('chai');
chai.should();
const encryptWithHeader = require('../lib/utils').encryptWithHeader;
const decrypt = require('../lib/utils').decrypt;
var payloads = {
setPowerStateOn: ['{"system":{"set_relay_state":{"state":1}}}', 'AAAAKtDygfiL/5r31e+UtsWg1Iv5nPCR6LfEsNGlwOLYo4HyhueT9tTu36Lfog=='],
setPowerStateOff: ['{"system":{"set_relay_state":{"state":0}}}', 'AAAAKtDygfiL/5r31e+UtsWg1Iv5nPCR6LfEsNGlwOLYo4HyhueT9tTu3qPeow=='],
getSysInfo: ['{ "system":{ "get_sysinfo":null } }', 'AAAAI9Dw0qHYq9+61/XPtJS20bTAn+yV5o/hh+jK8J7rh+vLtpbr'],
getConsumption: ['{ "emeter":{ "get_realtime":null } }', 'AAAAJNDw0rfav8uu3P7Ev5+92r/LlOaD4o76k/6buYPtmPSYuMXlmA==']
};
function decodeAndDecrypt (input) {
// node v6: return decrypt(Buffer.from(input, 'base64')).toString('ascii')
return decrypt(new Buffer(input, 'base64').slice(4)).toString('ascii');
}
function encryptAndEncode (input) {
return encryptWithHeader(input).toString('base64');
}
describe('utils', function () {
describe('#decrypt', function () {
it('should decrypt setState ON payload', function () {
decodeAndDecrypt(payloads.setPowerStateOn[1]).should.eql(payloads.setPowerStateOn[0]);
});
it('should decrypt setState OFF payload', function () {
decodeAndDecrypt(payloads.setPowerStateOff[1]).should.eql(payloads.setPowerStateOff[0]);
});
it('should decode and decrypt getState payload', function () {
decodeAndDecrypt(payloads.getSysInfo[1]).should.eql(payloads.getSysInfo[0]);
});
it('should decode and decrypt usage payload', function () {
decodeAndDecrypt(payloads.getConsumption[1]).should.eql(payloads.getConsumption[0]);
});
});
describe('#encryptWithHeader', function () {
it('should encrypt setState ON payload', function () {
encryptAndEncode(payloads.setPowerStateOn[0]).should.eql(payloads.setPowerStateOn[1]);
});
it('should encrypt setState OFF payload', function () {
encryptAndEncode(payloads.setPowerStateOff[0]).should.eql(payloads.setPowerStateOff[1]);
});
it('should encrypt getState payload', function () {
encryptAndEncode(payloads.getSysInfo[0]).should.eql(payloads.getSysInfo[1]);
});
it('should encrypt usage payload', function () {
encryptAndEncode(payloads.getConsumption[0]).should.eql(payloads.getConsumption[1]);
});
});
});