mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Add oauth grant
This commit is contained in:
0
test/red/api/auth/clients_spec.js
Normal file
0
test/red/api/auth/clients_spec.js
Normal file
106
test/red/api/auth/index_spec.js
Normal file
106
test/red/api/auth/index_spec.js
Normal file
@@ -0,0 +1,106 @@
|
||||
/**
|
||||
* Copyright 2014 IBM Corp.
|
||||
*
|
||||
* 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 should = require("should");
|
||||
var sinon = require("sinon");
|
||||
var request = require('supertest');
|
||||
var express = require('express');
|
||||
|
||||
var passport = require("passport");
|
||||
|
||||
var auth = require("../../../../red/api/auth");
|
||||
|
||||
var settings = require("../../../../red/settings");
|
||||
|
||||
|
||||
describe("api auth middleware",function() {
|
||||
describe("authenticate",function() {
|
||||
it("does not trigger on auth paths", sinon.test(function(done) {
|
||||
this.stub(passport,"authenticate",function() {
|
||||
return function() {
|
||||
settings.reset();
|
||||
done(new Error("authentication not applied to auth path"));
|
||||
}
|
||||
});
|
||||
settings.init({httpAdminAuth:{}});
|
||||
var req = {
|
||||
originalUrl: "/auth/token"
|
||||
};
|
||||
auth.authenticate(req,null,function() {
|
||||
settings.reset();
|
||||
done();
|
||||
});
|
||||
|
||||
}));
|
||||
it("does trigger on non-auth paths", sinon.test(function(done) {
|
||||
this.stub(passport,"authenticate",function() {
|
||||
return function() {
|
||||
settings.reset();
|
||||
done();
|
||||
}
|
||||
});
|
||||
settings.init({httpAdminAuth:{}});
|
||||
var req = {
|
||||
originalUrl: "/"
|
||||
};
|
||||
auth.authenticate(req,null,function() {
|
||||
settings.reset();
|
||||
done(new Error("authentication applied to non-auth path"));
|
||||
});
|
||||
|
||||
}));
|
||||
it("does not trigger on non-auth paths with auth disabled", sinon.test(function(done) {
|
||||
this.stub(passport,"authenticate",function() {
|
||||
return function() {
|
||||
settings.reset();
|
||||
done(new Error("authentication applied when disabled"));
|
||||
}
|
||||
});
|
||||
settings.init({});
|
||||
var req = {
|
||||
originalUrl: "/"
|
||||
};
|
||||
auth.authenticate(req,null,function() {
|
||||
settings.reset();
|
||||
done();
|
||||
});
|
||||
|
||||
}));
|
||||
});
|
||||
|
||||
describe("ensureClientSecret", function() {
|
||||
it("leaves client_secret alone if not present",function(done) {
|
||||
var req = {
|
||||
body: {
|
||||
client_secret: "test_value"
|
||||
}
|
||||
};
|
||||
auth.ensureClientSecret(req,null,function() {
|
||||
req.body.should.have.a.property("client_secret","test_value");
|
||||
done();
|
||||
})
|
||||
});
|
||||
it("applies a default client_secret if not present",function(done) {
|
||||
var req = {
|
||||
body: { }
|
||||
};
|
||||
auth.ensureClientSecret(req,null,function() {
|
||||
req.body.should.have.a.property("client_secret","not_available");
|
||||
done();
|
||||
})
|
||||
});
|
||||
});
|
||||
});
|
19
test/red/api/auth/strategies_spec.js
Normal file
19
test/red/api/auth/strategies_spec.js
Normal file
@@ -0,0 +1,19 @@
|
||||
/**
|
||||
* Copyright 2014 IBM Corp.
|
||||
*
|
||||
* 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 strategies = require("../../../../red/api/auth/strategies");
|
||||
|
||||
|
0
test/red/api/auth/tokens_spec.js
Normal file
0
test/red/api/auth/tokens_spec.js
Normal file
0
test/red/api/auth/users_spec.js
Normal file
0
test/red/api/auth/users_spec.js
Normal file
@@ -20,7 +20,6 @@ var express = require('express');
|
||||
var sinon = require('sinon');
|
||||
var when = require('when');
|
||||
|
||||
var app = express();
|
||||
var redNodes = require("../../../red/nodes");
|
||||
|
||||
var flows = require("../../../red/api/flows");
|
||||
|
@@ -47,12 +47,11 @@ describe("api index", function() {
|
||||
.get("/icons/default.png")
|
||||
.expect(404,done)
|
||||
});
|
||||
it('does not serve settings', function(done) {
|
||||
it('serves settings', function(done) {
|
||||
request(app)
|
||||
.get("/settings")
|
||||
.expect(404,done)
|
||||
.expect(200,done)
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe("enables editor", function() {
|
||||
|
60
test/red/api/info_spec.js
Normal file
60
test/red/api/info_spec.js
Normal file
@@ -0,0 +1,60 @@
|
||||
/**
|
||||
* Copyright 2014 IBM Corp.
|
||||
*
|
||||
* 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 should = require("should");
|
||||
var request = require('supertest');
|
||||
var express = require('express');
|
||||
var sinon = require('sinon');
|
||||
var when = require('when');
|
||||
|
||||
var app = express();
|
||||
var settings = require("../../../red/settings");
|
||||
var info = require("../../../red/api/info");
|
||||
|
||||
describe("info api", function() {
|
||||
describe("settings handler", function() {
|
||||
before(function() {
|
||||
var userSettings = {
|
||||
foo: 123,
|
||||
httpNodeRoot: "testHttpNodeRoot",
|
||||
version: "testVersion"
|
||||
}
|
||||
settings.init(userSettings);
|
||||
app = express();
|
||||
app.get("/settings",info.settings);
|
||||
});
|
||||
|
||||
after(function() {
|
||||
settings.reset();
|
||||
});
|
||||
|
||||
it('returns the filtered settings', function(done) {
|
||||
request(app)
|
||||
.get("/settings")
|
||||
.expect(200)
|
||||
.end(function(err,res) {
|
||||
if (err) {
|
||||
return done(err);
|
||||
}
|
||||
res.body.should.have.property("httpNodeRoot","testHttpNodeRoot");
|
||||
res.body.should.have.property("version","testVersion");
|
||||
res.body.should.not.have.property("foo",123);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
});
|
@@ -20,7 +20,6 @@ var express = require('express');
|
||||
var sinon = require('sinon');
|
||||
var when = require('when');
|
||||
|
||||
var app = express();
|
||||
var redNodes = require("../../../red/nodes");
|
||||
var server = require("../../../red/server");
|
||||
var settings = require("../../../red/settings");
|
||||
|
@@ -20,7 +20,6 @@ var express = require("express");
|
||||
var fs = require("fs");
|
||||
var path = require("path");
|
||||
|
||||
var settings = require("../../../red/settings");
|
||||
var events = require("../../../red/events");
|
||||
var ui = require("../../../red/api/ui");
|
||||
|
||||
@@ -135,39 +134,6 @@ describe("ui api", function() {
|
||||
});
|
||||
});
|
||||
|
||||
describe("settings handler", function() {
|
||||
before(function() {
|
||||
var userSettings = {
|
||||
foo: 123,
|
||||
httpNodeRoot: "testHttpNodeRoot",
|
||||
version: "testVersion"
|
||||
}
|
||||
settings.init(userSettings);
|
||||
app = express();
|
||||
app.get("/settings",ui.settings);
|
||||
//app.use("/",ui.editor);
|
||||
});
|
||||
|
||||
after(function() {
|
||||
settings.reset();
|
||||
});
|
||||
|
||||
it('returns the filtered settings', function(done) {
|
||||
request(app)
|
||||
.get("/settings")
|
||||
.expect(200)
|
||||
.end(function(err,res) {
|
||||
if (err) {
|
||||
return done(err);
|
||||
}
|
||||
res.body.should.have.property("httpNodeRoot","testHttpNodeRoot");
|
||||
res.body.should.have.property("version","testVersion");
|
||||
res.body.should.not.have.property("foo",123);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe("editor ui handler", function() {
|
||||
before(function() {
|
||||
app = express();
|
||||
|
Reference in New Issue
Block a user