Files
pezkuwi-ui/packages/react-qr/src/util.spec.ts
T
pezkuwichain d1cd13072f Rebrand: polkadot → pezkuwi
- Updated all package references
- Fixed react-identicon and related packages
- Version 3.16.8
2026-01-07 02:35:24 +03:00

101 lines
3.0 KiB
TypeScript

// Copyright 2017-2025 @pezkuwi/react-qr authors & contributors
// SPDX-License-Identifier: Apache-2.0
/// <reference types="@pezkuwi/dev-test/globals.d.ts" />
import { u8aConcat, u8aToHex, u8aToString } from '@pezkuwi/util';
import { randomAsU8a } from '@pezkuwi/util-crypto';
import { createAddressPayload, createFrames, createSignPayload, decodeString, encodeNumber, encodeString } from './util.js';
describe('util', (): void => {
describe('Uint8Array <-> string', (): void => {
let u8a: Uint8Array;
let str: string;
beforeEach((): void => {
u8a = new Uint8Array(256);
for (let i = 0; i < 256; i++) {
u8a[i] = i;
}
u8a = u8aConcat(u8a, randomAsU8a(4096));
str = decodeString(u8a);
});
it('decodes into string', (): void => {
expect(str).toHaveLength(u8a.length);
});
it('have encode <-> decode', (): void => {
expect(encodeString(str)).toEqual(u8a);
});
});
describe('encodeNumber', (): void => {
it('encodes 1 correctly', (): void => {
expect(
encodeNumber(1)
).toEqual(new Uint8Array([0, 1]));
});
it('encodes 257 correctly', (): void => {
expect(
encodeNumber(257)
).toEqual(new Uint8Array([1, 1]));
});
});
describe('createAddressPayload', (): void => {
it('encodes an address properly', (): void => {
expect(
u8aToString(
createAddressPayload('5HbgaJEuVN5qGbkhgtuDQANivSWwHXWsC2erP1SQUXgciTVq', '0x')
)
).toEqual(
'substrate:' +
'5HbgaJEuVN5qGbkhgtuDQANivSWwHXWsC2erP1SQUXgciTVq:' +
'0x'
);
});
});
describe('createSignPayload', (): void => {
it('encodes a payload properly', (): void => {
expect(
u8aToHex(
createSignPayload('5HbgaJEuVN5qGbkhgtuDQANivSWwHXWsC2erP1SQUXgciTVq', 3, 'THIS IS SPARTA!', '0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe')
)
).toEqual(
'0x' + // prefix
'53' + // substrate
'01' + // sr25519
'03' + // sign tx
'f4cd755672a8f9542ca9da4fbf2182e79135d94304002e6a09ffc96fef6e6c4c' + // publickey
'544849532049532053504152544121' + // THIS IS SPARTA!
'b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe' // genesisHash
);
});
});
describe('createFrames', (): void => {
it('encodes frames properly', (): void => {
expect(
createFrames(
createSignPayload('5HbgaJEuVN5qGbkhgtuDQANivSWwHXWsC2erP1SQUXgciTVq', 0, '0x12345678', '0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe')
).map((u8a): string => u8aToHex(u8a))
).toEqual([
'0x' +
'00' + // multipart
'0001' + // length
'0000' + // index
'530100' + // payload info, substrate + sr25519 + signtx
'f4cd755672a8f9542ca9da4fbf2182e79135d94304002e6a09ffc96fef6e6c4c' + // publicKey
'12345678' + // data
'b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe' // genesisHash
]);
});
});
});