mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-12-03 18:45:48 +00:00
Adds unit test for ripple#1092, fixes unhandled throw when not connected on send due to upgraded ws module
This commit is contained in:
@@ -420,13 +420,17 @@ class Connection extends EventEmitter {
|
|||||||
this._console.log(message)
|
this._console.log(message)
|
||||||
}
|
}
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
this._ws.send(message, undefined, error => {
|
try {
|
||||||
if (error) {
|
this._ws.send(message, undefined, error => {
|
||||||
reject(new DisconnectedError(error.message, error))
|
if (error) {
|
||||||
} else {
|
reject(new DisconnectedError(error.message, error))
|
||||||
resolve()
|
} else {
|
||||||
}
|
resolve()
|
||||||
})
|
}
|
||||||
|
})
|
||||||
|
} catch (error) {
|
||||||
|
reject(new DisconnectedError(error.message, error))
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -160,6 +160,30 @@ describe('Connection', function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('DisconnectedError on initial _onOpen send', async function() {
|
||||||
|
// _onOpen previously could throw PromiseRejectionHandledWarning: Promise rejection was handled asynchronously
|
||||||
|
// do not rely on the api.setup hook to test this as it bypasses the case, disconnect api connection first
|
||||||
|
await this.api.disconnect();
|
||||||
|
|
||||||
|
// stub _onOpen to only run logic relevant to test case
|
||||||
|
this.api.connection._onOpen = () => {
|
||||||
|
// overload websocket send on open when _ws exists
|
||||||
|
this.api.connection._ws.send = function(data, options, cb) {
|
||||||
|
// recent ws throws this error instead of calling back
|
||||||
|
throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');
|
||||||
|
}
|
||||||
|
const request = {command: 'subscribe', streams: ['ledger']};
|
||||||
|
return this.api.connection.request(request);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
await this.api.connect();
|
||||||
|
} catch (error) {
|
||||||
|
assert(error instanceof this.api.errors.DisconnectedError);
|
||||||
|
assert.strictEqual(error.message, 'WebSocket is not open: readyState 0 (CONNECTING)');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
it('ResponseFormatError', function() {
|
it('ResponseFormatError', function() {
|
||||||
this.api.connection._send = function(message) {
|
this.api.connection._send = function(message) {
|
||||||
const parsed = JSON.parse(message);
|
const parsed = JSON.parse(message);
|
||||||
|
|||||||
Reference in New Issue
Block a user