From 8b003875a8728ea0a8970346acb5a344d4f7e1e2 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 24 Feb 2021 20:23:32 +0100 Subject: [PATCH] scaffolder,scaffolder-backend: fix tests, lint and type issues Signed-off-by: Johan Haals --- .../src/scaffolder/tasks/TaskWorker.ts | 2 -- .../src/scaffolder/tasks/builtin.ts | 10 +++------- .../scaffolder-backend/src/service/router.test.ts | 10 ++++++++++ plugins/scaffolder/dev/index.tsx | 12 ++++++++---- .../components/TemplatePage/TemplatePage.test.tsx | 1 + .../fields/RepoUrlPicker/RepoUrlPicker.tsx | 10 +++++----- 6 files changed, 27 insertions(+), 18 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.ts index 8fd425fbdf..1e038ba65e 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.ts @@ -154,7 +154,6 @@ export class TaskWorker { } } - console.log('DEBUG: templateCtx =', JSON.stringify(templateCtx, 0, 2)); const output = JSON.parse( JSON.stringify(task.spec.output), (_key, value) => { @@ -169,7 +168,6 @@ export class TaskWorker { return value; }, ); - console.log('DEBUG: output =', output); await task.complete('completed', { output }); } catch (error) { diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/builtin.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/builtin.ts index 214e7a8cef..b392157ac6 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/builtin.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/builtin.ts @@ -27,9 +27,7 @@ import { import { JsonValue } from '@backstage/config'; import { CatalogApi } from '@backstage/catalog-client'; import { getEntityName } from '@backstage/catalog-model'; -import { PublisherBuilder } from '../stages'; import { Octokit } from '@octokit/rest'; -import { Config } from '@backstage/config'; import { initRepoAndPush } from '../stages/publish/helpers'; async function fetchContents({ @@ -53,6 +51,7 @@ async function fetchContents({ let fetchUrlIsAbsolute = false; try { + // eslint-disable-next-line no-new new URL(fetchUrl); fetchUrlIsAbsolute = true; } catch { @@ -300,10 +299,8 @@ export function createPublishGithubAction(options: { }); } - const remoteUrl = data?.clone_url; - const repoContentsUrl = data?.html_url - ? `${data?.html_url}/blob/master` - : undefined; + const remoteUrl = data.clone_url; + const repoContentsUrl = `${data?.html_url}/blob/master`; await initRepoAndPush({ dir: ctx.workspacePath, @@ -354,7 +351,6 @@ export function createCatalogRegisterAction(options: { type: 'url', target: catalogInfoUrl as string, }); - console.log('DEBUG: result.entities =', result.entities); if (result.entities.length >= 1) { const { kind, name, namespace } = getEntityName(result.entities[0]); ctx.output('entityRef', `${kind}:${namespace}/${name}`); diff --git a/plugins/scaffolder-backend/src/service/router.test.ts b/plugins/scaffolder-backend/src/service/router.test.ts index 8fd53e5fb6..b30ef135ba 100644 --- a/plugins/scaffolder-backend/src/service/router.test.ts +++ b/plugins/scaffolder-backend/src/service/router.test.ts @@ -32,6 +32,7 @@ import { SingleConnectionDatabaseManager, PluginDatabaseManager, getVoidLogger, + UrlReaders, } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import express from 'express'; @@ -61,6 +62,11 @@ function createDatabase(): PluginDatabaseManager { ).forPlugin('scaffolder'); } +const mockUrlReader = UrlReaders.default({ + logger: getVoidLogger(), + config: new ConfigReader({}), +}); + describe('createRouter - working directory', () => { const mockPrepare = jest.fn(); const mockPreparers = new Preparers(); @@ -112,6 +118,7 @@ describe('createRouter - working directory', () => { dockerClient: new Docker(), database: createDatabase(), catalogClient: createCatalogClient([template]), + urlReader: mockUrlReader, }), ).rejects.toThrow('access error'); }); @@ -126,6 +133,7 @@ describe('createRouter - working directory', () => { dockerClient: new Docker(), database: createDatabase(), catalogClient: createCatalogClient([template]), + urlReader: mockUrlReader, }); const app = express().use(router); @@ -155,6 +163,7 @@ describe('createRouter - working directory', () => { dockerClient: new Docker(), database: createDatabase(), catalogClient: createCatalogClient([template]), + urlReader: mockUrlReader, }); const app = express().use(router); @@ -228,6 +237,7 @@ describe('createRouter', () => { dockerClient: new Docker(), database: createDatabase(), catalogClient: createCatalogClient([template]), + urlReader: mockUrlReader, }); app = express().use(router); }); diff --git a/plugins/scaffolder/dev/index.tsx b/plugins/scaffolder/dev/index.tsx index 1501a1cd5e..a41d088329 100644 --- a/plugins/scaffolder/dev/index.tsx +++ b/plugins/scaffolder/dev/index.tsx @@ -16,7 +16,7 @@ import React from 'react'; import { createDevApp } from '@backstage/dev-utils'; -import { discoveryApiRef, identityApiRef } from '@backstage/core'; +import { configApiRef, discoveryApiRef, identityApiRef } from '@backstage/core'; import { CatalogClient } from '@backstage/catalog-client'; import { catalogApiRef } from '@backstage/plugin-catalog-react'; import { ScaffolderPage } from '../src/plugin'; @@ -30,9 +30,13 @@ createDevApp() }) .registerApi({ api: scaffolderApiRef, - deps: { discoveryApi: discoveryApiRef, identityApi: identityApiRef }, - factory: ({ discoveryApi, identityApi }) => - new ScaffolderClient({ discoveryApi, identityApi }), + deps: { + discoveryApi: discoveryApiRef, + identityApi: identityApiRef, + configApi: configApiRef, + }, + factory: ({ discoveryApi, identityApi, configApi }) => + new ScaffolderClient({ discoveryApi, identityApi, configApi }), }) .addPage({ path: '/create', diff --git a/plugins/scaffolder/src/components/TemplatePage/TemplatePage.test.tsx b/plugins/scaffolder/src/components/TemplatePage/TemplatePage.test.tsx index 0556dd1129..1b11b704ae 100644 --- a/plugins/scaffolder/src/components/TemplatePage/TemplatePage.test.tsx +++ b/plugins/scaffolder/src/components/TemplatePage/TemplatePage.test.tsx @@ -36,6 +36,7 @@ jest.mock('react-router-dom', () => { const scaffolderApiMock: jest.Mocked = { scaffold: jest.fn(), getTemplateParameterSchema: jest.fn(), + getIntegrationsList: jest.fn(), getTask: jest.fn(), streamLogs: jest.fn(), }; diff --git a/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.tsx b/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.tsx index 90d53fce85..f346a65a4b 100644 --- a/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.tsx +++ b/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.tsx @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import React, { useState, useCallback, useEffect } from 'react'; +import React, { useCallback, useEffect } from 'react'; import { Field } from '@rjsf/core'; import { useApi, Progress } from '@backstage/core'; import { scaffolderApiRef } from '../../../api'; @@ -104,7 +104,7 @@ export const RepoUrlPicker: Field = ({ if (host === undefined && integrations?.length) { onChange(serializeFormData({ host: integrations[0].host, owner, repo })); } - }, [integrations, host]); + }, [onChange, integrations, host, owner, repo]); if (loading) { return ; @@ -121,9 +121,9 @@ export const RepoUrlPicker: Field = ({