diff options
author | Mirah Gary <mgary@vmware.com> | 2022-03-24 13:41:24 +0100 |
---|---|---|
committer | Mirah Gary <mgary@vmware.com> | 2022-03-24 13:41:24 +0100 |
commit | 01a6003a85d18741203f0404ceb037e4e9c9b2a7 (patch) | |
tree | c30185eff0696637a797b307c0fb3418c4c26a22 | |
parent | 3874e624246da723cbd4ef1b1cb2656f34773a00 (diff) | |
download | rabbitmq-server-git-01a6003a85d18741203f0404ceb037e4e9c9b2a7.tar.gz |
Revert "Use jsdom built-in CustomResourceLoader to fake /auth endpoint."
This reverts commit 3874e624246da723cbd4ef1b1cb2656f34773a00.
13 files changed, 228 insertions, 17 deletions
diff --git a/deps/rabbitmq_management/priv/www/js/node_modules/.package-lock.json b/deps/rabbitmq_management/priv/www/js/node_modules/.package-lock.json index 6e21a5c66e..047a7b10ab 100644 --- a/deps/rabbitmq_management/priv/www/js/node_modules/.package-lock.json +++ b/deps/rabbitmq_management/priv/www/js/node_modules/.package-lock.json @@ -325,6 +325,12 @@ "node": ">= 6" } }, + "node_modules/fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=", + "dev": true + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -430,6 +436,12 @@ "node": ">=12" } }, + "node_modules/http": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/http/-/http-0.0.1-security.tgz", + "integrity": "sha512-RnDvP10Ty9FxqOtPZuxtebw1j4L/WiqNMDtuc1YMH1XQm5TgDRaR1G9u8upL6KD1bXHSp9eSXo/ED+8Q7FAr+g==", + "dev": true + }, "node_modules/http-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", @@ -781,6 +793,12 @@ "node": ">=10" } }, + "node_modules/server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=", + "dev": true + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", diff --git a/deps/rabbitmq_management/priv/www/js/node_modules/fs/README.md b/deps/rabbitmq_management/priv/www/js/node_modules/fs/README.md new file mode 100644 index 0000000000..5e9a74cab0 --- /dev/null +++ b/deps/rabbitmq_management/priv/www/js/node_modules/fs/README.md @@ -0,0 +1,9 @@ +# Security holding package + +This package name is not currently in use, but was formerly occupied +by another package. To avoid malicious use, npm is hanging on to the +package name, but loosely, and we'll probably give it to you if you +want it. + +You may adopt this package by contacting support@npmjs.com and +requesting the name. diff --git a/deps/rabbitmq_management/priv/www/js/node_modules/fs/package.json b/deps/rabbitmq_management/priv/www/js/node_modules/fs/package.json new file mode 100644 index 0000000000..11661b0395 --- /dev/null +++ b/deps/rabbitmq_management/priv/www/js/node_modules/fs/package.json @@ -0,0 +1,20 @@ +{ + "name": "fs", + "version": "0.0.1-security", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/npm/security-holder.git" + }, + "keywords": [], + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/npm/security-holder/issues" + }, + "homepage": "https://github.com/npm/security-holder#readme" +} diff --git a/deps/rabbitmq_management/priv/www/js/node_modules/http/README.md b/deps/rabbitmq_management/priv/www/js/node_modules/http/README.md new file mode 100644 index 0000000000..5e9a74cab0 --- /dev/null +++ b/deps/rabbitmq_management/priv/www/js/node_modules/http/README.md @@ -0,0 +1,9 @@ +# Security holding package + +This package name is not currently in use, but was formerly occupied +by another package. To avoid malicious use, npm is hanging on to the +package name, but loosely, and we'll probably give it to you if you +want it. + +You may adopt this package by contacting support@npmjs.com and +requesting the name. diff --git a/deps/rabbitmq_management/priv/www/js/node_modules/http/package.json b/deps/rabbitmq_management/priv/www/js/node_modules/http/package.json new file mode 100644 index 0000000000..4196f28c54 --- /dev/null +++ b/deps/rabbitmq_management/priv/www/js/node_modules/http/package.json @@ -0,0 +1,6 @@ +{ + "name": "http", + "version": "0.0.1-security", + "description": "security holding package", + "repository": "npm/security-holder" +} diff --git a/deps/rabbitmq_management/priv/www/js/node_modules/server-destroy/LICENSE b/deps/rabbitmq_management/priv/www/js/node_modules/server-destroy/LICENSE new file mode 100644 index 0000000000..19129e315f --- /dev/null +++ b/deps/rabbitmq_management/priv/www/js/node_modules/server-destroy/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/deps/rabbitmq_management/priv/www/js/node_modules/server-destroy/README.md b/deps/rabbitmq_management/priv/www/js/node_modules/server-destroy/README.md new file mode 100644 index 0000000000..a05bd220a6 --- /dev/null +++ b/deps/rabbitmq_management/priv/www/js/node_modules/server-destroy/README.md @@ -0,0 +1,21 @@ +# server-destroy + +Enable destroying a server, and all currently open connections. + +## Usage + +```javascript +var enableDestroy = require('server-destroy'); + +var server = http.createServer(function(req, res) { + // do stuff, blah blah blah +}); + +server.listen(PORT); + +// enhance with a 'destroy' function +enableDestroy(server); + +// some time later... +server.destroy(); +``` diff --git a/deps/rabbitmq_management/priv/www/js/node_modules/server-destroy/index.js b/deps/rabbitmq_management/priv/www/js/node_modules/server-destroy/index.js new file mode 100644 index 0000000000..c8e7f97d24 --- /dev/null +++ b/deps/rabbitmq_management/priv/www/js/node_modules/server-destroy/index.js @@ -0,0 +1,19 @@ +module.exports = enableDestroy; + +function enableDestroy(server) { + var connections = {} + + server.on('connection', function(conn) { + var key = conn.remoteAddress + ':' + conn.remotePort; + connections[key] = conn; + conn.on('close', function() { + delete connections[key]; + }); + }); + + server.destroy = function(cb) { + server.close(cb); + for (var key in connections) + connections[key].destroy(); + }; +} diff --git a/deps/rabbitmq_management/priv/www/js/node_modules/server-destroy/package.json b/deps/rabbitmq_management/priv/www/js/node_modules/server-destroy/package.json new file mode 100644 index 0000000000..6f49f50708 --- /dev/null +++ b/deps/rabbitmq_management/priv/www/js/node_modules/server-destroy/package.json @@ -0,0 +1,17 @@ +{ + "name": "server-destroy", + "version": "1.0.1", + "description": "Enable destroying a server, and all currently open connections.", + "main": "index.js", + "scripts": { + "test": "node test.js" + }, + "repository": { + "type": "git", + "url": "git://github.com/isaacs/server-destroy" + }, + "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)", + "license": "ISC", + "readmeFilename": "README.md", + "gitHead": "71e22162bacb9368de045db4283f95f02194479b" +} diff --git a/deps/rabbitmq_management/priv/www/js/node_modules/server-destroy/test.js b/deps/rabbitmq_management/priv/www/js/node_modules/server-destroy/test.js new file mode 100644 index 0000000000..9a6f6b76ca --- /dev/null +++ b/deps/rabbitmq_management/priv/www/js/node_modules/server-destroy/test.js @@ -0,0 +1,31 @@ +var net = require('net'); +var assert = require('assert'); +var enableDestroy = require('./index.js'); + +var server = net.createServer(function(conn) { + var i = setInterval(function() { + conn.read(); + conn.write('hi\n'); + }, 100); + i.unref(); +}); +server.listen(1337); +enableDestroy(server); + +var connected = 0; +for (var i = 0; i < 10; i++) { + var client = net.connect(1337); + client.on('connect', function() { + connected++; + if (connected === 10) setTimeout(destroy); + }); + + // just ignore the resets + client.on('error', function() {}); +} + +function destroy() { + server.destroy(function() { + console.log('ok'); + }); +} diff --git a/deps/rabbitmq_management/priv/www/js/package-lock.json b/deps/rabbitmq_management/priv/www/js/package-lock.json index e4d6b5caff..23a61257ef 100644 --- a/deps/rabbitmq_management/priv/www/js/package-lock.json +++ b/deps/rabbitmq_management/priv/www/js/package-lock.json @@ -6,10 +6,13 @@ "": { "devDependencies": { "cross-env": "^7.0.3", + "fs": "^0.0.1-security", + "http": "^0.0.1-security", "ignore-styles": "^5.0.1", "jasmine": "^4.0.2", "jasmine-node": "^3.0.0", - "jsdom": "^19.0.0" + "jsdom": "^19.0.0", + "server-destroy": "^1.0.1" } }, "node_modules/@tootallnate/once": { @@ -334,6 +337,12 @@ "node": ">= 6" } }, + "node_modules/fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=", + "dev": true + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -439,6 +448,12 @@ "node": ">=12" } }, + "node_modules/http": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/http/-/http-0.0.1-security.tgz", + "integrity": "sha512-RnDvP10Ty9FxqOtPZuxtebw1j4L/WiqNMDtuc1YMH1XQm5TgDRaR1G9u8upL6KD1bXHSp9eSXo/ED+8Q7FAr+g==", + "dev": true + }, "node_modules/http-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", @@ -790,6 +805,12 @@ "node": ">=10" } }, + "node_modules/server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=", + "dev": true + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -1259,6 +1280,12 @@ "mime-types": "^2.1.12" } }, + "fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=", + "dev": true + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1339,6 +1366,12 @@ "whatwg-encoding": "^2.0.0" } }, + "http": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/http/-/http-0.0.1-security.tgz", + "integrity": "sha512-RnDvP10Ty9FxqOtPZuxtebw1j4L/WiqNMDtuc1YMH1XQm5TgDRaR1G9u8upL6KD1bXHSp9eSXo/ED+8Q7FAr+g==", + "dev": true + }, "http-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", @@ -1626,6 +1659,12 @@ "xmlchars": "^2.2.0" } }, + "server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=", + "dev": true + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", diff --git a/deps/rabbitmq_management/priv/www/js/package.json b/deps/rabbitmq_management/priv/www/js/package.json index 3e0c66587b..9b1297ec54 100644 --- a/deps/rabbitmq_management/priv/www/js/package.json +++ b/deps/rabbitmq_management/priv/www/js/package.json @@ -1,10 +1,13 @@ { "devDependencies": { "cross-env": "^7.0.3", + "fs": "^0.0.1-security", + "http": "^0.0.1-security", "ignore-styles": "^5.0.1", "jasmine": "^4.0.2", "jasmine-node": "^3.0.0", - "jsdom": "^19.0.0" + "jsdom": "^19.0.0", + "server-destroy": "^1.0.1" }, "scripts": { "test": "cross-env NODE_ENV=test jasmine --config=test/jasmine.json" diff --git a/deps/rabbitmq_management/priv/www/js/test/spec/login.test.js b/deps/rabbitmq_management/priv/www/js/test/spec/login.test.js index e6385efb2f..a4fa6f2b69 100644 --- a/deps/rabbitmq_management/priv/www/js/test/spec/login.test.js +++ b/deps/rabbitmq_management/priv/www/js/test/spec/login.test.js @@ -1,16 +1,26 @@ const jsdom = require('jsdom') const { JSDOM } = jsdom +const http = require('http') +var enableDestroy = require('server-destroy') + describe("login", () => { + var server var authResponse - class CustomResourceLoader extends jsdom.ResourceLoader { - fetch(url, options) { - if (url === "http://localhost:15672/auth") { - return Promise.resolve(Buffer.from(authResponse)) - } - return super.fetch(url, options) + beforeAll(() => { + var authListener = (req,res) => { + res.setHeader("Content-Type", "application/json") + res.writeHead(200) + res.end(authResponse) } - } + server = http.createServer(authListener) + server.listen(15672) + enableDestroy(server) + }) + + afterAll(() => { + server.destroy() + }) describe("outer", () => { it("should have an outer block", () => { @@ -33,10 +43,7 @@ describe("login", () => { }) it("should render the login form", () => { - JSDOM.fromFile("../index.html", { - runScripts: "dangerously", - url: "http://localhost:15672" - }).then(dom => { + JSDOM.fromFile("../index.html", { runScripts: "dangerously" }).then(dom => { const login = dom.window.document.getElementById('login') expect(login).toBeDefined() const loginStatus = dom.window.document.getElementById('login-status') @@ -75,10 +82,7 @@ describe("login", () => { }) it("should render the link to UAA", () => { - JSDOM.fromFile("../index.html", { - runScripts: "dangerously", - url: "http://localhost:15672" - }).then(dom => { + JSDOM.fromFile("../index.html", { runScripts: "dangerously" }).then(dom => { const login = dom.window.document.getElementById('login') expect(login).toBeDefined() const loginStatus = dom.window.document.getElementById('login-status') |