intermediate5 min readSeptember 21, 2025

FileMock Testing Scenarios & File Collections

FileMock Testing Scenarios & File Collections

Pre-built testing scenarios using FileMock-generated files. Copy these collections to accelerate your file upload testing across different use cases and requirements.

Complete Testing Scenarios

Scenario 1: E-commerce Product Images

Use Case: Testing product image uploads for online stores

FileMock Files to Generate:

# Valid Product Images
filemock-product-small-thumbnail-50kb.jpg    # 150x150px, 50KB
filemock-product-medium-display-200kb.jpg    # 800x600px, 200KB
filemock-product-large-zoom-800kb.jpg        # 1920x1440px, 800KB

# Edge Cases
filemock-product-minimum-size-5kb.jpg        # 100x100px, 5KB
filemock-product-oversized-15mb.jpg          # 4000x3000px, 15MB
filemock-product-wrong-ratio-100kb.jpg       # 1000x100px, 100KB

# Error Cases
filemock-product-corrupted-image.jpg         # Corrupted file structure
filemock-product-fake-extension.txt          # Text file with .jpg extension

Test Implementation:

describe("E-commerce Product Images", () => {
  const scenarios = [
    {
      file: "filemock-product-small-thumbnail-50kb.jpg",
      expected: "success",
      description: "Valid thumbnail size",
    },
    {
      file: "filemock-product-oversized-15mb.jpg",
      expected: "error",
      description: "File too large for product images",
    },
    {
      file: "filemock-product-corrupted-image.jpg",
      expected: "error",
      description: "Corrupted file should be rejected",
    },
  ];

  scenarios.forEach(({ file, expected, description }) => {
    test(`${description}: ${file}`, () => {
      const testFile = loadFileMockFile(file);
      const result = validateProductImage(testFile);
      expect(result.status).toBe(expected);
    });
  });
});

Scenario 2: Document Management System

Use Case: Testing document uploads for business applications

FileMock Files to Generate:

# Standard Documents
filemock-doc-small-report-100kb.pdf          # Business report
filemock-doc-medium-manual-500kb.pdf         # User manual
filemock-doc-large-presentation-2mb.pptx     # Presentation file

# Text Documents
filemock-doc-contract-50kb.docx              # Legal document
filemock-doc-spreadsheet-300kb.xlsx          # Financial data

# Security Tests
filemock-doc-password-protected.pdf          # Encrypted PDF
filemock-doc-macro-enabled.docm              # Document with macros
filemock-doc-suspicious-executable.pdf       # PDF with embedded scripts

# Performance Tests
filemock-doc-huge-archive-50mb.zip           # Large archive
filemock-doc-many-pages-10mb.pdf             # High page count PDF

Test Implementation:

describe("Document Management Upload", () => {
  test("accepts standard business documents", () => {
    const documents = [
      "filemock-doc-small-report-100kb.pdf",
      "filemock-doc-contract-50kb.docx",
      "filemock-doc-spreadsheet-300kb.xlsx",
    ];

    documents.forEach((filename) => {
      const doc = loadFileMockFile(filename);
      expect(validateBusinessDocument(doc)).toBe(true);
    });
  });

  test("rejects suspicious documents", () => {
    const suspiciousFiles = ["filemock-doc-macro-enabled.docm", "filemock-doc-suspicious-executable.pdf"];

    suspiciousFiles.forEach((filename) => {
      const doc = loadFileMockFile(filename);
      expect(validateBusinessDocument(doc)).toBe(false);
    });
  });
});

Scenario 3: Social Media Platform

Use Case: Testing user-generated content uploads

FileMock Files to Generate:

# Profile Pictures
filemock-social-avatar-square-100kb.jpg      # 400x400px profile image
filemock-social-avatar-tiny-20kb.jpg         # 150x150px mobile avatar

# Post Content
filemock-social-photo-standard-300kb.jpg     # 1080x1080px post image
filemock-social-photo-story-200kb.jpg        # 1080x1920px story format

# Video Content
filemock-social-video-short-5mb.mp4          # 15-second video
filemock-social-video-long-25mb.mp4          # 60-second video

# Edge Cases
filemock-social-animated-gif-2mb.gif         # Animated content
filemock-social-ultra-wide-500kb.jpg         # Panoramic image

# Violations
filemock-social-inappropriate-content.jpg    # Content policy testing
filemock-social-copyrighted-material.jpg     # Copyright detection

Scenario 4: Medical File Upload System

Use Case: Healthcare applications with strict compliance requirements

FileMock Files to Generate:

# Medical Images
filemock-medical-xray-dicom-1mb.dcm          # DICOM medical image
filemock-medical-scan-high-res-5mb.jpg       # High-resolution scan
filemock-medical-ultrasound-500kb.jpg        # Ultrasound image

# Patient Documents
filemock-medical-lab-results-200kb.pdf       # Laboratory results
filemock-medical-prescription-100kb.pdf      # Prescription document
filemock-medical-insurance-form-150kb.pdf    # Insurance documentation

# Compliance Tests
filemock-medical-phi-data-300kb.pdf          # Protected health information
filemock-medical-encrypted-secure-400kb.pdf  # Encrypted medical data

# Error Scenarios
filemock-medical-corrupted-scan.jpg          # Corrupted medical image
filemock-medical-wrong-format.txt            # Unsupported format

Performance Testing Collections

Load Testing File Set

Generate these files for performance testing:

# Concurrent Upload Testing
filemock-load-test-1mb-file-01.jpg           # \
filemock-load-test-1mb-file-02.jpg           #  |
filemock-load-test-1mb-file-03.jpg           #  |- 20 identical 1MB files
...                                          #  |  for concurrent testing
filemock-load-test-1mb-file-20.jpg           # /

# Memory Stress Testing
filemock-stress-small-10kb.jpg               # Baseline
filemock-stress-medium-1mb.jpg               # Standard
filemock-stress-large-10mb.jpg               # Large
filemock-stress-huge-50mb.jpg                # Memory pressure
filemock-stress-extreme-100mb.jpg            # Maximum size

Performance Test Implementation

describe('File Upload Performance', () => {
  test('handles concurrent uploads', async () => {
    const files = Array.from({ length: 20 }, (_, i) =>
      loadFileMockFile(`filemock-load-test-1mb-file-${i + 1:02d}.jpg`)
    );

    const startTime = performance.now();

    const uploadPromises = files.map(file => uploadFile(file));
    const results = await Promise.all(uploadPromises);

    const endTime = performance.now();
    const totalTime = endTime - startTime;

    expect(results.every(result => result.success)).toBe(true);
    expect(totalTime).toBeLessThan(30000); // 30 seconds max
  });

  test('memory usage stays within limits', async () => {
    const largeFiles = [
      'filemock-stress-large-10mb.jpg',
      'filemock-stress-huge-50mb.jpg',
      'filemock-stress-extreme-100mb.jpg'
    ];

    for (const filename of largeFiles) {
      const initialMemory = process.memoryUsage().heapUsed;

      const file = loadFileMockFile(filename);
      await processFile(file);

      const finalMemory = process.memoryUsage().heapUsed;
      const memoryIncrease = finalMemory - initialMemory;

      // Memory increase should not exceed 2x file size
      expect(memoryIncrease).toBeLessThan(file.size * 2);
    }
  });
});

Security Testing Collections

Malicious File Detection

Generate these files to test security measures:

# File Type Spoofing
filemock-security-script-disguised.jpg       # JavaScript file with image extension
filemock-security-exe-fake-image.png         # Executable disguised as image
filemock-security-php-shell.gif              # PHP script as GIF

# Content Injection
filemock-security-xss-in-metadata.jpg        # XSS in EXIF data
filemock-security-sql-in-filename.pdf        # SQL injection in filename
filemock-security-path-traversal.txt         # Path traversal attempt

# Malformed Files
filemock-security-zip-bomb.zip               # Compression bomb
filemock-security-billion-laughs.xml         # XML entity expansion
filemock-security-polyglot-file.pdf          # Multi-format file

Quick Copy Collections

Basic Upload Testing (5 files)

# Copy this list for basic file upload testing
filemock-basic-valid-image-500kb.jpg
filemock-basic-valid-document-200kb.pdf
filemock-basic-oversized-file-15mb.jpg
filemock-basic-empty-file-0kb.txt
filemock-basic-corrupted-image.jpg

Comprehensive Testing (15 files)

# Full test suite covering all scenarios
filemock-comprehensive-tiny-image-5kb.jpg
filemock-comprehensive-small-image-100kb.jpg
filemock-comprehensive-medium-image-500kb.jpg
filemock-comprehensive-large-image-2mb.jpg
filemock-comprehensive-huge-image-10mb.jpg
filemock-comprehensive-document-pdf-300kb.pdf
filemock-comprehensive-document-docx-400kb.docx
filemock-comprehensive-spreadsheet-500kb.xlsx
filemock-comprehensive-video-short-5mb.mp4
filemock-comprehensive-video-long-20mb.mp4
filemock-comprehensive-archive-compressed-1mb.zip
filemock-comprehensive-corrupted-file.jpg
filemock-comprehensive-wrong-extension.txt
filemock-comprehensive-empty-file.jpg
filemock-comprehensive-oversized-50mb.png

Implementation Helper

FileMock Collection Manager

// Helper class for managing FileMock test files
class FileMockCollection {
  constructor(basePath = "tests/fixtures/filemock-files") {
    this.basePath = basePath;
  }

  loadFile(filename) {
    const filePath = path.join(this.basePath, filename);
    const buffer = fs.readFileSync(filePath);
    const mimeType = this.getMimeType(filename);
    return new File([buffer], filename, { type: mimeType });
  }

  loadCollection(collectionName) {
    const collections = {
      basic: [
        "filemock-basic-valid-image-500kb.jpg",
        "filemock-basic-valid-document-200kb.pdf",
        "filemock-basic-oversized-file-15mb.jpg",
        "filemock-basic-empty-file-0kb.txt",
        "filemock-basic-corrupted-image.jpg",
      ],
      ecommerce: [
        "filemock-product-small-thumbnail-50kb.jpg",
        "filemock-product-medium-display-200kb.jpg",
        "filemock-product-large-zoom-800kb.jpg",
      ],
      security: [
        "filemock-security-script-disguised.jpg",
        "filemock-security-exe-fake-image.png",
        "filemock-security-xss-in-metadata.jpg",
      ],
    };

    return collections[collectionName]?.map((filename) => this.loadFile(filename)) || [];
  }

  getMimeType(filename) {
    const ext = filename.split(".").pop().toLowerCase();
    const mimeTypes = {
      jpg: "image/jpeg",
      jpeg: "image/jpeg",
      png: "image/png",
      gif: "image/gif",
      pdf: "application/pdf",
      docx: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
      xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
      mp4: "video/mp4",
      zip: "application/zip",
      txt: "text/plain",
    };
    return mimeTypes[ext] || "application/octet-stream";
  }
}

// Usage in tests
const fileMock = new FileMockCollection();

test("validates e-commerce product images", () => {
  const productImages = fileMock.loadCollection("ecommerce");
  productImages.forEach((image) => {
    expect(validateProductImage(image)).toBe(true);
  });
});

These curated collections provide comprehensive testing coverage using FileMock-generated files. Choose the scenarios that match your application's needs and generate the corresponding files using FileMock's web interface.

Related Resources

Apply This Knowledge

Put this resource into practice with FileMock. Generate the exact test files you need and implement robust testing strategies.

Try FileMock Now