diff --git a/plugins/techdocs-node/src/stages/publish/awsS3.test.ts b/plugins/techdocs-node/src/stages/publish/awsS3.test.ts index f3b2162a6b..9a9c9b4542 100644 --- a/plugins/techdocs-node/src/stages/publish/awsS3.test.ts +++ b/plugins/techdocs-node/src/stages/publish/awsS3.test.ts @@ -35,16 +35,17 @@ import { import { mockClient, AwsClientStub } from 'aws-sdk-client-mock'; import express from 'express'; import request from 'supertest'; -import mockFs from 'mock-fs'; import path from 'path'; import fs from 'fs-extra'; import { AwsS3Publish } from './awsS3'; -import { storageRootDir } from '../../testUtils/StorageFilesMock'; import { Readable } from 'stream'; +import { createMockDirectory } from '@backstage/backend-test-utils'; const env = process.env; let s3Mock: AwsClientStub; +const mockDir = createMockDirectory(); + function getMockCredentialProvider(): Promise { return Promise.resolve({ sdkCredentialProvider: async () => { @@ -66,7 +67,7 @@ const getEntityRootDir = (entity: Entity) => { metadata: { namespace, name }, } = entity; - return path.join(storageRootDir, namespace || DEFAULT_NAMESPACE, kind, name); + return mockDir.resolve(namespace || DEFAULT_NAMESPACE, kind, name); }; class ErrorReadable extends Readable { @@ -182,27 +183,23 @@ describe('AwsS3Publish', () => { getMockCredentialProvider(), ); - mockFs({ + mockDir.setContent({ [directory]: files, }); - const { StorageFilesMock } = require('../../testUtils/StorageFilesMock'); - const storage = new StorageFilesMock(); - storage.emptyFiles(); - s3Mock = mockClient(S3Client); s3Mock.on(HeadObjectCommand).callsFake(input => { - if (!storage.fileExists(input.Key)) { + if (!fs.pathExistsSync(mockDir.resolve(input.Key))) { throw new Error('File does not exist'); } return {}; }); s3Mock.on(GetObjectCommand).callsFake(input => { - if (storage.fileExists(input.Key)) { + if (fs.pathExistsSync(mockDir.resolve(input.Key))) { return { - Body: Readable.from(storage.readFile(input.Key)), + Body: Readable.from(fs.readFileSync(mockDir.resolve(input.Key))), }; } @@ -237,12 +234,11 @@ describe('AwsS3Publish', () => { s3Mock.on(UploadPartCommand).rejects(); s3Mock.on(PutObjectCommand).callsFake(input => { - storage.writeFile(input.Key, input.Body); + mockDir.addContent({ [input.Key]: input.Body }); }); }); afterEach(() => { - mockFs.restore(); process.env = env; }); @@ -378,8 +374,7 @@ describe('AwsS3Publish', () => { }); it('should fail to publish a directory', async () => { - const wrongPathToGeneratedDirectory = path.join( - storageRootDir, + const wrongPathToGeneratedDirectory = mockDir.resolve( 'wrong', 'path', 'to', @@ -393,11 +388,9 @@ describe('AwsS3Publish', () => { directory: wrongPathToGeneratedDirectory, }); - await expect(fails).rejects.toMatchObject({ - message: expect.stringContaining( - 'Unable to upload file(s) to AWS S3. Error: Failed to read template directory: ENOENT, no such file or directory', - ), - }); + await expect(fails).rejects.toThrow( + `Unable to upload file(s) to AWS S3. Error: Failed to read template directory: ENOENT: no such file or directory, scandir '${wrongPathToGeneratedDirectory}'`, + ); await expect(fails).rejects.toMatchObject({ message: expect.stringContaining(wrongPathToGeneratedDirectory),