builtins.spec.ts 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // SPDX-License-Identifier: Apache-2.0
  2. import expect from 'expect';
  3. import { loadContractAndCallConstructor } from './setup';
  4. import { AccountMeta, SYSVAR_CLOCK_PUBKEY, PublicKey } from '@solana/web3.js';
  5. describe('Testing builtins', function () {
  6. this.timeout(500000);
  7. it('builtins', async function () {
  8. let { program, provider, storage } = await loadContractAndCallConstructor('builtins');
  9. let res = await program.methods.hashRipemd160(Buffer.from('Call me Ishmael.', 'utf8')).view();
  10. expect(Buffer.from(res).toString("hex")).toBe("0c8b641c461e3c7abbdabd7f12a8905ee480dadf");
  11. res = await program.methods.hashSha256(Buffer.from('Call me Ishmael.', 'utf8')).view();
  12. expect(Buffer.from(res).toString("hex")).toBe("458f3ceeeec730139693560ecf66c9c22d9c7bc7dcb0599e8e10b667dfeac043");
  13. res = await program.methods.hashKecccak256(Buffer.from('Call me Ishmael.', 'utf8')).view();
  14. expect(Buffer.from(res).toString("hex")).toBe("823ad8e1757b879aac338f9a18542928c668e479b37e4a56f024016215c5928c");
  15. let addrs = new PublicKey("BPFLoaderUpgradeab1e11111111111111111111111");
  16. const expected_pubkey = new PublicKey("BwqrghZA2htAcqq8dzP1WDAhTXYTYWj7CHxF5j7TDBAe");
  17. res = await program.methods.pda(Buffer.from([]), Buffer.from([1]), addrs).view();
  18. expect(res).toEqual(expected_pubkey);
  19. res = await program.methods.pdaWithBump(Buffer.from([]), Buffer.from([1]), addrs).view();
  20. expect(res['return0']).toEqual(new PublicKey("13wtuiEKKtsFgwPmwwtgnELMyK7E8s1bcA8wJi6hFn5A"));
  21. expect(res['return1']).toEqual([0xfe]);
  22. res = await program.methods.mrNow()
  23. .view();
  24. let now = Math.floor(+new Date() / 1000);
  25. let ts = Number(res);
  26. expect(ts).toBeLessThanOrEqual(now);
  27. expect(ts).toBeGreaterThan(now - 120);
  28. res = await program.methods.mrSlot()
  29. .view();
  30. let sol_slot = Number(res);
  31. let rpc_slot = await provider.connection.getSlot();
  32. expect(sol_slot).toBeGreaterThan(rpc_slot - 10);
  33. expect(sol_slot).toBeLessThan(rpc_slot + 10);
  34. });
  35. });