57 lines
1.6 KiB
TypeScript
57 lines
1.6 KiB
TypeScript
import {expect} from 'chai';
|
|
|
|
import {MessageV0} from '../../src/message';
|
|
import {PublicKey} from '../../src/publickey';
|
|
|
|
describe('MessageV0', () => {
|
|
it('serialize and deserialize', () => {
|
|
const messageV0 = new MessageV0({
|
|
header: {
|
|
numRequiredSignatures: 1,
|
|
numReadonlySignedAccounts: 0,
|
|
numReadonlyUnsignedAccounts: 1,
|
|
},
|
|
staticAccountKeys: [new PublicKey(1), new PublicKey(2)],
|
|
compiledInstructions: [
|
|
{
|
|
programIdIndex: 1,
|
|
accountKeyIndexes: [2, 3],
|
|
data: new Uint8Array(10),
|
|
},
|
|
],
|
|
recentBlockhash: new PublicKey(0).toString(),
|
|
addressTableLookups: [
|
|
{
|
|
accountKey: new PublicKey(3),
|
|
writableIndexes: [1],
|
|
readonlyIndexes: [],
|
|
},
|
|
{
|
|
accountKey: new PublicKey(4),
|
|
writableIndexes: [],
|
|
readonlyIndexes: [2],
|
|
},
|
|
],
|
|
});
|
|
const serializedMessage = messageV0.serialize();
|
|
const deserializedMessage = MessageV0.deserialize(serializedMessage);
|
|
expect(JSON.stringify(messageV0)).to.eql(
|
|
JSON.stringify(deserializedMessage),
|
|
);
|
|
});
|
|
|
|
it('deserialize failures', () => {
|
|
const bufferWithLegacyPrefix = new Uint8Array([1]);
|
|
expect(() => {
|
|
MessageV0.deserialize(bufferWithLegacyPrefix);
|
|
}).to.throw('Expected versioned message but received legacy message');
|
|
|
|
const bufferWithV1Prefix = new Uint8Array([(1 << 7) + 1]);
|
|
expect(() => {
|
|
MessageV0.deserialize(bufferWithV1Prefix);
|
|
}).to.throw(
|
|
'Expected versioned message with version 0 but found version 1',
|
|
);
|
|
});
|
|
});
|