!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/var/www/html/node-red/test/editor/specs/scenario/   drwxr-xr-x
Free 13.14 GB of 57.97 GB (22.67%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     cookbook_mqtt_uispec.js (6.96 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/**
 * Copyright JS Foundation and other contributors, http://js.foundation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 **/

var when = require('when');
var should = require("should");
var fs = require('fs-extra');

var helper = require("../../editor_helper");
var debugTab = require('../../pageobjects/editor/debugTab_page');
var workspace = require('../../pageobjects/editor/workspace_page');
var specUtil = require('../../pageobjects/util/spec_util_page');

var httpNodeRoot = "/api";

var mqttServer;
var mosca = require('mosca');
var moscaSettings = {
    port: parseInt(Math.random() * 16383 + 49152),
    persistence: {
        // Needs for retaining messages.
        factory: mosca.persistence.Memory
    }
};

// https://cookbook.nodered.org/
describe('cookbook', function () {
    beforeEach(function () {
        workspace.init();
    });

    before(function () {
        browser.call(function () {
            return new Promise(function (resolve, reject) {
                mqttServer = new mosca.Server(moscaSettings, function (err) {
                    if (err) {
                        reject(err);
                    } else {
                        resolve();
                    }
                });
            });
        });
        helper.startServer();
    });

    after(function () {
        browser.call(function () {
            return new Promise(function (resolve, reject) {
                mqttServer.close(function () {
                    resolve();
                });
            });
        });
        helper.stopServer();
    });

    describe('MQTT', function () {
        it('Add an MQTT broker to prepare for UI test', function () {
            var mqttOutNode = workspace.addNode("mqttOut");

            mqttOutNode.edit();
            mqttOutNode.mqttBrokerNode.edit();
            mqttOutNode.mqttBrokerNode.setServer("localhost", moscaSettings.port);
            mqttOutNode.mqttBrokerNode.clickOk();
            mqttOutNode.clickOk();

            workspace.deploy();
        });

        it('Connect to an MQTT broker', function () {
            var injectNode = workspace.addNode("inject");
            var mqttOutNode = workspace.addNode("mqttOut");

            var mqttInNode = workspace.addNode("mqttIn", 0, 100);
            var debugNode = workspace.addNode("debug");

            injectNode.edit();
            injectNode.setPayload("num", 22);
            injectNode.clickOk();

            mqttOutNode.edit();
            mqttOutNode.setTopic("sensors/livingroom/temp");
            mqttOutNode.clickOk();

            injectNode.connect(mqttOutNode);

            mqttInNode.edit();
            mqttInNode.setTopic("sensors/livingroom/temp");
            mqttInNode.setQoS("2");
            mqttInNode.clickOk();

            mqttInNode.connect(debugNode);

            workspace.deploy();

            debugTab.open();
            injectNode.clickLeftButton();
            debugTab.getMessage().should.eql('"22"');
        });

        // skip this case since it is same as other cases.
        it.skip('Publish messages to a topic');

        it('Set the topic of a published message', function () {
            var injectNode = workspace.addNode("inject");
            var mqttOutNode = workspace.addNode("mqttOut");

            injectNode.edit();
            injectNode.setPayload("num", 22);
            injectNode.setTopic("sensors/kitchen/temperature");
            injectNode.clickOk();

            mqttOutNode.edit();
            mqttOutNode.clickOk();

            injectNode.connect(mqttOutNode);

            // The code for confirmation starts from here.
            var mqttInNode = workspace.addNode("mqttIn", 0, 100);
            var debugNode = workspace.addNode("debug");

            mqttInNode.edit();
            mqttInNode.setTopic("sensors/kitchen/temperature");
            mqttInNode.clickOk();

            mqttInNode.connect(debugNode);
            // The code for confirmation ends here.

            workspace.deploy();

            debugTab.open();
            injectNode.clickLeftButton();
            debugTab.getMessage().should.eql('"22"');
        });

        it('Publish a retained message to a topic', function () {
            var injectNode = workspace.addNode("inject");
            var mqttOutNode = workspace.addNode("mqttOut");

            injectNode.edit();
            injectNode.setPayload("num", 22);
            injectNode.clickOk();

            mqttOutNode.edit();
            mqttOutNode.setTopic("sensors/livingroom/temp");
            mqttOutNode.setRetain("true");
            mqttOutNode.clickOk();

            injectNode.connect(mqttOutNode);

            workspace.deploy();
            debugTab.open();
            injectNode.clickLeftButton();

            // The code for confirmation starts from here.
            var mqttInNode = workspace.addNode("mqttIn", 0, 100);
            var debugNode = workspace.addNode("debug");

            mqttInNode.edit();
            mqttInNode.setTopic("sensors/livingroom/temp");
            mqttInNode.clickOk();

            mqttInNode.connect(debugNode);
            // The code for confirmation ends here.

            workspace.deploy();
            debugTab.open(true);
            debugTab.getMessage().should.eql('"22"');
        });

        // skip this case since it is same as other cases.
        it.skip('Subscribe to a topic');

        it('Receive a parsed JSON message', function () {
            var injectNode = workspace.addNode("inject");
            var mqttOutNode = workspace.addNode("mqttOut");

            var mqttInNode = workspace.addNode("mqttIn", 0, 100);
            var jsonNode = workspace.addNode("json");
            var debugNode = workspace.addNode("debug");

            injectNode.edit();
            injectNode.setPayload("json", '{"sensor_id": 1234, "temperature": 13 }');
            injectNode.clickOk();

            mqttOutNode.edit();
            mqttOutNode.setTopic("sensors/livingroom/temp");
            mqttOutNode.clickOk();

            injectNode.connect(mqttOutNode);

            mqttInNode.edit();
            mqttInNode.setTopic("sensors/#");
            mqttInNode.setQoS("2");
            mqttInNode.clickOk();

            jsonNode.edit();
            jsonNode.setProperty("payload");
            jsonNode.clickOk();

            mqttInNode.connect(jsonNode);
            jsonNode.connect(debugNode);

            workspace.deploy();

            debugTab.open();
            injectNode.clickLeftButton();
            debugTab.getMessage().should.eql(['1234', '13']);
        });
    });
});

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0046 ]--