Home Reference Source Test

test/specs/generic/network/message/BlockProofMessage.spec.js

describe('BlockProofMessage', () => {
    const proof = new BlockChain([GenesisConfig.GENESIS_BLOCK.toLight()]);

    it('is correctly constructed', () => {
        let msg1 = new BlockProofMessage(proof);

        expect(msg1.hasProof()).toBeTruthy();
        expect(msg1.proof).toBe(proof);

        msg1 = new BlockProofMessage();

        expect(msg1.hasProof()).toBeFalsy();
    });

    it('is serializable and unserializable', () => {
        let msg1 = new BlockProofMessage(proof);
        let msg2 = BlockProofMessage.unserialize(msg1.serialize());

        expect(msg2.hasProof()).toBeTruthy();
        expect(msg2.proof.length).toBe(msg1.proof.length);
        expect(msg2.proof.blocks.every((node, i) => msg1.proof.blocks[i].equals(node))).toBe(true);

        msg1 = new BlockProofMessage();
        msg2 = BlockProofMessage.unserialize(msg1.serialize());

        expect(msg2.hasProof()).toBeFalsy();
    });

    it('must have well defined arguments', () => {
        expect(() => new BlockProofMessage('123')).toThrow();
    });
});