testing-asset-storage-strategy.ts 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { Request } from 'express';
  2. import { Readable, Stream, Writable } from 'stream';
  3. import { AssetStorageStrategy } from '../../src/config/asset-storage-strategy/asset-storage-strategy';
  4. /**
  5. * A mock storage strategy which does not actually persist the assets anywhere.
  6. */
  7. export class TestingAssetStorageStrategy implements AssetStorageStrategy {
  8. readFileToBuffer(identifier: string): Promise<Buffer> {
  9. return Promise.resolve(Buffer.from('test'));
  10. }
  11. readFileToStream(identifier: string): Promise<Stream> {
  12. const s = new Readable();
  13. s.push(identifier);
  14. s.push(null);
  15. return Promise.resolve(s);
  16. }
  17. toAbsoluteUrl(reqest: Request, identifier: string): string {
  18. return `test-url/${identifier}`;
  19. }
  20. writeFileFromBuffer(fileName: string, data: Buffer): Promise<string> {
  21. return Promise.resolve(`test-assets/${fileName}`);
  22. }
  23. writeFileFromStream(fileName: string, data: Stream): Promise<string> {
  24. const writable = new Writable();
  25. writable._write = (chunk, encoding, done) => {
  26. done();
  27. };
  28. return new Promise<string>((resolve, reject) => {
  29. data.pipe(writable);
  30. writable.on('finish', () => resolve(`test-assets/${fileName}`));
  31. writable.on('error', reject);
  32. });
  33. }
  34. fileExists(fileName: string): Promise<boolean> {
  35. return Promise.resolve(false);
  36. }
  37. }