From 96cf824297e5b6a6a176e49512945ce5c117cefc Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 18 Dec 2023 14:09:05 +0100 Subject: [PATCH] chore: added some test Signed-off-by: blam --- .../components/fields/Secret/Secret.test.tsx | 107 ++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 plugins/scaffolder/src/components/fields/Secret/Secret.test.tsx diff --git a/plugins/scaffolder/src/components/fields/Secret/Secret.test.tsx b/plugins/scaffolder/src/components/fields/Secret/Secret.test.tsx new file mode 100644 index 0000000000..fd30c6afff --- /dev/null +++ b/plugins/scaffolder/src/components/fields/Secret/Secret.test.tsx @@ -0,0 +1,107 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; +import { + SecretsContextProvider, + useTemplateSecrets, +} from '@backstage/plugin-scaffolder-react'; +import { Secret } from './Secret'; +import { renderInTestApp } from '@backstage/test-utils'; +import { Form } from '@backstage/plugin-scaffolder-react/alpha'; +import validator from '@rjsf/validator-ajv8'; +import { fireEvent, act } from '@testing-library/react'; + +describe('', () => { + const SecretsComponent = () => { + const { secrets } = useTemplateSecrets(); + return ( +
{JSON.stringify({ secrets })}
+ ); + }; + + it('should set the current form value as a mask for the value entered', async () => { + const mockSecret = 'backstage'; + const onSubmit = jest.fn(); + + const { getByLabelText, getByRole } = await renderInTestApp( + +
+ + , + ); + + const secretInput = getByLabelText('secret'); + const submitButton = getByRole('button'); + + await act(async () => { + fireEvent.change(secretInput, { target: { value: mockSecret } }); + fireEvent.click(submitButton); + }); + + expect(onSubmit).toHaveBeenCalledWith( + expect.objectContaining({ + formData: '*********', + }), + expect.anything(), + ); + }); + + it('should set the secret value to the unmasked value', async () => { + const mockSecret = 'backstage'; + const onSubmit = jest.fn(); + + const { getByLabelText, getByTestId } = await renderInTestApp( + + + + , + ); + + const secretInput = getByLabelText('secret'); + + await act(async () => { + fireEvent.change(secretInput, { target: { value: mockSecret } }); + }); + + const { secrets } = JSON.parse(getByTestId('current-secrets').textContent!); + + expect(secrets.myKey).toBe(mockSecret); + }); +});