0.0.4 • Published 4 years ago

mqtt-declarative-e2e-test v0.0.4

Weekly downloads
4
License
ISC
Repository
github
Last release
4 years ago

mqtt-declarative-e2e-test

mqtt-declarative-e2e-test allows to write tests for MQTT clients in an object definition style.

const e2eTestsSuite = {
  [`[TEST] Sensor E2E Tests`]: {
    tests: {
      "Publish test X": {
        tests: [
          {
            skip: false,
            name: "Can publish",
            options: () => {},
            url: () => `mqtt://${mqttUrl}`,
            verb: "publish",
            packet: () => ({
              topic: "testTopic",
              payload: "testPayload",
            }),
            timeout: 150,
            expect: async (packet) => {
              expect(packet.payload).to.be.equal(testPayload);
            },
            error: (err) => {
              throw err;
            },
          },
        ],
      },
      "Publish / subscribe test X": {
        tests: [
          {
            name: "Can subscribe and receive message",
            options: () => {},
            url: () => `mqtt://${mqttUrl}`,
            error: (err) => {
              throw err;
            },
            steps: [
              {
                verb: "subscribe",
                packet: () => ({
                  topic: `12345-in/1/#`,
                }),
                timeout: 200,
                expect: (message) => {
                  expect(message.topic).to.be.equal("12345-in/1/3303/0/1/5700");
                  expect(message.payload).to.be.equal("42");
                },
              },
              () => ({
                verb: "publish",
                packet: () => ({
                  topic: "12345-in/1/3303/0/1/5700",
                  payload: "42",
                }),
                timeout: 300,
              }),
            ],
          },
        ],
      },
    },
  },
};

It uses Mocha and exposes its BDD API.

Installation

npm install --save-dev mqtt-declarative-e2e-test

# or
npm i -D mqtt-declarative-e2e-test

Issues

Please share your feedback and report the encountered issues on the project's issues page.