difftreelog
Disconnect detection test.
in: master
4 files changed
tests/package-lock.jsondiffbeforeafterboth--- a/tests/package-lock.json
+++ b/tests/package-lock.json
@@ -4538,6 +4538,15 @@
"integrity": "sha512-aN5IAC8QNtSUdQzxu7lGBgYAOuU1tmRU4c9dIq5OKGf/SBVjXo+ffM2wEjudAWbgpOhy60nLoAGH1xm8fpCKFQ==",
"dev": true
},
+ "@types/chai-as-promised": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.3.tgz",
+ "integrity": "sha512-FQnh1ohPXJELpKhzjuDkPLR2BZCAqed+a6xV4MI/T3XzHfd2FlarfUGUdZYgqYe8oxkYn0fchHEeHfHqdZ96sg==",
+ "dev": true,
+ "requires": {
+ "@types/chai": "*"
+ }
+ },
"@types/chrome": {
"version": "0.0.122",
"resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.122.tgz",
@@ -6952,6 +6961,14 @@
"type-detect": "^4.0.5"
}
},
+ "chai-as-promised": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz",
+ "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==",
+ "requires": {
+ "check-error": "^1.0.2"
+ }
+ },
"chalk": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
@@ -6976,8 +6993,7 @@
"check-error": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
- "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
- "dev": true
+ "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII="
},
"chokidar": {
"version": "2.1.8",
tests/package.jsondiffbeforeafterboth1{2 "name": "NftTests",3 "version": "1.0.0",4 "description": "Substrate Nft tests",5 "main": "",6 "devDependencies": {7 "@polkadot/dev": "^0.52.11",8 "@polkadot/ts": "^0.3.41",9 "@types/bn.js": "^4.11.6",10 "@types/chai": "^4.2.12",11 "@types/mocha": "^8.0.3",12 "chai": "^4.2.0",13 "mocha": "^8.1.1",14 "ts-node": "^9.0.0",15 "tslint": "^5.20.1",16 "typescript": "^3.9.7"17 },18 "scripts": {19 "test": "mocha --timeout 9999999 -r ts-node/register ./**/*.test.ts"20 },21 "author": "",22 "license": "Apache 2.0",23 "homepage": "",24 "dependencies": {25 "@polkadot/api": "^1.31.2",26 "@polkadot/types": "^1.31.2",27 "@polkadot/util": "^2.18.1",28 "@types/bn.js": "^4.11.6"29 },30 "standard": {31 "globals": [32 "it",33 "assert",34 "beforeEach",35 "afterEach",36 "describe",37 "contract",38 "artifacts"39 ]40 }41}1{2 "name": "NftTests",3 "version": "1.0.0",4 "description": "Substrate Nft tests",5 "main": "",6 "devDependencies": {7 "@polkadot/dev": "^0.52.11",8 "@polkadot/ts": "^0.3.41",9 "@types/bn.js": "^4.11.6",10 "@types/chai": "^4.2.12",11 "@types/chai-as-promised": "^7.1.3",12 "@types/mocha": "^8.0.3",13 "chai": "^4.2.0",14 "mocha": "^8.1.1",15 "ts-node": "^9.0.0",16 "tslint": "^5.20.1",17 "typescript": "^3.9.7"18 },19 "scripts": {20 "test": "mocha --timeout 9999999 -r ts-node/register ./**/*.test.ts"21 },22 "author": "",23 "license": "Apache 2.0",24 "homepage": "",25 "dependencies": {26 "@polkadot/api": "^1.31.2",27 "@polkadot/types": "^1.31.2",28 "@polkadot/util": "^2.18.1",29 "@types/bn.js": "^4.11.6",30 "chai-as-promised": "^7.1.1"31 },32 "standard": {33 "globals": [34 "it",35 "assert",36 "beforeEach",37 "afterEach",38 "describe",39 "contract",40 "artifacts"41 ]42 }43}tests/src/connection.test.tsdiffbeforeafterboth--- a/tests/src/connection.test.ts
+++ b/tests/src/connection.test.ts
@@ -1,6 +1,12 @@
-import {expect} from 'chai';
import usingApi from "./substrate/substrate-api";
+import { WsProvider } from '@polkadot/api';
+import * as chai from 'chai';
+import chaiAsPromised from 'chai-as-promised';
+chai.use(chaiAsPromised);
+
+const expect = chai.expect;
+
describe('Connection', () => {
it('Connection can be established', async () => {
await usingApi(async api => {
@@ -8,4 +14,13 @@
expect(health).to.be.not.empty;
});
});
+
+ it('Cannot connect to 0.0.0.0', () => {
+ const neverConnectProvider = new WsProvider('ws://0.0.0.0:9944');
+ expect((async () => {
+ await usingApi(async api => {
+ const health = await api.rpc.system.health();
+ }, { provider: neverConnectProvider });
+ })()).to.be.eventually.rejected;
+ });
});
\ No newline at end of file
tests/src/substrate/substrate-api.tsdiffbeforeafterboth--- a/tests/src/substrate/substrate-api.ts
+++ b/tests/src/substrate/substrate-api.ts
@@ -3,13 +3,17 @@
import promisifySubstrate from "./promisify-substrate";
import { ApiOptions } from "@polkadot/api/types";
-export default async function usingApi(action: (api: ApiPromise) => Promise<void>): Promise<void> {
+function defaultApiOptions(): ApiOptions {
const wsProvider = new WsProvider(config.substrateUrl);
- const settings: ApiOptions = { provider: wsProvider, types: JSON.parse(config.customTypes) };
+ return { provider: wsProvider, types: JSON.parse(config.customTypes) };
+}
+
+export default async function usingApi(action: (api: ApiPromise) => Promise<void>, settings: ApiOptions | undefined = undefined): Promise<void> {
+ settings = settings || defaultApiOptions();
let api: ApiPromise | undefined = undefined;
try {
- api = await ApiPromise.create(settings);
+ api = new ApiPromise(settings);
await promisifySubstrate(api, () => api && api.isReady)();
await action(api);
} finally {