StaticHelpersChecksumSpec
Overview
The StaticHelpersChecksumSpec file contains unit tests for the StaticHelpersChecksum class. These tests ensure the correctness and reliability of checksum calculations, validation, and conversion functions.
Tests
Synchronous Checksum Tests
should generate consistent checksums for the same data
- Purpose: Ensures that the same data produces the same checksum.
- Example:
const checksum1 = StaticHelpersChecksum.calculateChecksum(testData); const checksum2 = StaticHelpersChecksum.calculateChecksum(testData); expect(checksum1.equals(checksum2)).toBe(true);
should generate different checksums for different data
- Purpose: Ensures that different data produces different checksums.
- Example:
const checksum1 = StaticHelpersChecksum.calculateChecksum(testData); const checksum2 = StaticHelpersChecksum.calculateChecksum(differentData); expect(checksum1.equals(checksum2)).toBe(false);
should handle empty buffer correctly
- Purpose: Ensures that an empty buffer is handled correctly.
- Example:
const emptyBuffer = Buffer.from(''); const checksum = StaticHelpersChecksum.calculateChecksum(emptyBuffer); expect(checksum.length).toBe(StaticHelpersChecksum.Sha3ChecksumBufferLength);
should handle large data correctly
- Purpose: Ensures that large data is handled correctly.
- Example:
const largeBuffer = Buffer.alloc(100 * 1024); // 100KB largeBuffer.fill('A'); const checksum = StaticHelpersChecksum.calculateChecksum(largeBuffer); expect(checksum.length).toBe(StaticHelpersChecksum.Sha3ChecksumBufferLength);
should produce consistent results between sync and async methods for Buffer input
- Purpose: Ensures that synchronous and asynchronous methods produce consistent results for Buffer input.
- Example:
const syncChecksum = StaticHelpersChecksum.calculateChecksum(testData); const asyncChecksum = await StaticHelpersChecksum.calculateChecksumAsync(testData); expect(syncChecksum.equals(asyncChecksum)).toBe(true);
checksum string conversion
- Purpose: Ensures that checksum string conversion is correct.
- Example:
const originalChecksum = StaticHelpersChecksum.calculateChecksum(testData); const checksumString = StaticHelpersChecksum.checksumBufferToChecksumString(originalChecksum); const backToBuffer = StaticHelpersChecksum.checksumStringToChecksumBuffer(checksumString); expect(originalChecksum.equals(backToBuffer)).toBe(true);
validation
- Purpose: Ensures that tampered data is detected.
- Example:
const originalChecksum = StaticHelpersChecksum.calculateChecksum(testData); const tamperedData = Buffer.from('hello world!'); const isValid = StaticHelpersChecksum.validateChecksum( tamperedData, originalChecksum, ); expect(isValid).toBe(false);
Asynchronous Checksum Tests
should generate consistent checksums for the same data
- Purpose: Ensures that the same data produces the same checksum asynchronously.
- Example:
const checksum1 = await StaticHelpersChecksum.calculateChecksumAsync(testData); const checksum2 = await StaticHelpersChecksum.calculateChecksumAsync(testData); expect(checksum1.equals(checksum2)).toBe(true);
should generate different checksums for different data
- Purpose: Ensures that different data produces different checksums asynchronously.
- Example:
const checksum1 = await StaticHelpersChecksum.calculateChecksumAsync(testData); const checksum2 = await StaticHelpersChecksum.calculateChecksumAsync(differentData); expect(checksum1.equals(checksum2)).toBe(false);
should handle empty buffer correctly
- Purpose: Ensures that an empty buffer is handled correctly asynchronously.
- Example:
const emptyBuffer = Buffer.from(''); const checksum = await StaticHelpersChecksum.calculateChecksumAsync(emptyBuffer); expect(checksum.length).toBe(StaticHelpersChecksum.Sha3ChecksumBufferLength);
should handle large data correctly
- Purpose: Ensures that large data is handled correctly asynchronously.
- Example:
const largeBuffer = Buffer.alloc(100 * 1024); // 100KB largeBuffer.fill('A'); const checksum = await StaticHelpersChecksum.calculateChecksumAsync(largeBuffer); expect(checksum.length).toBe(StaticHelpersChecksum.Sha3ChecksumBufferLength);
should handle readable stream correctly
- Purpose: Ensures that a readable stream is handled correctly asynchronously.
- Example:
const stream = new Readable(); stream.push(testData); stream.push(null); const checksum = await StaticHelpersChecksum.calculateChecksumAsync(stream); expect(checksum.length).toBe(StaticHelpersChecksum.Sha3ChecksumBufferLength);
checksum string conversion
- Purpose: Ensures that checksum string conversion is correct asynchronously.
- Example:
const originalChecksum = await StaticHelpersChecksum.calculateChecksumAsync(testData); const checksumString = StaticHelpersChecksum.checksumBufferToChecksumString(originalChecksum); const backToBuffer = StaticHelpersChecksum.checksumStringToChecksumBuffer(checksumString); expect(originalChecksum.equals(backToBuffer)).toBe(true);
validation
- Purpose: Ensures that tampered data is detected asynchronously.
- Example:
const originalChecksum = await StaticHelpersChecksum.calculateChecksumAsync(testData); const tamperedData = Buffer.from('hello world!'); const isValid = await StaticHelpersChecksum.validateChecksumAsync( tamperedData, originalChecksum, ); expect(isValid).toBe(false);
Conclusion
The StaticHelpersChecksumSpec file provides comprehensive unit tests for the StaticHelpersChecksum class, ensuring the correctness and reliability of checksum calculations, validation, and conversion functions.