| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- // SPDX-License-Identifier: Apache-2.0
- import expect from 'expect';
- import { createConnection, deploy, aliceKeypair, query, weight, transaction } from './index';
- import { ContractPromise } from '@polkadot/api-contract';
- import { ApiPromise } from '@polkadot/api';
- import { KeyringPair } from '@polkadot/keyring/types';
- describe('Deploy the caller_is_root contract and test it', () => {
- let conn: ApiPromise;
- let contract: ContractPromise;
- let alice: KeyringPair;
- before(async function () {
- conn = await createConnection();
- alice = aliceKeypair();
- const instance = await deploy(conn, alice, 'CallerIsRoot.contract', 0n);
- contract = new ContractPromise(conn, instance.abi, instance.address);
- });
- after(async function () {
- await conn.disconnect();
- });
- it('is correct on a non-root caller', async function () {
- // Without sudo the caller should not be root
- const gasLimit = await weight(conn, contract, "covert");
- await transaction(contract.tx.covert({ gasLimit }), alice);
- // Calling `covert` as non-root sets the balance to 1
- const balance = await query(conn, alice, contract, "balance", []);
- expect(BigInt(balance.output?.toString() ?? "")).toStrictEqual(1n);
- });
- it('is correct on a root caller', async function () {
- // Alice has sudo rights on --dev nodes
- const gasLimit = await weight(conn, contract, "covert");
- await transaction(conn.tx.sudo.sudo(contract.tx.covert({ gasLimit })), alice);
- // Calling `covert` as root sets the balance to 0xdeadbeef
- const balance = await query(conn, alice, contract, "balance", []);
- expect(BigInt(balance.output?.toString() ?? "")).toStrictEqual(0xdeadbeefn);
- });
- });
|