|
| 1 | +/* |
| 2 | +# Copyright IBM Corp. All Rights Reserved. |
| 3 | +# |
| 4 | +# SPDX-License-Identifier: Apache-2.0 |
| 5 | +*/ |
| 6 | +'use strict'; |
| 7 | + |
| 8 | +const chai = require('chai'); |
| 9 | +chai.use(require('chai-as-promised')); |
| 10 | +const expect = chai.expect; |
| 11 | +const utils = require('./utils'); |
| 12 | +const {LONG_STEP} = utils.TIMEOUTS; |
| 13 | + |
| 14 | +describe('Chaincode events', async function () { |
| 15 | + const suite = 'events'; |
| 16 | + |
| 17 | + before(async function () { |
| 18 | + this.timeout(LONG_STEP); |
| 19 | + |
| 20 | + return utils.installAndInstantiate(suite, 'org.mynamespace.events:instantiate'); |
| 21 | + }); |
| 22 | + |
| 23 | + it('should publish an event', async function () { |
| 24 | + this.timeout(LONG_STEP); |
| 25 | + |
| 26 | + const date = new Date().toISOString(); |
| 27 | + await utils.invoke(suite, 'org.mynamespace.events:emit', [`my event data @ ${date}`]); |
| 28 | + const block = await utils.getLastBlock(); |
| 29 | + expect(block.data.data.length).to.equal(1); // only one transaction |
| 30 | + const transaction = block.data.data[0]; |
| 31 | + const actions = transaction.payload.data.actions; |
| 32 | + expect(actions.length).to.equal(1); // only one action |
| 33 | + const action = actions[0]; |
| 34 | + const proposalResponsePayload = action.payload.action.proposal_response_payload; |
| 35 | + const events = proposalResponsePayload.extension.events; |
| 36 | + expect(events.chaincode_id).to.equal('events'); |
| 37 | + expect(events.event_name).to.equal('myevent'); |
| 38 | + const payload = Buffer.from(events.payload, 'base64').toString(); |
| 39 | + expect(payload).to.equal(`my event data @ ${date}`); |
| 40 | + }); |
| 41 | + |
| 42 | +}); |
0 commit comments