diff --git a/src/transactionsFactories/tokenManagementTransactionIntentsFactory.spec.ts b/src/transactionsFactories/tokenManagementTransactionIntentsFactory.spec.ts index aa5b7263..dd39f03e 100644 --- a/src/transactionsFactories/tokenManagementTransactionIntentsFactory.spec.ts +++ b/src/transactionsFactories/tokenManagementTransactionIntentsFactory.spec.ts @@ -133,7 +133,48 @@ describe("test token management transactions factory", () => { assert.deepEqual(transaction.value, config.issueCost); }); - it("should create 'Transaction' for setting spcial role on non-fungible token", () => { + it("should create 'Transaction' for setting special role on fungible token", () => { + const transaction = tokenManagementFactory.createTransactionForSettingSpecialRoleOnFungibleToken({ + sender: frank.address, + user: grace.address, + tokenIdentifier: "FRANK-11ce3e", + addRoleLocalMint: true, + addRoleLocalBurn: false, + }); + + assert.deepEqual( + transaction.data, + Buffer.from( + "setSpecialRole@4652414e4b2d313163653365@1e8a8b6b49de5b7be10aaa158a5a6a4abb4b56cc08f524bb5e6cd5f211ad3e13@45534454526f6c654c6f63616c4d696e74", + ), + ); + assert.equal(transaction.sender, frank.address.toString()); + assert.equal(transaction.receiver, ESDT_CONTRACT_ADDRESS); + assert.equal(transaction.value, 0n); + }); + + it("should create 'Transaction' for setting all special roles on fungible token", () => { + const transaction = tokenManagementFactory.createTransactionForSettingSpecialRoleOnFungibleToken({ + sender: frank.address, + user: grace.address, + tokenIdentifier: "FRANK-11ce3e", + addRoleLocalMint: true, + addRoleLocalBurn: true, + addRoleESDTTransferRole: true, + }); + + assert.deepEqual( + transaction.data, + Buffer.from( + "setSpecialRole@4652414e4b2d313163653365@1e8a8b6b49de5b7be10aaa158a5a6a4abb4b56cc08f524bb5e6cd5f211ad3e13@45534454526f6c654c6f63616c4d696e74@45534454526f6c654c6f63616c4275726e@455344545472616e73666572526f6c65", + ), + ); + assert.equal(transaction.sender, frank.address.toString()); + assert.equal(transaction.receiver, ESDT_CONTRACT_ADDRESS); + assert.equal(transaction.value, 0n); + }); + + it("should create 'Transaction' for setting special role on non-fungible token", () => { const transaction = tokenManagementFactory.createTransactionForSettingSpecialRoleOnNonFungibleToken({ sender: frank.address, user: grace.address, diff --git a/src/transactionsFactories/tokenManagementTransactionsFactory.ts b/src/transactionsFactories/tokenManagementTransactionsFactory.ts index 86662c00..de6afde5 100644 --- a/src/transactionsFactories/tokenManagementTransactionsFactory.ts +++ b/src/transactionsFactories/tokenManagementTransactionsFactory.ts @@ -299,11 +299,13 @@ export class TokenManagementTransactionsFactory { tokenIdentifier: string; addRoleLocalMint: boolean; addRoleLocalBurn: boolean; + addRoleESDTTransferRole?: boolean; }): Transaction { const args = [new StringValue(options.tokenIdentifier), new AddressValue(options.user)]; options.addRoleLocalMint ? args.push(new StringValue("ESDTRoleLocalMint")) : 0; options.addRoleLocalBurn ? args.push(new StringValue("ESDTRoleLocalBurn")) : 0; + options.addRoleESDTTransferRole ? args.push(new StringValue("ESDTTransferRole")) : 0; const dataParts = ["setSpecialRole", ...this.argSerializer.valuesToStrings(args)];