Skip to main content
Glama

MCP QR Code Server

by jwalsh
qr-generator.test.ts4.9 kB
import { generateQRCode, validateQRCodeInput, QRCodeOptions } from '../qrcode'; describe('QR Code Generator', () => { describe('generateQRCode', () => { it('should generate a QR code for a simple URL', async () => { const url = 'https://example.com'; const result = await generateQRCode({ content: url, format: 'dataURL' }); expect(result).toBeTruthy(); expect(result.data).toBeTruthy(); expect(result.data.startsWith('data:image/png;base64,')).toBeTruthy(); }); it('should generate a QR code with custom size', async () => { const url = 'https://example.com'; const options: QRCodeOptions = { content: url, size: 300, format: 'dataURL' }; const result = await generateQRCode(options); expect(result).toBeTruthy(); expect(result.data).toBeTruthy(); }); it('should generate a QR code with different error correction levels', async () => { const url = 'https://example.com'; const levels: Array<'L' | 'M' | 'Q' | 'H'> = ['L', 'M', 'Q', 'H']; for (const level of levels) { const result = await generateQRCode({ content: url, errorCorrectionLevel: level, format: 'dataURL', }); expect(result).toBeTruthy(); expect(result.data).toBeTruthy(); } }); it('should throw an error for empty content', async () => { await expect(generateQRCode({ content: '' })).rejects.toThrow('Content is required'); }); it('should throw an error for invalid size', async () => { await expect(generateQRCode({ content: 'https://example.com', size: 50 })).rejects.toThrow( 'QR code size must be between 100 and 1000 pixels', ); await expect(generateQRCode({ content: 'https://example.com', size: 2000 })).rejects.toThrow( 'QR code size must be between 100 and 1000 pixels', ); }); }); describe('validateQRCodeInput', () => { it('should return true for non-empty string', () => { expect(validateQRCodeInput('https://example.com')).toBeTruthy(); expect(validateQRCodeInput('Hello, World!')).toBeTruthy(); }); it('should return false for empty or whitespace-only strings', () => { expect(validateQRCodeInput('')).toBeFalsy(); expect(validateQRCodeInput(' ')).toBeFalsy(); expect(validateQRCodeInput('\t\n')).toBeFalsy(); }); }); describe('MCP Resources', () => { describe('Sample QR Code Resource', () => { it('should generate a sample QR code', async () => { // Test direct generation of sample QR code const result = await generateQRCode({ content: 'https://github.com/jwalsh/mcp-server-qrcode', size: 200, errorCorrectionLevel: 'M', format: 'base64', }); expect(result).toBeTruthy(); expect(result.data).toBeTruthy(); expect(typeof result.data).toBe('string'); expect(result.data.length).toBeGreaterThan(0); }); }); describe('Custom QR Code Resource', () => { it('should generate a custom QR code with default parameters', async () => { const testContent = 'https://example.com'; // Test direct generation equivalent to resource const result = await generateQRCode({ content: testContent, size: 200, // Default size errorCorrectionLevel: 'M', // Default level format: 'base64', }); expect(result).toBeTruthy(); expect(result.data).toBeTruthy(); expect(typeof result.data).toBe('string'); expect(result.data.length).toBeGreaterThan(0); }); it('should generate a custom QR code with all parameters', async () => { const testContent = 'Custom QR Code'; const testSize = 300; const testLevel = 'H'; // Test direct generation equivalent to resource with all parameters const result = await generateQRCode({ content: testContent, size: testSize, errorCorrectionLevel: testLevel, format: 'base64', }); expect(result).toBeTruthy(); expect(result.data).toBeTruthy(); expect(typeof result.data).toBe('string'); expect(result.data.length).toBeGreaterThan(0); }); it('should handle special characters in content', async () => { const originalContent = 'Hello World & Special Characters: ?&='; // Test direct generation with special characters const result = await generateQRCode({ content: originalContent, size: 200, errorCorrectionLevel: 'M', format: 'base64', }); expect(result).toBeTruthy(); expect(result.data).toBeTruthy(); expect(typeof result.data).toBe('string'); expect(result.data.length).toBeGreaterThan(0); }); }); }); });

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jwalsh/mcp-server-qrcode'

If you have feedback or need assistance with the MCP directory API, please join our Discord server