!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.23 GB of 57.97 GB (22.83%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     cookbook_httprequests_uispec.js (10.68 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';

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

    before(function () {
        helper.startServer();
    });

    after(function () {
        helper.stopServer();
    });

    describe('HTTP requests', function () {
        it('simple get request', function () {
            var injectNode = workspace.addNode('inject');
            var httpRequestNode = workspace.addNode('httpRequest');
            var htmlNode = workspace.addNode('html');
            var debugNode = workspace.addNode('debug');

            httpRequestNode.edit();
            httpRequestNode.setMethod('GET');
            httpRequestNode.setUrl(helper.url());
            httpRequestNode.clickOk();

            htmlNode.edit();
            htmlNode.setSelector('title');
            htmlNode.clickOk();

            injectNode.connect(httpRequestNode);
            httpRequestNode.connect(htmlNode);
            htmlNode.connect(debugNode);

            workspace.deploy();

            debugTab.open();
            injectNode.clickLeftButton();
            debugTab.getMessage().should.eql('"Node-RED"');
        });

        it('set the URL of a request', function () {
            var injectNode = workspace.addNode('inject');
            var changeNode = workspace.addNode('change');
            var httpRequestNode = workspace.addNode('httpRequest');
            var debugNode = workspace.addNode('debug');

            injectNode.edit();
            injectNode.setPayload('str', helper.url());
            injectNode.clickOk();

            changeNode.edit();
            changeNode.ruleSet('url', 'msg', 'payload', 'msg');
            changeNode.clickOk();

            injectNode.connect(changeNode);
            changeNode.connect(httpRequestNode);
            httpRequestNode.connect(debugNode);

            workspace.deploy();

            debugTab.open();
            injectNode.clickLeftButton();
            debugTab.getMessage().should.containEql('<title>Node-RED</title>');
        });

        it('set the URL of a request using a template', function () {
            var injectNode = workspace.addNode('inject');
            var changeNode = workspace.addNode('change');
            var httpRequestNode = workspace.addNode('httpRequest');
            var debugNode = workspace.addNode('debug');

            injectNode.edit();
            injectNode.setPayload('str', 'settings');
            injectNode.clickOk();

            changeNode.edit();
            changeNode.ruleSet('query', 'msg', 'payload', 'msg');
            changeNode.clickOk();

            httpRequestNode.edit();
            httpRequestNode.setUrl(helper.url() + '/{{{query}}}');
            httpRequestNode.clickOk();

            injectNode.connect(changeNode);
            changeNode.connect(httpRequestNode);
            httpRequestNode.connect(debugNode);

            workspace.deploy();

            debugTab.open();
            injectNode.clickLeftButton();
            debugTab.getMessage().should.containEql('httpNodeRoot');
        });

        it('set the query string parameters', function () {
            var injectNode = workspace.addNode('inject');
            var changeNode = workspace.addNode('change');
            var httpRequestNode = workspace.addNode('httpRequest');
            var debugNode = workspace.addNode('debug');

            injectNode.edit();
            injectNode.setPayload('str', 'Nick');
            injectNode.clickOk();

            changeNode.edit();
            changeNode.ruleSet('query', 'msg', 'payload', 'msg');
            changeNode.clickOk();

            httpRequestNode.edit();
            httpRequestNode.setUrl(helper.url() + httpNodeRoot + '/set-query?q={{{query}}}');
            httpRequestNode.clickOk();

            injectNode.connect(changeNode);
            changeNode.connect(httpRequestNode);
            httpRequestNode.connect(debugNode);

            // The code for confirmation starts from here.
            var httpInNode = workspace.addNode('httpIn', 0, 200);
            var templateNode = workspace.addNode('template');
            var httpResponseNode = workspace.addNode('httpResponse');

            httpInNode.edit();
            httpInNode.setMethod('get');
            httpInNode.setUrl('/set-query');
            httpInNode.clickOk();

            templateNode.edit();
            templateNode.setSyntax('mustache');
            templateNode.setFormat('handlebars');
            templateNode.setTemplate('Hello {{req.query.q}}');
            templateNode.clickOk();

            httpInNode.connect(templateNode);
            templateNode.connect(httpResponseNode);
            // The code for confirmation ends here.

            workspace.deploy();
            debugTab.open();
            injectNode.clickLeftButton();
            debugTab.getMessage().should.eql('"Hello Nick"');
        });

        it('get a parsed JSON response', function () {
            var injectNode = workspace.addNode('inject');
            var changeNodeSetPost = workspace.addNode('change');
            var httpRequestNode = workspace.addNode('httpRequest');
            var debugNode = workspace.addNode('debug');

            injectNode.edit();
            injectNode.setPayload('str', 'json-response');
            injectNode.clickOk();

            changeNodeSetPost.edit();
            changeNodeSetPost.ruleSet('post', 'msg', 'payload', 'msg');
            changeNodeSetPost.clickOk();

            httpRequestNode.edit();
            httpRequestNode.setMethod('GET');
            var url = helper.url() + httpNodeRoot + '/{{post}}';
            httpRequestNode.setUrl(url);
            httpRequestNode.setReturn('obj');
            httpRequestNode.clickOk();

            debugNode.edit();
            debugNode.setOutput('payload.title');
            debugNode.clickOk();

            injectNode.connect(changeNodeSetPost);
            changeNodeSetPost.connect(httpRequestNode);
            httpRequestNode.connect(debugNode);

            // The code for confirmation starts from here.
            var httpInNode = workspace.addNode('httpIn', 0, 200);
            var templateNode = workspace.addNode('template');
            var changeNodeSetHeader = workspace.addNode('change');
            var httpResponseNode = workspace.addNode('httpResponse');

            httpInNode.edit();
            httpInNode.setMethod('get');
            httpInNode.setUrl('/json-response');
            httpInNode.clickOk();

            templateNode.edit();
            templateNode.setSyntax('mustache');
            templateNode.setFormat('handlebars');
            templateNode.setTemplate('{"title": "Hello"}');
            templateNode.clickOk();

            changeNodeSetHeader.edit();
            changeNodeSetHeader.ruleSet('headers', 'msg', '{"content-type":"application/json"}', 'json');
            changeNodeSetHeader.clickOk();

            httpInNode.connect(templateNode);
            templateNode.connect(changeNodeSetHeader);
            changeNodeSetHeader.connect(httpResponseNode);
            // The code for confirmation ends here.

            workspace.deploy();
            debugTab.open();
            injectNode.clickLeftButton();
            debugTab.getMessage().should.eql('"Hello"');
        });

        it('get a binary response', function () {
            var injectNode = workspace.addNode('inject');
            var httpRequestNode = workspace.addNode('httpRequest');
            var debugNode = workspace.addNode('debug');

            httpRequestNode.edit();
            httpRequestNode.setMethod('GET');
            httpRequestNode.setUrl(helper.url() + '/settings');
            httpRequestNode.setReturn('bin');
            httpRequestNode.clickOk();

            injectNode.connect(httpRequestNode);
            httpRequestNode.connect(debugNode);

            workspace.deploy();

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

            debugTab.getMessage().should.eql(['123', '34', '104', '116', '116', '112', '78', '111', '100', '101']);
        });

        it('set a request header', function () {
            var injectNode = workspace.addNode('inject');
            var functionNode = workspace.addNode('function');
            var httpRequestNode = workspace.addNode('httpRequest');
            var debugNode = workspace.addNode('debug');

            functionNode.edit();
            functionNode.setFunction('msg.payload = "data to post";\nreturn msg;');
            functionNode.clickOk();

            httpRequestNode.edit();
            httpRequestNode.setMethod('POST');
            var url = helper.url() + httpNodeRoot + '/set-header';
            httpRequestNode.setUrl(url);
            httpRequestNode.clickOk();

            injectNode.connect(functionNode);
            functionNode.connect(httpRequestNode);
            httpRequestNode.connect(debugNode);

            // The code for confirmation starts from here.
            var httpInNode = workspace.addNode('httpIn', 0, 200);
            var templateNode = workspace.addNode('template');
            var httpResponseNode = workspace.addNode('httpResponse');

            httpInNode.edit();
            httpInNode.setMethod('post');
            httpInNode.setUrl('/set-header');
            httpInNode.clickOk();

            templateNode.edit();
            templateNode.setSyntax('mustache');
            templateNode.setFormat('handlebars');
            templateNode.setTemplate('{{ payload }}');
            templateNode.clickOk();

            httpInNode.connect(templateNode);
            templateNode.connect(httpResponseNode);
            // The code for confirmation ends here.

            workspace.deploy();
            debugTab.open();
            injectNode.clickLeftButton();
            debugTab.getMessage().should.eql('"data to post"');
        });
    });
});

:: 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.0044 ]--