2019-10-21 15:57:28 +03:00
|
|
|
const { BN } = require('web3-utils')
|
|
|
|
const { expect } = require('chai').use(require('bn-chai')(BN))
|
|
|
|
const { parseAMBMessage, strip0x, addTxHashToData } = require('../message')
|
|
|
|
|
|
|
|
describe('strip0x', () => {
|
|
|
|
it('should remove 0x from input', () => {
|
|
|
|
// Given
|
|
|
|
const input = '0x12345'
|
|
|
|
|
|
|
|
// When
|
|
|
|
const result = strip0x(input)
|
|
|
|
|
|
|
|
// Then
|
|
|
|
expect(result).to.be.equal('12345')
|
|
|
|
})
|
|
|
|
it('should not modify input if 0x is not present', () => {
|
|
|
|
// Given
|
|
|
|
const input = '12345'
|
|
|
|
|
|
|
|
// When
|
|
|
|
const result = strip0x(input)
|
|
|
|
|
|
|
|
// Then
|
|
|
|
expect(result).to.be.equal(input)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
describe('addTxHashToData', () => {
|
|
|
|
it('should add txHash to encoded data at position 2', () => {
|
|
|
|
// Given
|
|
|
|
const msgSender = '0x003667154bb32e42bb9e1e6532f19d187fa0082e'
|
|
|
|
const msgExecutor = '0xf4bef13f9f4f2b203faf0c3cbbaabe1afe056955'
|
|
|
|
const msgGasLimit = '000000000000000000000000000000000000000000000000000000005b877705'
|
|
|
|
const msgDataType = '00'
|
|
|
|
const msgData = '0xb1591967aed668a4b27645ff40c444892d91bf5951b382995d4d4f6ee3a2ce03'
|
|
|
|
const encodedData = `0x${strip0x(msgSender)}${strip0x(msgExecutor)}${msgGasLimit}${msgDataType}${strip0x(msgData)}`
|
|
|
|
|
|
|
|
const transactionHash = '0xbdceda9d8c94838aca10c687da1411a07b1390e88239c0638cb9cc264219cc10'
|
|
|
|
const message = `0x${strip0x(transactionHash)}${strip0x(msgSender)}${strip0x(
|
|
|
|
msgExecutor
|
|
|
|
)}${msgGasLimit}${msgDataType}${strip0x(msgData)}`
|
|
|
|
|
|
|
|
// When
|
|
|
|
const result = addTxHashToData({ encodedData, transactionHash })
|
|
|
|
|
|
|
|
// Then
|
|
|
|
expect(result).to.be.equal(message)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
describe('parseAMBMessage', () => {
|
|
|
|
it('should parse data type 00', () => {
|
|
|
|
const msgSender = '0x003667154bb32e42bb9e1e6532f19d187fa0082e'
|
|
|
|
const msgExecutor = '0xf4bef13f9f4f2b203faf0c3cbbaabe1afe056955'
|
2020-05-21 23:29:56 +03:00
|
|
|
const msgId = '0xbdceda9d8c94838aca10c687da1411a07b1390e88239c0638cb9cc264219cc10'
|
2019-10-21 15:57:28 +03:00
|
|
|
const msgGasLimit = '000000000000000000000000000000000000000000000000000000005b877705'
|
|
|
|
const msgDataType = '00'
|
|
|
|
const msgData = '0xb1591967aed668a4b27645ff40c444892d91bf5951b382995d4d4f6ee3a2ce03'
|
2020-05-21 23:29:56 +03:00
|
|
|
const message = `0x${strip0x(msgId)}${strip0x(msgSender)}${strip0x(
|
2019-10-21 15:57:28 +03:00
|
|
|
msgExecutor
|
|
|
|
)}${msgGasLimit}${msgDataType}${strip0x(msgData)}`
|
|
|
|
|
|
|
|
// when
|
2020-05-21 23:29:56 +03:00
|
|
|
const { sender, executor, messageId } = parseAMBMessage(message)
|
2019-10-21 15:57:28 +03:00
|
|
|
|
|
|
|
// then
|
|
|
|
expect(sender).to.be.equal(msgSender)
|
|
|
|
expect(executor).to.be.equal(msgExecutor)
|
2020-05-21 23:29:56 +03:00
|
|
|
expect(messageId).to.be.equal(msgId)
|
2019-10-21 15:57:28 +03:00
|
|
|
})
|
|
|
|
})
|