diff --git a/README.md b/README.md index 875ea19..bcf1399 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,18 @@ also be set to a strong, random password. * For Skynet mounts, add `-sk` argument to all commands listed above. * For ScPrime mounts, add `-sp` argument to all commands listed above. +## Module Environment Variables + +* To successfully complete unit tests, a `repertory` mount supporting remote mount needs to be + active. Set the following environment variables prior to running tests: + * `TEST_HOST` + * `TEST_PASSWORD` + * `TEST_PORT` +* To override the version being sent to `repertory`, set the following variable: + * `REPERTORY_JS_FORCE_VERSION` + * NOTE: This variable is primarily used for debugging/testing purposes and should normally + NOT be set. + ## Example API Usage ```javascript diff --git a/src/__tests__/constants.test.js b/src/__tests__/constants.test.js new file mode 100644 index 0000000..2809045 --- /dev/null +++ b/src/__tests__/constants.test.js @@ -0,0 +1,27 @@ +import {get_version, instance_id, package_json} from '../utils/constants' + +const uuid = require('uuid'); + +test(`can read 'package.json'`, () => { + console.log(package_json); + expect(package_json).toBeDefined(); +}); + +test(`'instance_id' is valid`, () => { + console.log(instance_id); + expect(instance_id).toBeDefined(); + expect(uuid.parse(instance_id)).toBeInstanceOf(Uint8Array); +}); + +test(`'version' can be read from 'package.json'`, () => { + console.log(get_version()); + expect(get_version()).toBe('1.3.1-r1'); +}); + +test(`'version' can be overridden by environment variable`, () => { + console.log(process.env); + process.env.REPERTORY_JS_FORCE_VERSION = '1.3.0'; + console.log(get_version()); + expect(get_version()).toBe('1.3.0'); + console.log(process.env); +}); diff --git a/src/networking/connection.js b/src/networking/connection.js index c034bc2..d8e3fb5 100644 --- a/src/networking/connection.js +++ b/src/networking/connection.js @@ -1,6 +1,5 @@ import Socket from 'net'; -import package_json from '../../package.json' import * as constants from '../utils/constants' import packet from './packet'; @@ -18,8 +17,8 @@ export default class connection { } connected = false; - host_or_ip = ""; - password = ""; + host_or_ip = ''; + password = ''; port = 20000; reject; resolve; @@ -35,12 +34,12 @@ export default class connection { try { await new Promise((resolve, reject) => { this.socket = - Socket.createConnection(this.port, this.host_or_ip, err => { - if (err) { - return reject(err) - } - return resolve() - }); + Socket.createConnection(this.port, this.host_or_ip, err => { + if (err) { + return reject(err) + } + return resolve() + }); }); } catch (err) { return Promise.reject(new Error(`'connect()' failed: ${err}`)); @@ -59,7 +58,7 @@ export default class connection { }; this.socket.on('data', chunk => { - buffer = buffer ? Buffer.concat([ buffer, chunk ]) : chunk; + buffer = buffer ? Buffer.concat([buffer, chunk]) : chunk; if (buffer.length > 4) { const size = buffer.readUInt32BE(0); if (buffer.length >= size + 4) { @@ -73,8 +72,12 @@ export default class connection { const response = new packet(this.password); response.buffer = new Uint8Array(packet_data); response.decrypt() - .then(() => {resolve(response)}) - .catch(e => {reject(e)}) + .then(() => { + resolve(response) + }) + .catch(e => { + reject(e) + }) } } } @@ -120,11 +123,9 @@ export default class connection { packet.token = this.password; packet.encode_top_utf8(method_name); packet.encode_top_ui64(optional_thread_id || 1); - packet.encode_top_utf8( - constants.instance_id || - 'c2e3da6656a9f5cd7b95f159687da459656738af7a6d0de533f526d67af14cac'); + packet.encode_top_utf8(constants.instance_id); packet.encode_top_ui32(0); // Service flags - packet.encode_top_utf8(package_json.version); + packet.encode_top_utf8(constants.get_version()); await packet.encrypt(); packet.encode_top_ui32(packet.buffer.length); return new Promise((resolve, reject) => { diff --git a/src/utils/constants.js b/src/utils/constants.js index eb6772a..2f36a26 100644 --- a/src/utils/constants.js +++ b/src/utils/constants.js @@ -1,3 +1,6 @@ -const {v4 : uuidv4} = require('uuid'); +const {v4: uuidv4} = require('uuid'); +import _package_json from '../../package.json' export const instance_id = uuidv4(); +export const package_json = _package_json; +export const get_version = () => process.env.REPERTORY_JS_FORCE_VERSION || _package_json.version;