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.
