@ethersana/ant-js
Version:
Javascript client for Ant
30 lines (23 loc) • 1.17 kB
text/typescript
import { assertBytes } from '../../../src/utils/bytes'
import { makeContentAddressedChunk, assertValidChunkData } from '../../../src/chunk/cac'
import { serializeBytes } from '../../../src/chunk/serialize'
import { makeSpan } from '../../../src/chunk/span'
import { hexToBytes, bytesToHex } from '../../../src/utils/hex'
describe('cac', () => {
const payload = new Uint8Array([1, 2, 3])
const contentHash = 'ca6357a08e317d15ec560fef34e4c45f8f19f01c372aa70f1da72bfa7f1a4338'
test('content address chunk creation', () => {
const cac = makeContentAddressedChunk(payload)
const address = cac.address()
expect(bytesToHex(address)).toEqual(contentHash)
})
test('content address chunk verification', () => {
const validAddress = hexToBytes(contentHash)
assertBytes(validAddress, 32)
const invalidAddress = hexToBytes('ca6357a08e317d15ec560fef34e4c45f8f19f01c372aa70f1da72bfa7f1a4335')
assertBytes(invalidAddress, 32)
const data = serializeBytes(makeSpan(payload.length), payload)
expect(() => assertValidChunkData(data, validAddress)).not.toThrow()
expect(() => assertValidChunkData(data, invalidAddress)).toThrow()
})
})