mirror of
https://github.com/alexgo-io/electrum-client.git
synced 2026-01-12 16:53:05 +08:00
Use vitest instead of mocha
This commit is contained in:
2210
package-lock.json
generated
2210
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
10
package.json
10
package.json
@@ -14,7 +14,8 @@
|
||||
"exports": "./dist/index.js",
|
||||
"types": "./dist/index.d.ts",
|
||||
"scripts": {
|
||||
"test": "mocha",
|
||||
"test": "vitest run",
|
||||
"test:watch": "vitest watch",
|
||||
"lint": "eslint --ext .ts src/",
|
||||
"typescript": "tsc --noEmit",
|
||||
"build:clean": "rm -rf dist",
|
||||
@@ -34,15 +35,14 @@
|
||||
"license": "LGPL-3.0",
|
||||
"homepage": "https://code.samourai.io/dojo/electrum-client",
|
||||
"devDependencies": {
|
||||
"@types/mocha": "^9.1.0",
|
||||
"@types/node": "^16.11.56",
|
||||
"@typescript-eslint/eslint-plugin": "^5.12.1",
|
||||
"@typescript-eslint/parser": "^5.12.1",
|
||||
"@vitest/coverage-c8": "^0.25.5",
|
||||
"eslint": "^8.10.0",
|
||||
"eslint-plugin-import": "^2.25.4",
|
||||
"eslint-plugin-unicorn": "^43.0.2",
|
||||
"mocha": "^9.2.1",
|
||||
"ts-node": "^10.5.0",
|
||||
"typescript": "^4.5.5"
|
||||
"typescript": "^4.5.5",
|
||||
"vitest": "^0.25.5"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* eslint-disable max-len, @typescript-eslint/ban-ts-comment */
|
||||
import assert from 'assert'
|
||||
import {beforeEach, afterEach, describe, it, assert, expect} from 'vitest'
|
||||
|
||||
import {ElectrumClient} from '../src'
|
||||
|
||||
@@ -23,54 +23,63 @@ const callbacks = {
|
||||
}
|
||||
*/
|
||||
|
||||
before(() => {
|
||||
tcpClient = new ElectrumClient(60001, 'btc.electroncash.dk', 'tcp')
|
||||
tlsClient = new ElectrumClient(60002, 'btc.electroncash.dk', 'tls')
|
||||
beforeEach(() => {
|
||||
tcpClient = new ElectrumClient(50001, 'fulc.bot.nu', 'tcp')
|
||||
tlsClient = new ElectrumClient(57002, 'blackie.c3-soft.com', 'tls')
|
||||
})
|
||||
|
||||
after(() => {
|
||||
afterEach(() => {
|
||||
tcpClient.close()
|
||||
tlsClient.close()
|
||||
})
|
||||
|
||||
describe('ElectrumClient TCP', () => {
|
||||
it('successfully connects to Electrum server', async () => {
|
||||
const clt = await tcpClient.initElectrum({client: 'electrum-client-js', version: ['1.2', '1.4']}, { retryPeriod: 2000 })
|
||||
const clt = await tcpClient.initElectrum({client: 'electrum-client-js', version: ['1.2', '1.4']}, {retryPeriod: 2000})
|
||||
|
||||
assert.ok(clt.versionInfo)
|
||||
})
|
||||
|
||||
it('successfully makes a standard request', async () => {
|
||||
await tcpClient.initElectrum({client: 'electrum-client-js', version: ['1.2', '1.4']}, {retryPeriod: 2000})
|
||||
const response = await tcpClient.blockchainTransaction_get('b270b8a113c048ed0024e470e3c7794565c2b3e18c600d20410ec8f454b7d25a')
|
||||
|
||||
assert.strictEqual(response, '02000000016016c6d039cbdeefa655e4b5ac61ec2b5fe16920529f086a2439f59a5994bed6200000006a4730440220421b5daf5f72e514075d256121d6b66e1d9a8993d37ceb0532baca11f6964da502205333d1c4b9be749180bfa8da4da6a07c0e9e2d853c809a75c4b60ef717a628b20121029139c783aa8f31707a67248a6a6b643855e9d1484dbd53cfe7d9e3adf3ce7098ffffffff02c19a01000000000017a9146eda8b447af853746f04b902fea5b2cd959d866d87692c0200000000001976a914443674ce759f8fa2fe83a6608339da782b890c1988ac00000000')
|
||||
})
|
||||
|
||||
it('successfully makes a batch request', async () => {
|
||||
await tcpClient.initElectrum({client: 'electrum-client-js', version: ['1.2', '1.4']}, {retryPeriod: 2000})
|
||||
const response = await tcpClient.blockchainTransaction_getBatch(['b270b8a113c048ed0024e470e3c7794565c2b3e18c600d20410ec8f454b7d25a', 'f08474320cb16c34bb6ccbd8ca77b41168589155e8cf0af787d8d8b2a975af0b'])
|
||||
|
||||
assert.deepStrictEqual(response, [{
|
||||
id: 3,
|
||||
jsonrpc: '2.0',
|
||||
param: 'b270b8a113c048ed0024e470e3c7794565c2b3e18c600d20410ec8f454b7d25a',
|
||||
result: '02000000016016c6d039cbdeefa655e4b5ac61ec2b5fe16920529f086a2439f59a5994bed6200000006a4730440220421b5daf5f72e514075d256121d6b66e1d9a8993d37ceb0532baca11f6964da502205333d1c4b9be749180bfa8da4da6a07c0e9e2d853c809a75c4b60ef717a628b20121029139c783aa8f31707a67248a6a6b643855e9d1484dbd53cfe7d9e3adf3ce7098ffffffff02c19a01000000000017a9146eda8b447af853746f04b902fea5b2cd959d866d87692c0200000000001976a914443674ce759f8fa2fe83a6608339da782b890c1988ac00000000'
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
jsonrpc: '2.0',
|
||||
param: 'f08474320cb16c34bb6ccbd8ca77b41168589155e8cf0af787d8d8b2a975af0b',
|
||||
result: '01000000000101536c64334a7e7c49713d836ef9230054e6c38b8c086a3e2068d054781aae89050100000000ffffffff025d9200000000000017a91415035c6225abdf351aa90e6a60726f5e2653839f8728751900000000002200209054b26aafa22ff9bff790d0ed9cc9c84079d7e237e1b617042df9a9734d8aec0400473044022059913f1526f2bfd5a236f86ada8f68b4943632ef9d306d44e482935774059aa60220360d783ca765299c114e28dd0304df913315e5297d9f78fd89319c1ddc6177260147304402204a135548f460dd96e3ea7f981c69d52773cec1475c278631a2180a8010b5dd7802206e090c9c6b1734a9757c76f9a1d5e576bf7b805d12e2d50d344800628dde4f420147522102254d4655d0cae8ad2d96a6789d08ac63982171f10795a5146d03a8369ffd51b921029009039142b4de669fe67507bb3a6b17ff38f7798ae4d7bb3826a3cc2527d62252ae00000000'
|
||||
}])
|
||||
expect(response).toEqual(expect.arrayContaining([
|
||||
{
|
||||
id: 2,
|
||||
jsonrpc: '2.0',
|
||||
param: 'b270b8a113c048ed0024e470e3c7794565c2b3e18c600d20410ec8f454b7d25a',
|
||||
result: '02000000016016c6d039cbdeefa655e4b5ac61ec2b5fe16920529f086a2439f59a5994bed6200000006a4730440220421b5daf5f72e514075d256121d6b66e1d9a8993d37ceb0532baca11f6964da502205333d1c4b9be749180bfa8da4da6a07c0e9e2d853c809a75c4b60ef717a628b20121029139c783aa8f31707a67248a6a6b643855e9d1484dbd53cfe7d9e3adf3ce7098ffffffff02c19a01000000000017a9146eda8b447af853746f04b902fea5b2cd959d866d87692c0200000000001976a914443674ce759f8fa2fe83a6608339da782b890c1988ac00000000'
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
jsonrpc: '2.0',
|
||||
param: 'f08474320cb16c34bb6ccbd8ca77b41168589155e8cf0af787d8d8b2a975af0b',
|
||||
result: '01000000000101536c64334a7e7c49713d836ef9230054e6c38b8c086a3e2068d054781aae89050100000000ffffffff025d9200000000000017a91415035c6225abdf351aa90e6a60726f5e2653839f8728751900000000002200209054b26aafa22ff9bff790d0ed9cc9c84079d7e237e1b617042df9a9734d8aec0400473044022059913f1526f2bfd5a236f86ada8f68b4943632ef9d306d44e482935774059aa60220360d783ca765299c114e28dd0304df913315e5297d9f78fd89319c1ddc6177260147304402204a135548f460dd96e3ea7f981c69d52773cec1475c278631a2180a8010b5dd7802206e090c9c6b1734a9757c76f9a1d5e576bf7b805d12e2d50d344800628dde4f420147522102254d4655d0cae8ad2d96a6789d08ac63982171f10795a5146d03a8369ffd51b921029009039142b4de669fe67507bb3a6b17ff38f7798ae4d7bb3826a3cc2527d62252ae00000000'
|
||||
}
|
||||
]))
|
||||
})
|
||||
|
||||
it('should make a request after reconnection', (done) => {
|
||||
it('should make a request after reconnection', async () => {
|
||||
await tcpClient.initElectrum({client: 'electrum-client-js', version: ['1.2', '1.4']}, {retryPeriod: 2000})
|
||||
// @ts-ignore Hijack Typescript to call method on private field in order to simulate connection close
|
||||
tcpClient.conn?.end()
|
||||
setTimeout(async () => {
|
||||
const res = await tcpClient.server_banner()
|
||||
assert.ok(res)
|
||||
done()
|
||||
}, 5000)
|
||||
const promise = await new Promise((resolve) => {
|
||||
setTimeout(async () => {
|
||||
const res = await tcpClient.server_banner()
|
||||
|
||||
resolve(res)
|
||||
}, 10000)
|
||||
})
|
||||
|
||||
assert.ok(promise)
|
||||
})
|
||||
})
|
||||
|
||||
@@ -82,25 +91,29 @@ describe('ElectrumClient TLS', () => {
|
||||
})
|
||||
|
||||
it('successfully makes a standard request', async () => {
|
||||
await tlsClient.initElectrum({client: 'electrum-client-js', version: ['1.2', '1.4']})
|
||||
const response = await tlsClient.blockchainTransaction_get('b270b8a113c048ed0024e470e3c7794565c2b3e18c600d20410ec8f454b7d25a')
|
||||
|
||||
assert.strictEqual(response, '02000000016016c6d039cbdeefa655e4b5ac61ec2b5fe16920529f086a2439f59a5994bed6200000006a4730440220421b5daf5f72e514075d256121d6b66e1d9a8993d37ceb0532baca11f6964da502205333d1c4b9be749180bfa8da4da6a07c0e9e2d853c809a75c4b60ef717a628b20121029139c783aa8f31707a67248a6a6b643855e9d1484dbd53cfe7d9e3adf3ce7098ffffffff02c19a01000000000017a9146eda8b447af853746f04b902fea5b2cd959d866d87692c0200000000001976a914443674ce759f8fa2fe83a6608339da782b890c1988ac00000000')
|
||||
})
|
||||
|
||||
it('successfully makes a batch request', async () => {
|
||||
await tlsClient.initElectrum({client: 'electrum-client-js', version: ['1.2', '1.4']})
|
||||
const response = await tlsClient.blockchainTransaction_getBatch(['b270b8a113c048ed0024e470e3c7794565c2b3e18c600d20410ec8f454b7d25a', 'f08474320cb16c34bb6ccbd8ca77b41168589155e8cf0af787d8d8b2a975af0b'])
|
||||
|
||||
assert.deepStrictEqual(response, [{
|
||||
id: 3,
|
||||
jsonrpc: '2.0',
|
||||
param: 'b270b8a113c048ed0024e470e3c7794565c2b3e18c600d20410ec8f454b7d25a',
|
||||
result: '02000000016016c6d039cbdeefa655e4b5ac61ec2b5fe16920529f086a2439f59a5994bed6200000006a4730440220421b5daf5f72e514075d256121d6b66e1d9a8993d37ceb0532baca11f6964da502205333d1c4b9be749180bfa8da4da6a07c0e9e2d853c809a75c4b60ef717a628b20121029139c783aa8f31707a67248a6a6b643855e9d1484dbd53cfe7d9e3adf3ce7098ffffffff02c19a01000000000017a9146eda8b447af853746f04b902fea5b2cd959d866d87692c0200000000001976a914443674ce759f8fa2fe83a6608339da782b890c1988ac00000000'
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
jsonrpc: '2.0',
|
||||
param: 'f08474320cb16c34bb6ccbd8ca77b41168589155e8cf0af787d8d8b2a975af0b',
|
||||
result: '01000000000101536c64334a7e7c49713d836ef9230054e6c38b8c086a3e2068d054781aae89050100000000ffffffff025d9200000000000017a91415035c6225abdf351aa90e6a60726f5e2653839f8728751900000000002200209054b26aafa22ff9bff790d0ed9cc9c84079d7e237e1b617042df9a9734d8aec0400473044022059913f1526f2bfd5a236f86ada8f68b4943632ef9d306d44e482935774059aa60220360d783ca765299c114e28dd0304df913315e5297d9f78fd89319c1ddc6177260147304402204a135548f460dd96e3ea7f981c69d52773cec1475c278631a2180a8010b5dd7802206e090c9c6b1734a9757c76f9a1d5e576bf7b805d12e2d50d344800628dde4f420147522102254d4655d0cae8ad2d96a6789d08ac63982171f10795a5146d03a8369ffd51b921029009039142b4de669fe67507bb3a6b17ff38f7798ae4d7bb3826a3cc2527d62252ae00000000'
|
||||
}])
|
||||
expect(response).toEqual(expect.arrayContaining([
|
||||
{
|
||||
id: 2,
|
||||
jsonrpc: '2.0',
|
||||
param: 'b270b8a113c048ed0024e470e3c7794565c2b3e18c600d20410ec8f454b7d25a',
|
||||
result: '02000000016016c6d039cbdeefa655e4b5ac61ec2b5fe16920529f086a2439f59a5994bed6200000006a4730440220421b5daf5f72e514075d256121d6b66e1d9a8993d37ceb0532baca11f6964da502205333d1c4b9be749180bfa8da4da6a07c0e9e2d853c809a75c4b60ef717a628b20121029139c783aa8f31707a67248a6a6b643855e9d1484dbd53cfe7d9e3adf3ce7098ffffffff02c19a01000000000017a9146eda8b447af853746f04b902fea5b2cd959d866d87692c0200000000001976a914443674ce759f8fa2fe83a6608339da782b890c1988ac00000000'
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
jsonrpc: '2.0',
|
||||
param: 'f08474320cb16c34bb6ccbd8ca77b41168589155e8cf0af787d8d8b2a975af0b',
|
||||
result: '01000000000101536c64334a7e7c49713d836ef9230054e6c38b8c086a3e2068d054781aae89050100000000ffffffff025d9200000000000017a91415035c6225abdf351aa90e6a60726f5e2653839f8728751900000000002200209054b26aafa22ff9bff790d0ed9cc9c84079d7e237e1b617042df9a9734d8aec0400473044022059913f1526f2bfd5a236f86ada8f68b4943632ef9d306d44e482935774059aa60220360d783ca765299c114e28dd0304df913315e5297d9f78fd89319c1ddc6177260147304402204a135548f460dd96e3ea7f981c69d52773cec1475c278631a2180a8010b5dd7802206e090c9c6b1734a9757c76f9a1d5e576bf7b805d12e2d50d344800628dde4f420147522102254d4655d0cae8ad2d96a6789d08ac63982171f10795a5146d03a8369ffd51b921029009039142b4de669fe67507bb3a6b17ff38f7798ae4d7bb3826a3cc2527d62252ae00000000'
|
||||
}
|
||||
]))
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import assert from 'assert'
|
||||
import {describe, it, assert} from 'vitest'
|
||||
import * as util from '../../src/lib/util.js'
|
||||
|
||||
describe('util package', () => {
|
||||
|
||||
12
vitest.config.ts
Normal file
12
vitest.config.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import { defineConfig } from 'vitest/config'
|
||||
|
||||
export default defineConfig({
|
||||
test: {
|
||||
globals: true,
|
||||
include: ['./test/**/*.test.ts'],
|
||||
testTimeout: 15000,
|
||||
coverage: {
|
||||
provider: 'c8'
|
||||
}
|
||||
},
|
||||
})
|
||||
Reference in New Issue
Block a user