diff --git a/.github/workflows/chain-types.yml b/.github/workflows/chain-types.yml index b4ad4ebb2a..6d7e692272 100644 --- a/.github/workflows/chain-types.yml +++ b/.github/workflows/chain-types.yml @@ -1,10 +1,10 @@ -name: Chain type check +name: Chain on: schedule: - cron: '30 0 * * *' jobs: - chains: + types: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/lint-chain-urls.yml b/.github/workflows/lint-chain-urls.yml new file mode 100644 index 0000000000..00586327e7 --- /dev/null +++ b/.github/workflows/lint-chain-urls.yml @@ -0,0 +1,11 @@ +name: Chain +on: [pull_request] + +jobs: + urls: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + run: | + yarn install --immutable | grep -v 'YN0013' + yarn ci:chainUrls diff --git a/package.json b/package.json index 6e7603e5a6..f0f56668c5 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,7 @@ "packElectron": "yarn build:release:electron && yarn clean:electronRelease && electron-builder build -mwl", "docs": "echo \"skipping docs\"", "ci:chainTypes": "polkadot-dev-run-test --silent packages/apps-config/src/ciChainTypes", + "ci:chainUrls": "polkadot-dev-run-test --silent packages/apps-config/src/ciChainUrls", "clean": "polkadot-dev-clean-build", "clean:electronBuild": "cd packages/apps-electron && polkadot-dev-clean-build", "clean:electronRelease": "cd packages/apps-electron && rm -rf release", diff --git a/packages/apps-config/src/ciChainUrls.spec.ts b/packages/apps-config/src/ciChainUrls.spec.ts new file mode 100644 index 0000000000..d00de93eaa --- /dev/null +++ b/packages/apps-config/src/ciChainUrls.spec.ts @@ -0,0 +1,26 @@ +// Copyright 2017-2021 @polkadot/apps-config authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { assert, isString } from '@polkadot/util'; + +import { createWsEndpoints } from './endpoints'; + +interface Endpoint { + name: string; + ws: string; +} + +const endpoints = createWsEndpoints((k: string, v?: string) => v || k, true) + .filter(({ value }) => + value && isString(value) && !value.includes('127.0.0.1') + ) + .map((o): Partial => ({ name: o.text as string, ws: o.value as string })) + .filter((v): v is Endpoint => !!v.ws); + +describe('check configured chain urls', (): void => { + endpoints.forEach(({ name, ws }) => + it(`${name} @ ${ws}`, (): void => { + assert(ws.startsWith('wss://'), `Expected ${ws} endpoint to start with wss:// `); + }) + ); +});