diff --git a/src/test/Components/CreateImageWizard/CreateImageWizard.beta.test.js b/src/test/Components/CreateImageWizard/CreateImageWizard.beta.test.js index 2672dd6e..d05f5796 100644 --- a/src/test/Components/CreateImageWizard/CreateImageWizard.beta.test.js +++ b/src/test/Components/CreateImageWizard/CreateImageWizard.beta.test.js @@ -16,19 +16,15 @@ import { RHEL_9, PROVISIONING_SOURCES_ENDPOINT, } from '../../../constants.js'; +import { mockComposesEmpty } from '../../fixtures/composes.js'; +import { customizations, ids } from '../../fixtures/customizations.js'; +import { mockPkgResultAlphaContentSources } from '../../fixtures/packages.js'; import { server } from '../../mocks/server.js'; import { renderWithReduxRouter } from '../../testUtils'; let router = undefined; let store = undefined; -const mockComposes = { - meta: { - count: 0, - }, - data: [], -}; - jest.mock('@redhat-cloud-services/frontend-components/useChrome', () => ({ useChrome: () => ({ auth: { @@ -54,7 +50,7 @@ jest.mock('@redhat-cloud-services/frontend-components/useChrome', () => ({ // being unable to resolve that endpoint. jest .spyOn(api, 'getComposes') - .mockImplementation(() => Promise.resolve(mockComposes)); + .mockImplementation(() => Promise.resolve(mockComposesEmpty)); function getBackButton() { const back = screen.getByRole('button', { name: /Back/ }); @@ -66,24 +62,6 @@ function getNextButton() { return next; } -const mockPkgResultAlphaContentSources = [ - { - name: 'lib-test', - summary: 'lib-test package summary', - version: '1.0', - }, - { - name: 'Z-test', - summary: 'Z-test package summary', - version: '1.0', - }, - { - name: 'test', - summary: 'summary for test package', - version: '1.0', - }, -]; - const searchForAvailablePackages = async (searchbox, searchTerm) => { const user = userEvent.setup(); await user.type(searchbox, searchTerm); @@ -809,69 +787,6 @@ describe('Click through all steps', () => { expect(within(revtbody).getAllByRole('row')).toHaveLength(3); // mock the backend API - const ids = []; - const customizations = { - custom_repositories: [ - { - baseurl: ['http://yum.theforeman.org/releases/3.4/el8/x86_64/'], - check_gpg: true, - check_repo_gpg: false, - gpgkey: [ - '-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBGN9300BEAC1FLODu0cL6saMMHa7yJY1JZUc+jQUI/HdECQrrsTaPXlcc7nM\nykYMMv6amPqbnhH/R5BW2Ano+OMse+PXtUr0NXU4OcvxbnnXkrVBVUf8mXI9DzLZ\njw8KoD+4/s0BuzO78zAJF5uhuyHMAK0ll9v0r92kK45Fas9iZTfRFcqFAzvgjScf\n5jeBnbRs5U3UTz9mtDy802mk357o1A8BD0qlu3kANDpjLbORGWdAj21A6sMJDYXy\nHS9FBNV54daNcr+weky2L9gaF2yFjeu2rSEHCSfkbWfpSiVUx/bDTj7XS6XDOuJT\nJqvGS8jHqjHAIFBirhCA4cY/jLKxWyMr5N6IbXpPAYgt8/YYz2aOYVvdyB8tZ1u1\nkVsMYSGcvTBexZCn1cDkbO6I+waIlsc0uxGqUGBKF83AVYCQqOkBjF1uNnu9qefE\nkEc9obr4JZsAgnisboU25ss5ZJddKlmFMKSi66g4S5ChLEPFq7MB06PhLFioaD3L\nEXza7XitoW5VBwr0BSVKAHMC0T2xbm70zY06a6gQRlvr9a10lPmv4Tptc7xgQReg\nu1TlFPbrkGJ0d8O6vHQRAd3zdsNaVr4gX0Tg7UYiqT9ZUkP7hOc8PYXQ28hHrHTB\nA63MTq0aiPlJ/ivTuX8M6+Bi25dIV6N6IOUi/NQKIYxgovJCDSdCAAM0fQARAQAB\ntCFMdWNhcyBHYXJmaWVsZCA8bHVjYXNAcmVkaGF0LmNvbT6JAlcEEwEIAEEWIQTO\nQZeiHnXqdjmfUURc6PeuecS2PAUCY33fTQIbAwUJA8JnAAULCQgHAgIiAgYVCgkI\nCwIEFgIDAQIeBwIXgAAKCRBc6PeuecS2PCk3D/9jW7xrBB/2MQFKd5l+mNMFyKwc\nL9M/M5RFI9GaQRo55CwnPb0nnxOJR1V5GzZ/YGii53H2ose65CfBOE2L/F/RvKF0\nH9S9MInixlahzzKtV3TpDoZGk5oZIHEMuPmPS4XaHggolrzExY0ib0mQuBBE/uEV\n/HlyHEunBKPhTkAe+6Q+2dl22SUuVfWr4Uzlp65+DkdN3M37WI1a3Suhnef3rOSM\nV6puUzWRR7qcYs5C2In87AcYPn92P5ur1y/C32r8Ftg3fRWnEzI9QfRG52ojNOLK\nyGQ8ZC9PGe0q7VFcF7ridT/uzRU+NVKldbJg+rvBnszb1MjNuR7rUQHyvGmbsUVQ\nRCsgdovkee3lP4gfZHzk2SSLVSo0+NJRNaM90EmPk14Pgi/yfRSDGBVvLBbEanYI\nv1ZtdIPRyKi+/IaMOu/l7nayM/8RzghdU+0f1FAif5qf9nXuI13P8fqcqfu67gNd\nkh0UUF1XyR5UHHEZQQDqCuKEkZJ/+27jYlsG1ZiLb1odlIWoR44RP6k5OJl0raZb\nyLXbAfpITsXiJJBpCam9P9+XR5VSfgkqp5hIa7J8piN3DoMpoExg4PPQr6PbLAJy\nOUCOnuB7yYVbj0wYuMXTuyrcBHh/UymQnS8AMpQoEkCLWS/A/Hze/pD23LgiBoLY\nXIn5A2EOAf7t2IMSlA==\n=OanT\n-----END PGP PUBLIC KEY BLOCK-----', - ], - id: 'dbad4dfc-1547-45f8-b5af-1d7fec0476c6', - name: '13lk3', - }, - { - baseurl: [ - 'http://mirror.stream.centos.org/SIGs/8/kmods/x86_64/packages-main/', - ], - check_gpg: false, - id: '9cf1d45d-aa06-46fe-87ea-121845cc6bbb', - name: '2lmdtj', - }, - ], - payload_repositories: [ - { - baseurl: 'http://yum.theforeman.org/releases/3.4/el8/x86_64/', - check_gpg: true, - check_repo_gpg: false, - gpgkey: - '-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBGN9300BEAC1FLODu0cL6saMMHa7yJY1JZUc+jQUI/HdECQrrsTaPXlcc7nM\nykYMMv6amPqbnhH/R5BW2Ano+OMse+PXtUr0NXU4OcvxbnnXkrVBVUf8mXI9DzLZ\njw8KoD+4/s0BuzO78zAJF5uhuyHMAK0ll9v0r92kK45Fas9iZTfRFcqFAzvgjScf\n5jeBnbRs5U3UTz9mtDy802mk357o1A8BD0qlu3kANDpjLbORGWdAj21A6sMJDYXy\nHS9FBNV54daNcr+weky2L9gaF2yFjeu2rSEHCSfkbWfpSiVUx/bDTj7XS6XDOuJT\nJqvGS8jHqjHAIFBirhCA4cY/jLKxWyMr5N6IbXpPAYgt8/YYz2aOYVvdyB8tZ1u1\nkVsMYSGcvTBexZCn1cDkbO6I+waIlsc0uxGqUGBKF83AVYCQqOkBjF1uNnu9qefE\nkEc9obr4JZsAgnisboU25ss5ZJddKlmFMKSi66g4S5ChLEPFq7MB06PhLFioaD3L\nEXza7XitoW5VBwr0BSVKAHMC0T2xbm70zY06a6gQRlvr9a10lPmv4Tptc7xgQReg\nu1TlFPbrkGJ0d8O6vHQRAd3zdsNaVr4gX0Tg7UYiqT9ZUkP7hOc8PYXQ28hHrHTB\nA63MTq0aiPlJ/ivTuX8M6+Bi25dIV6N6IOUi/NQKIYxgovJCDSdCAAM0fQARAQAB\ntCFMdWNhcyBHYXJmaWVsZCA8bHVjYXNAcmVkaGF0LmNvbT6JAlcEEwEIAEEWIQTO\nQZeiHnXqdjmfUURc6PeuecS2PAUCY33fTQIbAwUJA8JnAAULCQgHAgIiAgYVCgkI\nCwIEFgIDAQIeBwIXgAAKCRBc6PeuecS2PCk3D/9jW7xrBB/2MQFKd5l+mNMFyKwc\nL9M/M5RFI9GaQRo55CwnPb0nnxOJR1V5GzZ/YGii53H2ose65CfBOE2L/F/RvKF0\nH9S9MInixlahzzKtV3TpDoZGk5oZIHEMuPmPS4XaHggolrzExY0ib0mQuBBE/uEV\n/HlyHEunBKPhTkAe+6Q+2dl22SUuVfWr4Uzlp65+DkdN3M37WI1a3Suhnef3rOSM\nV6puUzWRR7qcYs5C2In87AcYPn92P5ur1y/C32r8Ftg3fRWnEzI9QfRG52ojNOLK\nyGQ8ZC9PGe0q7VFcF7ridT/uzRU+NVKldbJg+rvBnszb1MjNuR7rUQHyvGmbsUVQ\nRCsgdovkee3lP4gfZHzk2SSLVSo0+NJRNaM90EmPk14Pgi/yfRSDGBVvLBbEanYI\nv1ZtdIPRyKi+/IaMOu/l7nayM/8RzghdU+0f1FAif5qf9nXuI13P8fqcqfu67gNd\nkh0UUF1XyR5UHHEZQQDqCuKEkZJ/+27jYlsG1ZiLb1odlIWoR44RP6k5OJl0raZb\nyLXbAfpITsXiJJBpCam9P9+XR5VSfgkqp5hIa7J8piN3DoMpoExg4PPQr6PbLAJy\nOUCOnuB7yYVbj0wYuMXTuyrcBHh/UymQnS8AMpQoEkCLWS/A/Hze/pD23LgiBoLY\nXIn5A2EOAf7t2IMSlA==\n=OanT\n-----END PGP PUBLIC KEY BLOCK-----', - rhsm: false, - }, - { - baseurl: - 'http://mirror.stream.centos.org/SIGs/8/kmods/x86_64/packages-main/', - rhsm: false, - check_gpg: false, - }, - ], - filesystem: [ - { - mountpoint: '/', - min_size: 10737418240, - }, - { - mountpoint: '/home', - min_size: 1073741824, - }, - { - mountpoint: '/var/tmp', - min_size: 104857600, - }, - ], - packages: ['test'], - subscription: { - 'activation-key': 'name0', - insights: true, - rhc: true, - organization: 5, - 'server-url': 'subscription.rhsm.redhat.com', - 'base-url': 'https://cdn.redhat.com/', - }, - }; - const composeImage = jest .spyOn(api, 'composeImage') .mockImplementation((body) => { diff --git a/src/test/Components/CreateImageWizard/CreateImageWizard.test.js b/src/test/Components/CreateImageWizard/CreateImageWizard.test.js index ccdb3060..8d11621d 100644 --- a/src/test/Components/CreateImageWizard/CreateImageWizard.test.js +++ b/src/test/Components/CreateImageWizard/CreateImageWizard.test.js @@ -11,25 +11,24 @@ import userEvent from '@testing-library/user-event'; import api from '../../../api.js'; import { RHEL_8 } from '../../../constants.js'; +import { mockComposesEmpty } from '../../fixtures/composes.js'; +import { + mockPkgResultAlpha, + mockPkgResultAll, + mockPkgResultPartial, +} from '../../fixtures/packages.js'; import { renderWithReduxRouter } from '../../testUtils'; let store = undefined; let router = undefined; -const mockComposes = { - meta: { - count: 0, - }, - data: [], -}; - // Mocking getComposes is necessary because in many tests we call navigate() // to navigate to the images table (via useNavigate hook), which will in turn // result in a call to getComposes. If it is not mocked, tests fail due to MSW // being unable to resolve that endpoint. jest .spyOn(api, 'getComposes') - .mockImplementation(() => Promise.resolve(mockComposes)); + .mockImplementation(() => Promise.resolve(mockComposesEmpty)); jest.mock('@redhat-cloud-services/frontend-components/useChrome', () => ({ useChrome: () => ({ @@ -70,52 +69,6 @@ function verifyCancelButton(cancel, router) { expect(router.state.location.pathname).toBe('/insights/image-builder'); } -const mockPkgResultAlpha = { - meta: { count: 3 }, - links: { first: '', last: '' }, - data: [ - { - name: 'lib-test', - summary: 'lib-test package summary', - version: '1.0', - }, - { - name: 'Z-test', - summary: 'Z-test package summary', - version: '1.0', - }, - { - name: 'test', - summary: 'summary for test package', - version: '1.0', - }, - ], -}; - -const mockPkgResultPartial = { - meta: { count: 132 }, - links: { first: '', last: '' }, - data: new Array(100).fill().map((_, i) => { - return { - name: 'testPkg-' + i, - summary: 'test package summary', - version: '1.0', - }; - }), -}; - -const mockPkgResultAll = { - meta: { count: 132 }, - links: { first: '', last: '' }, - data: new Array(132).fill().map((_, i) => { - return { - name: 'testPkg-' + i, - summary: 'test package summary', - version: '1.0', - }; - }), -}; - const searchForAvailablePackages = async (searchbox, searchTerm) => { const user = userEvent.setup(); await user.type(searchbox, searchTerm); diff --git a/src/test/Components/ImagesTable/ImagesTable.test.js b/src/test/Components/ImagesTable/ImagesTable.test.js index c2744f74..d4c57c73 100644 --- a/src/test/Components/ImagesTable/ImagesTable.test.js +++ b/src/test/Components/ImagesTable/ImagesTable.test.js @@ -9,421 +9,15 @@ import { ImageBuildStatus } from '../../../Components/ImagesTable/ImageBuildStat import ImageLink from '../../../Components/ImagesTable/ImageLink'; import Target from '../../../Components/ImagesTable/Target'; import '@testing-library/jest-dom'; -import { RHEL_8 } from '../../../constants.js'; +import { + mockComposes, + mockStatus, + mockClones, + mockCloneStatus, + mockNoClones, +} from '../../fixtures/composes.js'; import { renderWithProvider, renderWithReduxRouter } from '../../testUtils'; -const currentDate = new Date(); -const currentDateInString = currentDate.toString(); - -const mockComposes = { - meta: { - count: 12, - }, - data: [ - { - id: '1579d95b-8f1d-4982-8c53-8c2afa4ab04c', - image_name: 'testImageName', - created_at: '2021-04-27 12:31:12.794809 +0000 UTC', - request: { - distribution: RHEL_8, - image_requests: [ - { - architecture: 'x86_64', - image_type: 'aws', - upload_request: { - type: 'aws', - options: { - share_with_accounts: ['123123123123'], - }, - }, - }, - ], - }, - }, - // kept "running" for backward compatibility - { - id: 'c1cfa347-4c37-49b5-8e73-6aa1d1746cfa', - created_at: '2021-04-27 12:31:12.794809 +0000 UTC', - request: { - distribution: RHEL_8, - image_requests: [ - { - architecture: 'x86_64', - image_type: 'gcp', - upload_request: { - type: 'gcp', - options: { - share_with_accounts: ['serviceAccount:test@email.com'], - }, - }, - }, - ], - }, - }, - { - id: 'edbae1c2-62bc-42c1-ae0c-3110ab718f58', - created_at: '2021-04-27 12:31:12.794809 +0000 UTC', - request: { - distribution: RHEL_8, - image_requests: [ - { - architecture: 'x86_64', - image_type: 'aws', - upload_request: { - type: 'aws', - options: {}, - }, - }, - ], - }, - }, - { - id: '42ad0826-30b5-4f64-a24e-957df26fd564', - created_at: '2021-04-27 12:31:12.794809 +0000 UTC', - request: { - distribution: RHEL_8, - image_requests: [ - { - architecture: 'x86_64', - image_type: 'aws', - upload_request: { - type: 'aws', - options: {}, - }, - }, - ], - }, - }, - { - id: '955944a2-e149-4058-8ac1-35b514cb5a16', - created_at: '2021-04-27 12:31:12.794809 +0000 UTC', - request: { - distribution: RHEL_8, - image_requests: [ - { - architecture: 'x86_64', - image_type: 'aws', - upload_request: { - type: 'aws', - options: {}, - }, - }, - ], - }, - }, - { - id: 'f7a60094-b376-4b58-a102-5c8c82dfd18b', - created_at: '2021-04-27 12:31:12.794809 +0000 UTC', - request: { - distribution: RHEL_8, - image_requests: [ - { - architecture: 'x86_64', - image_type: 'aws', - upload_request: { - type: 'aws', - options: {}, - }, - }, - ], - }, - }, - { - id: '61b0effa-c901-4ee5-86b9-2010b47f1b22', - created_at: '2021-04-27 12:31:12.794809 +0000 UTC', - request: { - distribution: RHEL_8, - image_requests: [ - { - architecture: 'x86_64', - image_type: 'aws', - upload_request: { - type: 'aws', - options: {}, - }, - }, - ], - }, - }, - { - id: 'ca03f120-9840-4959-871e-94a5cb49d1f2', - created_at: '2021-04-27 12:31:12.794809 +0000 UTC', - request: { - distribution: RHEL_8, - image_requests: [ - { - architecture: 'x86_64', - image_type: 'gcp', - upload_request: { - type: 'gcp', - options: { - share_with_accounts: ['serviceAccount:test@email.com'], - }, - }, - }, - ], - }, - }, - { - id: '551de6f6-1533-4b46-a69f-7924051f9bc6', - created_at: '2021-04-27 12:31:12.794809 +0000 UTC', - request: { - distribution: RHEL_8, - image_requests: [ - { - architecture: 'x86_64', - image_type: 'azure', - upload_request: { - type: 'azure', - options: {}, - }, - }, - ], - }, - }, - { - created_at: '2021-04-27 12:31:12.794809 +0000 UTC', - id: 'b7193673-8dcc-4a5f-ac30-e9f4940d8346', - request: { - distribution: RHEL_8, - image_requests: [ - { - architecture: 'x86_64', - image_type: 'vsphere', - upload_request: { - options: {}, - type: 'aws.s3', - }, - }, - ], - }, - }, - { - created_at: '2021-04-27 12:31:12.794809 +0000 UTC', - id: '4873fd0f-1851-4b9f-b4fe-4639fce90794', - request: { - distribution: RHEL_8, - image_requests: [ - { - architecture: 'x86_64', - image_type: 'image-installer', - upload_request: { - options: {}, - type: 'aws.s3', - }, - }, - ], - }, - }, - { - created_at: currentDateInString, - id: '7b7d0d51-7106-42ab-98f2-f89872a9d599', - request: { - distribution: RHEL_8, - image_requests: [ - { - architecture: 'x86_64', - image_type: 'guest-image', - upload_request: { - options: {}, - type: 'aws.s3', - }, - }, - ], - }, - }, - ], -}; - -const mockStatus = { - '1579d95b-8f1d-4982-8c53-8c2afa4ab04c': { - image_status: { - status: 'success', - upload_status: { - options: { - ami: 'ami-0217b81d9be50e44b', - region: 'us-east-1', - }, - status: 'success', - type: 'aws', - }, - }, - }, - // kept "running" for backward compatibility - 'c1cfa347-4c37-49b5-8e73-6aa1d1746cfa': { - image_status: { - status: 'failure', - error: { - reason: 'A dependency error occured', - details: { - reason: 'Error in depsolve job', - }, - }, - }, - }, - 'edbae1c2-62bc-42c1-ae0c-3110ab718f58': { - image_status: { - status: 'pending', - }, - }, - '42ad0826-30b5-4f64-a24e-957df26fd564': { - image_status: { - status: 'building', - }, - }, - '955944a2-e149-4058-8ac1-35b514cb5a16': { - image_status: { - status: 'uploading', - }, - }, - 'f7a60094-b376-4b58-a102-5c8c82dfd18b': { - image_status: { - status: 'registering', - }, - }, - '61b0effa-c901-4ee5-86b9-2010b47f1b22': { - image_status: { - status: 'failure', - error: { - reason: 'A dependency error occured', - details: { - reason: 'Error in depsolve job', - }, - }, - }, - }, - 'ca03f120-9840-4959-871e-94a5cb49d1f2': { - image_status: { - status: 'success', - upload_status: { - options: { - image_name: 'composer-api-d446d8cb-7c16-4756-bf7d-706293785b05', - project_id: 'red-hat-image-builder', - }, - status: 'success', - type: 'gcp', - }, - }, - }, - '551de6f6-1533-4b46-a69f-7924051f9bc6': { - image_status: { - status: 'building', - }, - }, - 'b7193673-8dcc-4a5f-ac30-e9f4940d8346': { - image_status: { - status: 'success', - upload_status: { - options: { - url: 'https://s3.amazonaws.com/b7193673-8dcc-4a5f-ac30-e9f4940d8346-disk.vmdk', - }, - status: 'success', - type: 'aws.s3', - }, - }, - }, - '4873fd0f-1851-4b9f-b4fe-4639fce90794': { - image_status: { - status: 'success', - upload_status: { - options: { - url: 'https://s3.amazonaws.com/4873fd0f-1851-4b9f-b4fe-4639fce90794-installer.iso', - }, - status: 'success', - type: 'aws.s3', - }, - }, - }, - '7b7d0d51-7106-42ab-98f2-f89872a9d599': { - image_status: { - status: 'success', - upload_status: { - options: { - url: 'https://s3.amazonaws.com/7b7d0d51-7106-42ab-98f2-f89872a9d599-disk.qcow2', - }, - status: 'success', - type: 'aws.s3', - }, - }, - }, -}; - -const mockNoClones = { - data: null, -}; - -const mockClones = { - data: [ - { - created_at: '2021-04-27 12:31:12.794809 +0000 UTC', - id: 'f9133ec4-7a9e-4fd9-9a9f-9636b82b0a5d', - request: { - region: 'us-west-1', - share_with_accounts: ['123123123123'], - }, - }, - { - created_at: '2021-04-28 12:31:12.794809 +0000 UTC', - id: '48fce414-0cc0-4a16-8645-e3f0edec3212', - request: { - region: 'us-west-1', - share_with_accounts: ['123123123123'], - }, - }, - { - created_at: '2021-04-27 12:31:12.794809 +0000 UTC', - id: '0169538e-515c-477e-b934-f12783939313', - request: { - region: 'us-west-2', - share_with_accounts: ['123123123123'], - }, - }, - { - created_at: '2021-04-27 12:31:12.794809 +0000 UTC', - id: '4a851db1-919f-43ca-a7ef-dd209877a77e', - request: { - region: 'eu-central-1', - share_with_accounts: ['000000000000'], - }, - }, - ], -}; - -const mockCloneStatus = { - 'f9133ec4-7a9e-4fd9-9a9f-9636b82b0a5d': { - options: { - ami: 'ami-0e778053cd490ad21', - region: 'us-west-1', - }, - status: 'success', - type: 'aws', - }, - '48fce414-0cc0-4a16-8645-e3f0edec3212': { - options: { - ami: 'ami-9f0asd1tlk2142124', - region: 'us-west-1', - }, - status: 'success', - type: 'aws', - }, - '0169538e-515c-477e-b934-f12783939313': { - options: { - ami: 'ami-9fdskj12fdsak1211', - region: 'us-west-2', - }, - status: 'failure', - type: 'aws', - }, - '4a851db1-919f-43ca-a7ef-dd209877a77e': { - options: { - ami: 'ami-9fdskj12fdsak1211', - region: 'eu-central-1', - }, - status: 'success', - type: 'aws', - }, -}; - jest.mock('@redhat-cloud-services/frontend-components/useChrome', () => ({ useChrome: () => ({ isBeta: () => false, diff --git a/src/test/Components/ShareImageModal/ShareImageModal.test.js b/src/test/Components/ShareImageModal/ShareImageModal.test.js index 17cafc02..f60a75a5 100644 --- a/src/test/Components/ShareImageModal/ShareImageModal.test.js +++ b/src/test/Components/ShareImageModal/ShareImageModal.test.js @@ -3,7 +3,7 @@ import { act, screen, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import api from '../../../api.js'; -import { RHEL_8 } from '../../../constants.js'; +import { mockState } from '../../fixtures/composes.js'; import { renderWithReduxRouter } from '../../testUtils'; jest.mock('@redhat-cloud-services/frontend-components/useChrome', () => ({ @@ -14,150 +14,6 @@ jest.mock('@redhat-cloud-services/frontend-components/useChrome', () => ({ }), })); -const mockComposes = { - count: 1, - allIds: ['1579d95b-8f1d-4982-8c53-8c2afa4ab04c'], - byId: { - '1579d95b-8f1d-4982-8c53-8c2afa4ab04c': { - id: '1579d95b-8f1d-4982-8c53-8c2afa4abc', - image_name: 'testImageName', - created_at: '2021-04-27 12:31:12.794809 +0000 UTC', - request: { - distribution: RHEL_8, - image_requests: [ - { - architecture: 'x86_64', - image_type: 'aws', - upload_request: { - type: 'aws', - options: { - share_with_accounts: ['123123123123'], - }, - }, - }, - ], - }, - clones: [ - 'f9133ec4-7a9e-4fd9-9a9f-9636b82b0a5d', - '48fce414-0cc0-4a16-8645-e3f0edec3212', - '0169538e-515c-477e-b934-f12783939313', - '4a851db1-919f-43ca-a7ef-dd209877a77e', - ], - image_status: { - status: 'success', - upload_status: { - options: { - ami: 'ami-0217b81d9be50e44b', - region: 'us-east-1', - }, - status: 'success', - type: 'aws', - }, - }, - }, - }, - error: null, -}; - -const mockClones = { - allIds: [ - 'f9133ec4-7a9e-4fd9-9a9f-9636b82b0a5d', - '48fce414-0cc0-4a16-8645-e3f0edec3212', - '0169538e-515c-477e-b934-f12783939313', - '4a851db1-919f-43ca-a7ef-dd209877a77e', - ], - byId: { - 'f9133ec4-7a9e-4fd9-9a9f-9636b82b0a5d': { - created_at: '2021-04-27 12:31:12.794809 +0000 UTC', - id: 'f9133ec4-7a9e-4fd9-9a9f-9636b82b0a5d', - request: { - region: 'us-west-1', - share_with_accounts: ['123123123123'], - }, - parent: '1579d95b-8f1d-4982-8c53-8c2afa4ab04c', - image_status: { - status: 'success', - upload_status: { - options: { - ami: 'ami-0e778053cd490ad21', - region: 'us-west-1', - }, - status: 'success', - type: 'aws', - }, - }, - }, - // Duplicate us-west-1 clone with different ami created one day later - '48fce414-0cc0-4a16-8645-e3f0edec3212': { - created_at: '2021-04-28 12:31:12.794809 +0000 UTC', - id: '48fce414-0cc0-4a16-8645-e3f0edec3212', - request: { - region: 'us-west-1', - share_with_accounts: ['123123123123'], - }, - parent: '1579d95b-8f1d-4982-8c53-8c2afa4ab04c', - image_status: { - status: 'success', - upload_status: { - options: { - ami: 'ami-9f0asd1tlk2142124', - region: 'us-west-1', - }, - status: 'success', - type: 'aws', - }, - }, - }, - '0169538e-515c-477e-b934-f12783939313': { - created_at: '2021-04-27 12:31:12.794809 +0000 UTC', - id: '0169538e-515c-477e-b934-f12783939313', - request: { - region: 'us-west-2', - share_with_accounts: ['123123123123'], - }, - parent: '1579d95b-8f1d-4982-8c53-8c2afa4ab04c', - image_status: { - status: 'failure', - upload_status: { - options: { - ami: 'ami-9fdskj12fdsak1211', - region: 'us-west-2', - }, - status: 'failure', - type: 'aws', - }, - }, - }, - '4a851db1-919f-43ca-a7ef-dd209877a77e': { - created_at: '2021-04-27 12:31:12.794809 +0000 UTC', - id: '4a851db1-919f-43ca-a7ef-dd209877a77e', - request: { - region: 'eu-central-1', - share_with_accounts: ['000000000000'], - }, - parent: '1579d95b-8f1d-4982-8c53-8c2afa4ab04c', - image_status: { - status: 'success', - upload_status: { - options: { - ami: 'ami-9fdskj12fdsak1211', - region: 'eu-central-1', - }, - status: 'success', - type: 'aws', - }, - }, - }, - }, - error: null, -}; - -const mockState = { - clones: { ...mockClones }, - composes: { ...mockComposes }, - notifications: [], -}; - const composeId = '1579d95b-8f1d-4982-8c53-8c2afa4ab04c'; describe('Create Share To Regions Modal', () => { diff --git a/src/test/fixtures/activationKeys.js b/src/test/fixtures/activationKeys.js new file mode 100644 index 00000000..b7f657cc --- /dev/null +++ b/src/test/fixtures/activationKeys.js @@ -0,0 +1,62 @@ +export const mockActivationKeysResults = () => { + return { + body: [ + { + id: 0, + name: 'name0', + }, + { + id: 1, + name: 'name1', + }, + ], + }; +}; + +export const mockActivationKeyInformation = (key) => { + if (key === 'name0') { + return { + body: { + additionalRepositories: [ + { + repositoryLabel: 'repository0', + }, + { + repositoryLabel: 'repository1', + }, + { + repositoryLabel: 'repository2', + }, + ], + id: '0', + name: 'name0', + releaseVersion: '', + role: '', + serviceLevel: 'Self-Support', + usage: 'Production', + }, + }; + } else if (key === 'name1') { + return { + body: { + additionalRepositories: [ + { + repositoryLabel: 'repository3', + }, + { + repositoryLabel: 'repository4', + }, + { + repositoryLabel: 'repository5', + }, + ], + id: '1', + name: 'name1', + releaseVersion: '', + role: '', + serviceLevel: 'Premium', + usage: 'Production', + }, + }; + } +}; diff --git a/src/test/fixtures/architectures.js b/src/test/fixtures/architectures.js new file mode 100644 index 00000000..619c86db --- /dev/null +++ b/src/test/fixtures/architectures.js @@ -0,0 +1,72 @@ +export const mockArchitecturesByDistro = (distro) => { + if (distro === 'rhel-92') { + return [ + { + arch: 'x86_64', + repositories: [ + { + baseurl: + 'https://cdn.redhat.com/content/dist/rhel9/9.2/x86_64/baseos/os', + rhsm: true, + }, + ], + }, + { + arch: 'aarch64', + repositories: [ + { + baseurl: + 'https://cdn.redhat.com/content/dist/rhel9/9.2/aarch64/baseos/os', + rhsm: true, + }, + ], + }, + ]; + } else if (distro === 'rhel-87') { + return [ + { + arch: 'x86_64', + repositories: [ + { + baseurl: + 'https://cdn.redhat.com/content/dist/rhel8/8.7/x86_64/baseos/os', + rhsm: true, + }, + ], + }, + { + arch: 'aarch64', + repositories: [ + { + baseurl: + 'https://cdn.redhat.com/content/dist/rhel8/8.7/aarch64/baseos/os', + rhsm: true, + }, + ], + }, + ]; + } else if (distro === 'centos-8') { + return [ + { + arch: 'x86_64', + repositories: [ + { + baseurl: + 'http://mirror.centos.org/centos/8-stream/BaseOS/x86_64/os/', + rhsm: false, + }, + ], + }, + { + arch: 'aarch64', + repositories: [ + { + baseurl: + 'http://mirror.centos.org/centos/8-stream/BaseOS/aarch64/os/', + rhsm: false, + }, + ], + }, + ]; + } +}; diff --git a/src/test/fixtures/composes.js b/src/test/fixtures/composes.js new file mode 100644 index 00000000..34aba7e2 --- /dev/null +++ b/src/test/fixtures/composes.js @@ -0,0 +1,567 @@ +import { RHEL_8 } from '../../constants'; + +// CreateImageWizard mocks +export const mockComposesEmpty = { + meta: { + count: 0, + }, + data: [], +}; + +// ImagesTable mocks +const currentDate = new Date(); +const currentDateInString = currentDate.toString(); + +export const mockComposes = { + meta: { + count: 12, + }, + data: [ + { + id: '1579d95b-8f1d-4982-8c53-8c2afa4ab04c', + image_name: 'testImageName', + created_at: '2021-04-27 12:31:12.794809 +0000 UTC', + request: { + distribution: RHEL_8, + image_requests: [ + { + architecture: 'x86_64', + image_type: 'aws', + upload_request: { + type: 'aws', + options: { + share_with_accounts: ['123123123123'], + }, + }, + }, + ], + }, + }, + // kept "running" for backward compatibility + { + id: 'c1cfa347-4c37-49b5-8e73-6aa1d1746cfa', + created_at: '2021-04-27 12:31:12.794809 +0000 UTC', + request: { + distribution: RHEL_8, + image_requests: [ + { + architecture: 'x86_64', + image_type: 'gcp', + upload_request: { + type: 'gcp', + options: { + share_with_accounts: ['serviceAccount:test@email.com'], + }, + }, + }, + ], + }, + }, + { + id: 'edbae1c2-62bc-42c1-ae0c-3110ab718f58', + created_at: '2021-04-27 12:31:12.794809 +0000 UTC', + request: { + distribution: RHEL_8, + image_requests: [ + { + architecture: 'x86_64', + image_type: 'aws', + upload_request: { + type: 'aws', + options: {}, + }, + }, + ], + }, + }, + { + id: '42ad0826-30b5-4f64-a24e-957df26fd564', + created_at: '2021-04-27 12:31:12.794809 +0000 UTC', + request: { + distribution: RHEL_8, + image_requests: [ + { + architecture: 'x86_64', + image_type: 'aws', + upload_request: { + type: 'aws', + options: {}, + }, + }, + ], + }, + }, + { + id: '955944a2-e149-4058-8ac1-35b514cb5a16', + created_at: '2021-04-27 12:31:12.794809 +0000 UTC', + request: { + distribution: RHEL_8, + image_requests: [ + { + architecture: 'x86_64', + image_type: 'aws', + upload_request: { + type: 'aws', + options: {}, + }, + }, + ], + }, + }, + { + id: 'f7a60094-b376-4b58-a102-5c8c82dfd18b', + created_at: '2021-04-27 12:31:12.794809 +0000 UTC', + request: { + distribution: RHEL_8, + image_requests: [ + { + architecture: 'x86_64', + image_type: 'aws', + upload_request: { + type: 'aws', + options: {}, + }, + }, + ], + }, + }, + { + id: '61b0effa-c901-4ee5-86b9-2010b47f1b22', + created_at: '2021-04-27 12:31:12.794809 +0000 UTC', + request: { + distribution: RHEL_8, + image_requests: [ + { + architecture: 'x86_64', + image_type: 'aws', + upload_request: { + type: 'aws', + options: {}, + }, + }, + ], + }, + }, + { + id: 'ca03f120-9840-4959-871e-94a5cb49d1f2', + created_at: '2021-04-27 12:31:12.794809 +0000 UTC', + request: { + distribution: RHEL_8, + image_requests: [ + { + architecture: 'x86_64', + image_type: 'gcp', + upload_request: { + type: 'gcp', + options: { + share_with_accounts: ['serviceAccount:test@email.com'], + }, + }, + }, + ], + }, + }, + { + id: '551de6f6-1533-4b46-a69f-7924051f9bc6', + created_at: '2021-04-27 12:31:12.794809 +0000 UTC', + request: { + distribution: RHEL_8, + image_requests: [ + { + architecture: 'x86_64', + image_type: 'azure', + upload_request: { + type: 'azure', + options: {}, + }, + }, + ], + }, + }, + { + created_at: '2021-04-27 12:31:12.794809 +0000 UTC', + id: 'b7193673-8dcc-4a5f-ac30-e9f4940d8346', + request: { + distribution: RHEL_8, + image_requests: [ + { + architecture: 'x86_64', + image_type: 'vsphere', + upload_request: { + options: {}, + type: 'aws.s3', + }, + }, + ], + }, + }, + { + created_at: '2021-04-27 12:31:12.794809 +0000 UTC', + id: '4873fd0f-1851-4b9f-b4fe-4639fce90794', + request: { + distribution: RHEL_8, + image_requests: [ + { + architecture: 'x86_64', + image_type: 'image-installer', + upload_request: { + options: {}, + type: 'aws.s3', + }, + }, + ], + }, + }, + { + created_at: currentDateInString, + id: '7b7d0d51-7106-42ab-98f2-f89872a9d599', + request: { + distribution: RHEL_8, + image_requests: [ + { + architecture: 'x86_64', + image_type: 'guest-image', + upload_request: { + options: {}, + type: 'aws.s3', + }, + }, + ], + }, + }, + ], +}; + +export const mockStatus = { + '1579d95b-8f1d-4982-8c53-8c2afa4ab04c': { + image_status: { + status: 'success', + upload_status: { + options: { + ami: 'ami-0217b81d9be50e44b', + region: 'us-east-1', + }, + status: 'success', + type: 'aws', + }, + }, + }, + // kept "running" for backward compatibility + 'c1cfa347-4c37-49b5-8e73-6aa1d1746cfa': { + image_status: { + status: 'failure', + error: { + reason: 'A dependency error occured', + details: { + reason: 'Error in depsolve job', + }, + }, + }, + }, + 'edbae1c2-62bc-42c1-ae0c-3110ab718f58': { + image_status: { + status: 'pending', + }, + }, + '42ad0826-30b5-4f64-a24e-957df26fd564': { + image_status: { + status: 'building', + }, + }, + '955944a2-e149-4058-8ac1-35b514cb5a16': { + image_status: { + status: 'uploading', + }, + }, + 'f7a60094-b376-4b58-a102-5c8c82dfd18b': { + image_status: { + status: 'registering', + }, + }, + '61b0effa-c901-4ee5-86b9-2010b47f1b22': { + image_status: { + status: 'failure', + error: { + reason: 'A dependency error occured', + details: { + reason: 'Error in depsolve job', + }, + }, + }, + }, + 'ca03f120-9840-4959-871e-94a5cb49d1f2': { + image_status: { + status: 'success', + upload_status: { + options: { + image_name: 'composer-api-d446d8cb-7c16-4756-bf7d-706293785b05', + project_id: 'red-hat-image-builder', + }, + status: 'success', + type: 'gcp', + }, + }, + }, + '551de6f6-1533-4b46-a69f-7924051f9bc6': { + image_status: { + status: 'building', + }, + }, + 'b7193673-8dcc-4a5f-ac30-e9f4940d8346': { + image_status: { + status: 'success', + upload_status: { + options: { + url: 'https://s3.amazonaws.com/b7193673-8dcc-4a5f-ac30-e9f4940d8346-disk.vmdk', + }, + status: 'success', + type: 'aws.s3', + }, + }, + }, + '4873fd0f-1851-4b9f-b4fe-4639fce90794': { + image_status: { + status: 'success', + upload_status: { + options: { + url: 'https://s3.amazonaws.com/4873fd0f-1851-4b9f-b4fe-4639fce90794-installer.iso', + }, + status: 'success', + type: 'aws.s3', + }, + }, + }, + '7b7d0d51-7106-42ab-98f2-f89872a9d599': { + image_status: { + status: 'success', + upload_status: { + options: { + url: 'https://s3.amazonaws.com/7b7d0d51-7106-42ab-98f2-f89872a9d599-disk.qcow2', + }, + status: 'success', + type: 'aws.s3', + }, + }, + }, +}; + +export const mockNoClones = { + data: null, +}; + +export const mockClones = { + data: [ + { + created_at: '2021-04-27 12:31:12.794809 +0000 UTC', + id: 'f9133ec4-7a9e-4fd9-9a9f-9636b82b0a5d', + request: { + region: 'us-west-1', + share_with_accounts: ['123123123123'], + }, + }, + { + created_at: '2021-04-28 12:31:12.794809 +0000 UTC', + id: '48fce414-0cc0-4a16-8645-e3f0edec3212', + request: { + region: 'us-west-1', + share_with_accounts: ['123123123123'], + }, + }, + { + created_at: '2021-04-27 12:31:12.794809 +0000 UTC', + id: '0169538e-515c-477e-b934-f12783939313', + request: { + region: 'us-west-2', + share_with_accounts: ['123123123123'], + }, + }, + { + created_at: '2021-04-27 12:31:12.794809 +0000 UTC', + id: '4a851db1-919f-43ca-a7ef-dd209877a77e', + request: { + region: 'eu-central-1', + share_with_accounts: ['000000000000'], + }, + }, + ], +}; + +export const mockCloneStatus = { + 'f9133ec4-7a9e-4fd9-9a9f-9636b82b0a5d': { + options: { + ami: 'ami-0e778053cd490ad21', + region: 'us-west-1', + }, + status: 'success', + type: 'aws', + }, + '48fce414-0cc0-4a16-8645-e3f0edec3212': { + options: { + ami: 'ami-9f0asd1tlk2142124', + region: 'us-west-1', + }, + status: 'success', + type: 'aws', + }, + '0169538e-515c-477e-b934-f12783939313': { + options: { + ami: 'ami-9fdskj12fdsak1211', + region: 'us-west-2', + }, + status: 'failure', + type: 'aws', + }, + '4a851db1-919f-43ca-a7ef-dd209877a77e': { + options: { + ami: 'ami-9fdskj12fdsak1211', + region: 'eu-central-1', + }, + status: 'success', + type: 'aws', + }, +}; + +// ShareImageModal mocks +export const mockComposesShareImageModal = { + count: 1, + allIds: ['1579d95b-8f1d-4982-8c53-8c2afa4ab04c'], + byId: { + '1579d95b-8f1d-4982-8c53-8c2afa4ab04c': { + id: '1579d95b-8f1d-4982-8c53-8c2afa4abc', + image_name: 'testImageName', + created_at: '2021-04-27 12:31:12.794809 +0000 UTC', + request: { + distribution: RHEL_8, + image_requests: [ + { + architecture: 'x86_64', + image_type: 'aws', + upload_request: { + type: 'aws', + options: { + share_with_accounts: ['123123123123'], + }, + }, + }, + ], + }, + clones: [ + 'f9133ec4-7a9e-4fd9-9a9f-9636b82b0a5d', + '48fce414-0cc0-4a16-8645-e3f0edec3212', + '0169538e-515c-477e-b934-f12783939313', + '4a851db1-919f-43ca-a7ef-dd209877a77e', + ], + image_status: { + status: 'success', + upload_status: { + options: { + ami: 'ami-0217b81d9be50e44b', + region: 'us-east-1', + }, + status: 'success', + type: 'aws', + }, + }, + }, + }, + error: null, +}; + +export const mockClonesShareImageModal = { + allIds: [ + 'f9133ec4-7a9e-4fd9-9a9f-9636b82b0a5d', + '48fce414-0cc0-4a16-8645-e3f0edec3212', + '0169538e-515c-477e-b934-f12783939313', + '4a851db1-919f-43ca-a7ef-dd209877a77e', + ], + byId: { + 'f9133ec4-7a9e-4fd9-9a9f-9636b82b0a5d': { + created_at: '2021-04-27 12:31:12.794809 +0000 UTC', + id: 'f9133ec4-7a9e-4fd9-9a9f-9636b82b0a5d', + request: { + region: 'us-west-1', + share_with_accounts: ['123123123123'], + }, + parent: '1579d95b-8f1d-4982-8c53-8c2afa4ab04c', + image_status: { + status: 'success', + upload_status: { + options: { + ami: 'ami-0e778053cd490ad21', + region: 'us-west-1', + }, + status: 'success', + type: 'aws', + }, + }, + }, + // Duplicate us-west-1 clone with different ami created one day later + '48fce414-0cc0-4a16-8645-e3f0edec3212': { + created_at: '2021-04-28 12:31:12.794809 +0000 UTC', + id: '48fce414-0cc0-4a16-8645-e3f0edec3212', + request: { + region: 'us-west-1', + share_with_accounts: ['123123123123'], + }, + parent: '1579d95b-8f1d-4982-8c53-8c2afa4ab04c', + image_status: { + status: 'success', + upload_status: { + options: { + ami: 'ami-9f0asd1tlk2142124', + region: 'us-west-1', + }, + status: 'success', + type: 'aws', + }, + }, + }, + '0169538e-515c-477e-b934-f12783939313': { + created_at: '2021-04-27 12:31:12.794809 +0000 UTC', + id: '0169538e-515c-477e-b934-f12783939313', + request: { + region: 'us-west-2', + share_with_accounts: ['123123123123'], + }, + parent: '1579d95b-8f1d-4982-8c53-8c2afa4ab04c', + image_status: { + status: 'failure', + upload_status: { + options: { + ami: 'ami-9fdskj12fdsak1211', + region: 'us-west-2', + }, + status: 'failure', + type: 'aws', + }, + }, + }, + '4a851db1-919f-43ca-a7ef-dd209877a77e': { + created_at: '2021-04-27 12:31:12.794809 +0000 UTC', + id: '4a851db1-919f-43ca-a7ef-dd209877a77e', + request: { + region: 'eu-central-1', + share_with_accounts: ['000000000000'], + }, + parent: '1579d95b-8f1d-4982-8c53-8c2afa4ab04c', + image_status: { + status: 'success', + upload_status: { + options: { + ami: 'ami-9fdskj12fdsak1211', + region: 'eu-central-1', + }, + status: 'success', + type: 'aws', + }, + }, + }, + }, + error: null, +}; + +export const mockState = { + clones: { ...mockClonesShareImageModal }, + composes: { ...mockComposesShareImageModal }, + notifications: [], +}; diff --git a/src/test/fixtures/customizations.js b/src/test/fixtures/customizations.js new file mode 100644 index 00000000..202bf8af --- /dev/null +++ b/src/test/fixtures/customizations.js @@ -0,0 +1,63 @@ +export const ids = []; + +export const customizations = { + custom_repositories: [ + { + baseurl: ['http://yum.theforeman.org/releases/3.4/el8/x86_64/'], + check_gpg: true, + check_repo_gpg: false, + gpgkey: [ + '-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBGN9300BEAC1FLODu0cL6saMMHa7yJY1JZUc+jQUI/HdECQrrsTaPXlcc7nM\nykYMMv6amPqbnhH/R5BW2Ano+OMse+PXtUr0NXU4OcvxbnnXkrVBVUf8mXI9DzLZ\njw8KoD+4/s0BuzO78zAJF5uhuyHMAK0ll9v0r92kK45Fas9iZTfRFcqFAzvgjScf\n5jeBnbRs5U3UTz9mtDy802mk357o1A8BD0qlu3kANDpjLbORGWdAj21A6sMJDYXy\nHS9FBNV54daNcr+weky2L9gaF2yFjeu2rSEHCSfkbWfpSiVUx/bDTj7XS6XDOuJT\nJqvGS8jHqjHAIFBirhCA4cY/jLKxWyMr5N6IbXpPAYgt8/YYz2aOYVvdyB8tZ1u1\nkVsMYSGcvTBexZCn1cDkbO6I+waIlsc0uxGqUGBKF83AVYCQqOkBjF1uNnu9qefE\nkEc9obr4JZsAgnisboU25ss5ZJddKlmFMKSi66g4S5ChLEPFq7MB06PhLFioaD3L\nEXza7XitoW5VBwr0BSVKAHMC0T2xbm70zY06a6gQRlvr9a10lPmv4Tptc7xgQReg\nu1TlFPbrkGJ0d8O6vHQRAd3zdsNaVr4gX0Tg7UYiqT9ZUkP7hOc8PYXQ28hHrHTB\nA63MTq0aiPlJ/ivTuX8M6+Bi25dIV6N6IOUi/NQKIYxgovJCDSdCAAM0fQARAQAB\ntCFMdWNhcyBHYXJmaWVsZCA8bHVjYXNAcmVkaGF0LmNvbT6JAlcEEwEIAEEWIQTO\nQZeiHnXqdjmfUURc6PeuecS2PAUCY33fTQIbAwUJA8JnAAULCQgHAgIiAgYVCgkI\nCwIEFgIDAQIeBwIXgAAKCRBc6PeuecS2PCk3D/9jW7xrBB/2MQFKd5l+mNMFyKwc\nL9M/M5RFI9GaQRo55CwnPb0nnxOJR1V5GzZ/YGii53H2ose65CfBOE2L/F/RvKF0\nH9S9MInixlahzzKtV3TpDoZGk5oZIHEMuPmPS4XaHggolrzExY0ib0mQuBBE/uEV\n/HlyHEunBKPhTkAe+6Q+2dl22SUuVfWr4Uzlp65+DkdN3M37WI1a3Suhnef3rOSM\nV6puUzWRR7qcYs5C2In87AcYPn92P5ur1y/C32r8Ftg3fRWnEzI9QfRG52ojNOLK\nyGQ8ZC9PGe0q7VFcF7ridT/uzRU+NVKldbJg+rvBnszb1MjNuR7rUQHyvGmbsUVQ\nRCsgdovkee3lP4gfZHzk2SSLVSo0+NJRNaM90EmPk14Pgi/yfRSDGBVvLBbEanYI\nv1ZtdIPRyKi+/IaMOu/l7nayM/8RzghdU+0f1FAif5qf9nXuI13P8fqcqfu67gNd\nkh0UUF1XyR5UHHEZQQDqCuKEkZJ/+27jYlsG1ZiLb1odlIWoR44RP6k5OJl0raZb\nyLXbAfpITsXiJJBpCam9P9+XR5VSfgkqp5hIa7J8piN3DoMpoExg4PPQr6PbLAJy\nOUCOnuB7yYVbj0wYuMXTuyrcBHh/UymQnS8AMpQoEkCLWS/A/Hze/pD23LgiBoLY\nXIn5A2EOAf7t2IMSlA==\n=OanT\n-----END PGP PUBLIC KEY BLOCK-----', + ], + id: 'dbad4dfc-1547-45f8-b5af-1d7fec0476c6', + name: '13lk3', + }, + { + baseurl: [ + 'http://mirror.stream.centos.org/SIGs/8/kmods/x86_64/packages-main/', + ], + check_gpg: false, + id: '9cf1d45d-aa06-46fe-87ea-121845cc6bbb', + name: '2lmdtj', + }, + ], + payload_repositories: [ + { + baseurl: 'http://yum.theforeman.org/releases/3.4/el8/x86_64/', + check_gpg: true, + check_repo_gpg: false, + gpgkey: + '-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBGN9300BEAC1FLODu0cL6saMMHa7yJY1JZUc+jQUI/HdECQrrsTaPXlcc7nM\nykYMMv6amPqbnhH/R5BW2Ano+OMse+PXtUr0NXU4OcvxbnnXkrVBVUf8mXI9DzLZ\njw8KoD+4/s0BuzO78zAJF5uhuyHMAK0ll9v0r92kK45Fas9iZTfRFcqFAzvgjScf\n5jeBnbRs5U3UTz9mtDy802mk357o1A8BD0qlu3kANDpjLbORGWdAj21A6sMJDYXy\nHS9FBNV54daNcr+weky2L9gaF2yFjeu2rSEHCSfkbWfpSiVUx/bDTj7XS6XDOuJT\nJqvGS8jHqjHAIFBirhCA4cY/jLKxWyMr5N6IbXpPAYgt8/YYz2aOYVvdyB8tZ1u1\nkVsMYSGcvTBexZCn1cDkbO6I+waIlsc0uxGqUGBKF83AVYCQqOkBjF1uNnu9qefE\nkEc9obr4JZsAgnisboU25ss5ZJddKlmFMKSi66g4S5ChLEPFq7MB06PhLFioaD3L\nEXza7XitoW5VBwr0BSVKAHMC0T2xbm70zY06a6gQRlvr9a10lPmv4Tptc7xgQReg\nu1TlFPbrkGJ0d8O6vHQRAd3zdsNaVr4gX0Tg7UYiqT9ZUkP7hOc8PYXQ28hHrHTB\nA63MTq0aiPlJ/ivTuX8M6+Bi25dIV6N6IOUi/NQKIYxgovJCDSdCAAM0fQARAQAB\ntCFMdWNhcyBHYXJmaWVsZCA8bHVjYXNAcmVkaGF0LmNvbT6JAlcEEwEIAEEWIQTO\nQZeiHnXqdjmfUURc6PeuecS2PAUCY33fTQIbAwUJA8JnAAULCQgHAgIiAgYVCgkI\nCwIEFgIDAQIeBwIXgAAKCRBc6PeuecS2PCk3D/9jW7xrBB/2MQFKd5l+mNMFyKwc\nL9M/M5RFI9GaQRo55CwnPb0nnxOJR1V5GzZ/YGii53H2ose65CfBOE2L/F/RvKF0\nH9S9MInixlahzzKtV3TpDoZGk5oZIHEMuPmPS4XaHggolrzExY0ib0mQuBBE/uEV\n/HlyHEunBKPhTkAe+6Q+2dl22SUuVfWr4Uzlp65+DkdN3M37WI1a3Suhnef3rOSM\nV6puUzWRR7qcYs5C2In87AcYPn92P5ur1y/C32r8Ftg3fRWnEzI9QfRG52ojNOLK\nyGQ8ZC9PGe0q7VFcF7ridT/uzRU+NVKldbJg+rvBnszb1MjNuR7rUQHyvGmbsUVQ\nRCsgdovkee3lP4gfZHzk2SSLVSo0+NJRNaM90EmPk14Pgi/yfRSDGBVvLBbEanYI\nv1ZtdIPRyKi+/IaMOu/l7nayM/8RzghdU+0f1FAif5qf9nXuI13P8fqcqfu67gNd\nkh0UUF1XyR5UHHEZQQDqCuKEkZJ/+27jYlsG1ZiLb1odlIWoR44RP6k5OJl0raZb\nyLXbAfpITsXiJJBpCam9P9+XR5VSfgkqp5hIa7J8piN3DoMpoExg4PPQr6PbLAJy\nOUCOnuB7yYVbj0wYuMXTuyrcBHh/UymQnS8AMpQoEkCLWS/A/Hze/pD23LgiBoLY\nXIn5A2EOAf7t2IMSlA==\n=OanT\n-----END PGP PUBLIC KEY BLOCK-----', + rhsm: false, + }, + { + baseurl: + 'http://mirror.stream.centos.org/SIGs/8/kmods/x86_64/packages-main/', + rhsm: false, + check_gpg: false, + }, + ], + filesystem: [ + { + mountpoint: '/', + min_size: 10737418240, + }, + { + mountpoint: '/home', + min_size: 1073741824, + }, + { + mountpoint: '/var/tmp', + min_size: 104857600, + }, + ], + packages: ['test'], + subscription: { + 'activation-key': 'name0', + insights: true, + rhc: true, + organization: 5, + 'server-url': 'subscription.rhsm.redhat.com', + 'base-url': 'https://cdn.redhat.com/', + }, +}; diff --git a/src/test/fixtures/packages.js b/src/test/fixtures/packages.js new file mode 100644 index 00000000..1adfc187 --- /dev/null +++ b/src/test/fixtures/packages.js @@ -0,0 +1,116 @@ +export const mockPackagesResults = (search) => { + if (search === 'test') { + return { + data: [ + { + name: 'testPkg', + summary: 'test package summary', + version: '1.0', + }, + { + name: 'lib-test', + summary: 'lib-test package summary', + version: '1.0', + }, + { + name: 'test', + summary: 'summary for test package', + version: '1.0', + }, + ], + meta: { + count: 3, + }, + }; + } else { + return { data: [], meta: 0 }; + } +}; + +export const mockSourcesPackagesResults = (search) => { + if (search === 'test') { + return [ + { + name: 'testPkg', + summary: 'test package summary', + version: '1.0', + }, + { + name: 'lib-test', + summary: 'lib-test package summary', + version: '1.0', + }, + { + name: 'test', + summary: 'summary for test package', + version: '1.0', + }, + ]; + } else { + return []; + } +}; + +export const mockPkgResultAlpha = { + meta: { count: 3 }, + links: { first: '', last: '' }, + data: [ + { + name: 'lib-test', + summary: 'lib-test package summary', + version: '1.0', + }, + { + name: 'Z-test', + summary: 'Z-test package summary', + version: '1.0', + }, + { + name: 'test', + summary: 'summary for test package', + version: '1.0', + }, + ], +}; + +export const mockPkgResultAlphaContentSources = [ + { + name: 'lib-test', + summary: 'lib-test package summary', + version: '1.0', + }, + { + name: 'Z-test', + summary: 'Z-test package summary', + version: '1.0', + }, + { + name: 'test', + summary: 'summary for test package', + version: '1.0', + }, +]; + +export const mockPkgResultPartial = { + meta: { count: 132 }, + links: { first: '', last: '' }, + data: new Array(100).fill().map((_, i) => { + return { + name: 'testPkg-' + i, + summary: 'test package summary', + version: '1.0', + }; + }), +}; + +export const mockPkgResultAll = { + meta: { count: 132 }, + links: { first: '', last: '' }, + data: new Array(132).fill().map((_, i) => { + return { + name: 'testPkg-' + i, + summary: 'test package summary', + version: '1.0', + }; + }), +}; diff --git a/src/test/fixtures/sources.js b/src/test/fixtures/sources.js new file mode 100644 index 00000000..5206a1ba --- /dev/null +++ b/src/test/fixtures/sources.js @@ -0,0 +1,55 @@ +export const mockAccountIdentity = { + aws: { + account_id: '123456789012', + }, +}; + +export const mockSourcesByProvider = (provider) => { + if (provider === 'aws') { + return [ + { + id: '123', + name: 'my_source', + source_type_id: '1', + uid: 'de5e35d4-4c1f-49d7-9ef3-7d08e6b9c76a', + }, + ]; + } else if (provider === 'azure') { + return [ + { + id: '666', + name: 'azureSource1', + source_type_id: '3', + uid: '9f48059c-25db-47ac-81e8-dac7f8a76170', + }, + { + id: '667', + name: 'azureSource2', + source_type_id: '3', + uid: '73d5694c-7a28-417e-9fca-55840084f508', + }, + ]; + } +}; + +export const mockUploadInfo = (sourceId) => { + if (sourceId === '666') { + return { + provider: 'azure', + azure: { + tenant_id: '2fd7c95c-0d63-4e81-b914-3fbd5288daf7', + subscription_id: 'dfb83267-e016-4429-ae6e-b0768bf36d65', + resource_groups: ['myResourceGroup1', 'testResourceGroup'], + }, + }; + } else if (sourceId === '667') { + return { + provider: 'azure', + azure: { + tenant_id: '73d5694c-7a28-417e-9fca-55840084f508', + subscription_id: 'a66682d2-ce3e-46f7-a127-1d106c34e10c', + resource_groups: ['theirGroup2'], + }, + }; + } +}; diff --git a/src/test/mocks/handlers.js b/src/test/mocks/handlers.js index cd60a126..197435bb 100644 --- a/src/test/mocks/handlers.js +++ b/src/test/mocks/handlers.js @@ -2,10 +2,25 @@ import { rest } from 'msw'; import { CONTENT_SOURCES, + IMAGE_BUILDER_API, PROVISIONING_SOURCES_ENDPOINT, RHSM_API, } from '../../constants'; +import { + mockActivationKeyInformation, + mockActivationKeysResults, +} from '../fixtures/activationKeys'; +import { mockArchitecturesByDistro } from '../fixtures/architectures'; +import { + mockPackagesResults, + mockSourcesPackagesResults, +} from '../fixtures/packages'; import { mockRepositoryResults } from '../fixtures/repositories'; +import { + mockAccountIdentity, + mockSourcesByProvider, + mockUploadInfo, +} from '../fixtures/sources'; const baseURL = 'http://localhost'; @@ -14,37 +29,7 @@ export const handlers = [ baseURL.concat(`${PROVISIONING_SOURCES_ENDPOINT}`), (req, res, ctx) => { const provider = req.url.searchParams.get('provider'); - if (provider === 'aws') { - return res( - ctx.status(200), - ctx.json([ - { - id: '123', - name: 'my_source', - source_type_id: '1', - uid: 'de5e35d4-4c1f-49d7-9ef3-7d08e6b9c76a', - }, - ]) - ); - } else if (provider === 'azure') { - return res( - ctx.status(200), - ctx.json([ - { - id: '666', - name: 'azureSource1', - source_type_id: '3', - uid: '9f48059c-25db-47ac-81e8-dac7f8a76170', - }, - { - id: '667', - name: 'azureSource2', - source_type_id: '3', - uid: '73d5694c-7a28-417e-9fca-55840084f508', - }, - ]) - ); - } + return res(ctx.status(200), ctx.json(mockSourcesByProvider(provider))); } ), rest.get( @@ -54,14 +39,7 @@ export const handlers = [ (req, res, ctx) => { const { accountId } = req.params; if (accountId === '123') { - return res( - ctx.status(200), - ctx.json({ - aws: { - account_id: '123456789012', - }, - }) - ); + return res(ctx.status(200), ctx.json(mockAccountIdentity)); } else { return res(ctx.status(404)); } @@ -71,257 +49,39 @@ export const handlers = [ baseURL.concat(`${PROVISIONING_SOURCES_ENDPOINT}/:sourceId/upload_info`), (req, res, ctx) => { const { sourceId } = req.params; - if (sourceId === '666') { - return res( - ctx.status(200), - ctx.json({ - provider: 'azure', - azure: { - tenant_id: '2fd7c95c-0d63-4e81-b914-3fbd5288daf7', - subscription_id: 'dfb83267-e016-4429-ae6e-b0768bf36d65', - resource_groups: ['myResourceGroup1', 'testResourceGroup'], - }, - }) - ); - } else if (sourceId === '667') { - return res( - ctx.status(200), - ctx.json({ - provider: 'azure', - azure: { - tenant_id: '73d5694c-7a28-417e-9fca-55840084f508', - subscription_id: 'a66682d2-ce3e-46f7-a127-1d106c34e10c', - resource_groups: ['theirGroup2'], - }, - }) - ); + if (sourceId === '666' || sourceId === '667') { + return res(ctx.status(200), ctx.json(mockUploadInfo(sourceId))); } else { return res(ctx.status(404)); } } ), rest.post( - baseURL.concat('/api/content-sources/v1/rpms/names'), + baseURL.concat(`${CONTENT_SOURCES}/rpms/names`), async (req, res, ctx) => { const { search } = await req.json(); - if (search === 'test') { - return res( - ctx.status(200), - ctx.json([ - { - name: 'testPkg', - summary: 'test package summary', - version: '1.0', - }, - { - name: 'lib-test', - summary: 'lib-test package summary', - version: '1.0', - }, - { - name: 'test', - summary: 'summary for test package', - version: '1.0', - }, - ]) - ); - } else if (search === 'asdf') { - return res(ctx.status(200), ctx.json([])); - } + return res(ctx.status(200), ctx.json(mockSourcesPackagesResults(search))); } ), + rest.get(baseURL.concat(`${IMAGE_BUILDER_API}/packages`), (req, res, ctx) => { + const search = req.url.searchParams.get('search'); + return res(ctx.status(200), ctx.json(mockPackagesResults(search))); + }), rest.get( - baseURL.concat('/api/image-builder/v1/packages'), - (req, res, ctx) => { - const search = req.url.searchParams.get('search'); - if (search === 'test') { - return res( - ctx.status(200), - ctx.json({ - data: [ - { - name: 'testPkg', - summary: 'test package summary', - version: '1.0', - }, - { - name: 'lib-test', - summary: 'lib-test package summary', - version: '1.0', - }, - { - name: 'test', - summary: 'summary for test package', - version: '1.0', - }, - ], - meta: { - count: 3, - }, - }) - ); - } else if (search === 'asdf') { - return res(ctx.status(200), ctx.json({ data: [], meta: 0 })); - } - } - ), - rest.get( - baseURL.concat('/api/image-builder/v1/architectures/:distro'), + baseURL.concat(`${IMAGE_BUILDER_API}/architectures/:distro`), (req, res, ctx) => { const { distro } = req.params; - if (distro === 'rhel-92') { - return res( - ctx.status(200), - ctx.json([ - { - arch: 'x86_64', - repositories: [ - { - baseurl: - 'https://cdn.redhat.com/content/dist/rhel9/9.2/x86_64/baseos/os', - rhsm: true, - }, - ], - }, - { - arch: 'aarch64', - repositories: [ - { - baseurl: - 'https://cdn.redhat.com/content/dist/rhel9/9.2/aarch64/baseos/os', - rhsm: true, - }, - ], - }, - ]) - ); - } else if (distro === 'rhel-87') { - return res( - ctx.status(200), - ctx.json([ - { - arch: 'x86_64', - repositories: [ - { - baseurl: - 'https://cdn.redhat.com/content/dist/rhel8/8.7/x86_64/baseos/os', - rhsm: true, - }, - ], - }, - { - arch: 'aarch64', - repositories: [ - { - baseurl: - 'https://cdn.redhat.com/content/dist/rhel8/8.7/aarch64/baseos/os', - rhsm: true, - }, - ], - }, - ]) - ); - } else if (distro === 'centos-8') { - return res( - ctx.status(200), - ctx.json([ - { - arch: 'x86_64', - repositories: [ - { - baseurl: - 'http://mirror.centos.org/centos/8-stream/BaseOS/x86_64/os/', - rhsm: false, - }, - ], - }, - { - arch: 'aarch64', - repositories: [ - { - baseurl: - 'http://mirror.centos.org/centos/8-stream/BaseOS/aarch64/os/', - rhsm: false, - }, - ], - }, - ]) - ); - } + return res(ctx.status(200), ctx.json(mockArchitecturesByDistro(distro))); } ), rest.get(baseURL.concat(`${RHSM_API}/activation_keys`), (req, res, ctx) => { - return res( - ctx.status(200), - ctx.json({ - body: [ - { - id: 0, - name: 'name0', - }, - { - id: 1, - name: 'name1', - }, - ], - }) - ); + return res(ctx.status(200), ctx.json(mockActivationKeysResults())); }), rest.get( baseURL.concat(`${RHSM_API}/activation_keys/:key`), (req, res, ctx) => { const { key } = req.params; - if (key === 'name0') { - return res( - ctx.status(200), - ctx.json({ - body: { - additionalRepositories: [ - { - repositoryLabel: 'repository0', - }, - { - repositoryLabel: 'repository1', - }, - { - repositoryLabel: 'repository2', - }, - ], - id: '0', - name: 'name0', - releaseVersion: '', - role: '', - serviceLevel: 'Self-Support', - usage: 'Production', - }, - }) - ); - } else if (key === 'name1') { - return res( - ctx.status(200), - ctx.json({ - body: { - additionalRepositories: [ - { - repositoryLabel: 'repository3', - }, - { - repositoryLabel: 'repository4', - }, - { - repositoryLabel: 'repository5', - }, - ], - id: '1', - name: 'name1', - releaseVersion: '', - role: '', - serviceLevel: 'Premium', - usage: 'Production', - }, - }) - ); - } + return res(ctx.status(200), ctx.json(mockActivationKeyInformation(key))); } ), rest.get(