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/node_modules/node-red-admin/test/lib/commands/ drwxr-xr-x | |
| Viewing file: Select action/file-type: /**
* Copyright OpenJS Foundation and other contributors, https://openjsf.org/
*
* 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 command = require("../../../lib/commands/login");
var prompt = require("../../../lib/prompt");
var should = require("should");
var sinon = require("sinon");
var request = require("../../../lib/request");
var config = require("../../../lib/config");
var result = require("./result_helper");
describe("commands/list", function() {
beforeEach(function() {
sinon.stub(config,"tokens").callsFake(function(token) {});
sinon.stub(prompt,"read").callsFake(function(opts,callback) {
if (/Username/.test(opts.prompt)) {
callback(null,"username");
} else if (/Password/.test(opts.prompt)) {
callback(null,"password");
}
});
});
afterEach(function() {
config.tokens.restore();
prompt.read.restore();
result.reset();
if (request.request.restore) {
request.request.restore();
}
});
it('logs in user', function(done) {
var requestStub = sinon.stub(request,"request");
requestStub.onCall(0).returns(Promise.resolve({type:"credentials"}));
requestStub.onCall(1).returns(Promise.resolve({access_token:"12345"}));
command({},result).then(() => {
requestStub.calledTwice.should.be.true();
requestStub.args[0][0].should.eql("/auth/login");
requestStub.args[1][0].should.eql("/auth/token");
requestStub.args[1][1].should.eql({
method:"POST",
data:{"client_id":"node-red-admin","grant_type":"password","scope":"*","username":"username","password":"password"}
});
config.tokens.calledTwice.should.be.true();
should.not.exist(config.tokens.args[0][0]);
config.tokens.args[1][0].should.eql({access_token:"12345"});
/Logged in/.test(result.log.args[0][0]).should.be.true();
done();
}).catch(done);
});
it('handles unsupported login type', function(done) {
var requestStub = sinon.stub(request,"request");
requestStub.onCall(0).returns(Promise.resolve({type:"unknown"}));
requestStub.onCall(1).returns(Promise.resolve({access_token:"12345"}));
command({},result).then(() => {
done("Should not have resolved with unsupported login type")
}).catch(err => {
/Unsupported login type/.test(err).should.be.true();
done();
}).catch(done);
});
it('handles no authentication', function(done) {
var requestStub = sinon.stub(request,"request");
requestStub.onCall(0).returns(Promise.resolve({}));
command({},result).then(() => {
requestStub.calledOnce.should.be.true();
requestStub.args[0][0].should.eql("/auth/login");
result.log.called.should.be.false();
result.warn.called.should.be.false();
done();
}).catch(done);
});
it('handles login failure', function(done) {
var requestStub = sinon.stub(request,"request");
requestStub.onCall(0).returns(Promise.resolve({type:"credentials"}));
requestStub.onCall(1).returns(Promise.reject());
command({},result).then(() => {
done("Should not have resolved with login failure");
}).catch(err => {
config.tokens.calledOnce.should.be.true();
should.not.exist(config.tokens.args[0][0]);
/Login failed/.test(err).should.be.true();
done();
}).catch(done);
});
it('handles unexpected error', function(done) {
var requestStub = sinon.stub(request,"request");
requestStub.onCall(0).returns(Promise.reject("fail"));
command({},result).then(() => {
done("Should not have resolved with login failure");
}).catch(err => {
config.tokens.calledOnce.should.be.true();
should.not.exist(config.tokens.args[0][0]);
/fail/.test(err).should.be.true();
done();
}).catch(done);
});
});
|
:: Command execute :: | |
--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0077 ]-- |