@webex/test-helper-server 3.0.0-beta.3 → 3.0.0-beta.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cookies.js +4 -3
- package/dist/cookies.js.map +1 -1
- package/dist/files.js +5 -14
- package/dist/files.js.map +1 -1
- package/dist/form.js +4 -4
- package/dist/form.js.map +1 -1
- package/dist/index.js +40 -42
- package/dist/index.js.map +1 -1
- package/dist/json.js +4 -4
- package/dist/json.js.map +1 -1
- package/dist/reflect.js +0 -1
- package/dist/reflect.js.map +1 -1
- package/package.json +2 -2
- package/src/.eslintrc.yml +17 -17
- package/src/cookies.js +1 -3
- package/src/files.js +2 -6
- package/src/form.js +0 -1
- package/src/index.js +90 -82
- package/src/json.js +1 -2
- package/src/redirect.html +10 -13
- package/src/reflect.js +0 -1
package/dist/cookies.js
CHANGED
|
@@ -3,13 +3,14 @@
|
|
|
3
3
|
/*!
|
|
4
4
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
5
5
|
*/
|
|
6
|
-
var cookieParser = require("cookie-parser");
|
|
7
6
|
|
|
7
|
+
var cookieParser = require("cookie-parser");
|
|
8
8
|
var express = require("express");
|
|
9
|
-
/* eslint new-cap: [0] */
|
|
10
9
|
|
|
10
|
+
/* eslint new-cap: [0] */
|
|
11
|
+
var router = express.Router();
|
|
11
12
|
|
|
12
|
-
|
|
13
|
+
// Enable cookies
|
|
13
14
|
// --------------
|
|
14
15
|
|
|
15
16
|
router.use(cookieParser());
|
package/dist/cookies.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["cookieParser","require","express","router","Router","use","get","req","res","status","cookie","send","end","cookies","oreo","module","exports"],"sources":["cookies.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\
|
|
1
|
+
{"version":3,"names":["cookieParser","require","express","router","Router","use","get","req","res","status","cookie","send","end","cookies","oreo","module","exports"],"sources":["cookies.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nconst cookieParser = require(`cookie-parser`);\nconst express = require(`express`);\n\n/* eslint new-cap: [0] */\nconst router = express.Router();\n\n// Enable cookies\n// --------------\n\nrouter.use(cookieParser());\n\nrouter.get(`/set`, (req, res) => {\n res.status(200).cookie(`oreo`, `double stuf`).send().end();\n});\n\nrouter.get(`/expect`, (req, res) => {\n if (req.cookies.oreo === `double stuf`) {\n res.status(200).send().end();\n } else {\n res.status(403).send().end();\n }\n});\n\nmodule.exports = router;\n"],"mappings":";;AAAA;AACA;AACA;;AAEA,IAAMA,YAAY,GAAGC,OAAO,iBAAiB;AAC7C,IAAMC,OAAO,GAAGD,OAAO,WAAW;;AAElC;AACA,IAAME,MAAM,GAAGD,OAAO,CAACE,MAAM,EAAE;;AAE/B;AACA;;AAEAD,MAAM,CAACE,GAAG,CAACL,YAAY,EAAE,CAAC;AAE1BG,MAAM,CAACG,GAAG,SAAS,UAACC,GAAG,EAAEC,GAAG,EAAK;EAC/BA,GAAG,CAACC,MAAM,CAAC,GAAG,CAAC,CAACC,MAAM,uBAAuB,CAACC,IAAI,EAAE,CAACC,GAAG,EAAE;AAC5D,CAAC,CAAC;AAEFT,MAAM,CAACG,GAAG,YAAY,UAACC,GAAG,EAAEC,GAAG,EAAK;EAClC,IAAID,GAAG,CAACM,OAAO,CAACC,IAAI,kBAAkB,EAAE;IACtCN,GAAG,CAACC,MAAM,CAAC,GAAG,CAAC,CAACE,IAAI,EAAE,CAACC,GAAG,EAAE;EAC9B,CAAC,MAAM;IACLJ,GAAG,CAACC,MAAM,CAAC,GAAG,CAAC,CAACE,IAAI,EAAE,CAACC,GAAG,EAAE;EAC9B;AACF,CAAC,CAAC;AAEFG,MAAM,CAACC,OAAO,GAAGb,MAAM"}
|
package/dist/files.js
CHANGED
|
@@ -3,25 +3,20 @@
|
|
|
3
3
|
/*!
|
|
4
4
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
5
5
|
*/
|
|
6
|
-
var bodyParser = require("body-parser");
|
|
7
6
|
|
|
7
|
+
var bodyParser = require("body-parser");
|
|
8
8
|
var express = require("express");
|
|
9
|
-
|
|
10
9
|
var fs = require("fs");
|
|
11
|
-
|
|
12
10
|
var mkdirp = require("mkdirp");
|
|
13
|
-
|
|
14
11
|
var multer = require("multer");
|
|
15
|
-
|
|
16
12
|
var path = require("path");
|
|
17
|
-
|
|
18
13
|
var reflect = require("./reflect");
|
|
19
|
-
|
|
20
14
|
var uuid = require("uuid");
|
|
21
|
-
/* eslint new-cap: [0] */
|
|
22
15
|
|
|
16
|
+
/* eslint new-cap: [0] */
|
|
17
|
+
var router = express.Router();
|
|
23
18
|
|
|
24
|
-
|
|
19
|
+
// Configure Image processing
|
|
25
20
|
// -------------------------
|
|
26
21
|
|
|
27
22
|
router.use(bodyParser.raw("image/*"));
|
|
@@ -34,17 +29,15 @@ router.post("/upload", function (req, res, next) {
|
|
|
34
29
|
if (err) {
|
|
35
30
|
return next(err);
|
|
36
31
|
}
|
|
37
|
-
|
|
38
32
|
var id = uuid.v4();
|
|
39
33
|
var storeAt = path.join(uploadPath, id);
|
|
40
34
|
var getFrom = "/files/download/".concat(id);
|
|
41
|
-
/* eslint max-nested-callbacks: [0] */
|
|
42
35
|
|
|
36
|
+
/* eslint max-nested-callbacks: [0] */
|
|
43
37
|
return fs.writeFile(storeAt, req.body, function (err2) {
|
|
44
38
|
if (err2) {
|
|
45
39
|
return next(err2);
|
|
46
40
|
}
|
|
47
|
-
|
|
48
41
|
return res.status(201).json({
|
|
49
42
|
loc: getFrom
|
|
50
43
|
}).end();
|
|
@@ -55,12 +48,10 @@ router.get("/download/:id", function (req, res, next) {
|
|
|
55
48
|
if (!req.params.id) {
|
|
56
49
|
return next(new Error("id param is required"));
|
|
57
50
|
}
|
|
58
|
-
|
|
59
51
|
return fs.readFile(path.join(uploadPath, req.params.id), function (err, data) {
|
|
60
52
|
if (err) {
|
|
61
53
|
return next(err);
|
|
62
54
|
}
|
|
63
|
-
|
|
64
55
|
return res.status(200).send(data).end();
|
|
65
56
|
});
|
|
66
57
|
});
|
package/dist/files.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["bodyParser","require","express","fs","mkdirp","multer","path","reflect","uuid","router","Router","use","raw","patch","post","put","uploadPath","process","env","PACKAGE","req","res","next","err","id","v4","storeAt","join","getFrom","writeFile","body","err2","status","json","loc","end","get","params","Error","readFile","data","send","storage","memoryStorage","upload","forEach","methodName","array","files","static","__dirname","module","exports"],"sources":["files.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\
|
|
1
|
+
{"version":3,"names":["bodyParser","require","express","fs","mkdirp","multer","path","reflect","uuid","router","Router","use","raw","patch","post","put","uploadPath","process","env","PACKAGE","req","res","next","err","id","v4","storeAt","join","getFrom","writeFile","body","err2","status","json","loc","end","get","params","Error","readFile","data","send","storage","memoryStorage","upload","forEach","methodName","array","files","static","__dirname","module","exports"],"sources":["files.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nconst bodyParser = require(`body-parser`);\nconst express = require(`express`);\nconst fs = require(`fs`);\nconst mkdirp = require(`mkdirp`);\nconst multer = require(`multer`);\nconst path = require(`path`);\nconst reflect = require(`./reflect`);\nconst uuid = require(`uuid`);\n\n/* eslint new-cap: [0] */\nconst router = express.Router();\n\n// Configure Image processing\n// -------------------------\n\nrouter.use(bodyParser.raw(`image/*`));\n\nrouter.patch(`/reflect`, reflect);\nrouter.post(`/reflect`, reflect);\nrouter.put(`/reflect`, reflect);\n\nconst uploadPath = process.env.PACKAGE ? `.tmp/${process.env.PACKAGE}/files` : `.tmp/files`;\n\nrouter.post(`/upload`, (req, res, next) => {\n mkdirp(uploadPath, (err) => {\n if (err) {\n return next(err);\n }\n\n const id = uuid.v4();\n const storeAt = path.join(uploadPath, id);\n const getFrom = `/files/download/${id}`;\n\n /* eslint max-nested-callbacks: [0] */\n return fs.writeFile(storeAt, req.body, (err2) => {\n if (err2) {\n return next(err2);\n }\n\n return res\n .status(201)\n .json({\n loc: getFrom,\n })\n .end();\n });\n });\n});\n\nrouter.get(`/download/:id`, (req, res, next) => {\n if (!req.params.id) {\n return next(new Error(`id param is required`));\n }\n\n return fs.readFile(path.join(uploadPath, req.params.id), (err, data) => {\n if (err) {\n return next(err);\n }\n\n return res.status(200).send(data).end();\n });\n});\n\nconst storage = multer.memoryStorage();\nconst upload = multer({storage});\n\n[`put`, `patch`, `post`].forEach((methodName) => {\n router[methodName](`/metadata`, upload.array(`files`), (req, res) => {\n res.status(200).json(req.files).end();\n });\n});\n\nrouter.use(`/get`, express.static(path.join(__dirname, `static`)));\n\nmodule.exports = router;\n"],"mappings":";;AAAA;AACA;AACA;;AAEA,IAAMA,UAAU,GAAGC,OAAO,eAAe;AACzC,IAAMC,OAAO,GAAGD,OAAO,WAAW;AAClC,IAAME,EAAE,GAAGF,OAAO,MAAM;AACxB,IAAMG,MAAM,GAAGH,OAAO,UAAU;AAChC,IAAMI,MAAM,GAAGJ,OAAO,UAAU;AAChC,IAAMK,IAAI,GAAGL,OAAO,QAAQ;AAC5B,IAAMM,OAAO,GAAGN,OAAO,aAAa;AACpC,IAAMO,IAAI,GAAGP,OAAO,QAAQ;;AAE5B;AACA,IAAMQ,MAAM,GAAGP,OAAO,CAACQ,MAAM,EAAE;;AAE/B;AACA;;AAEAD,MAAM,CAACE,GAAG,CAACX,UAAU,CAACY,GAAG,WAAW,CAAC;AAErCH,MAAM,CAACI,KAAK,aAAaN,OAAO,CAAC;AACjCE,MAAM,CAACK,IAAI,aAAaP,OAAO,CAAC;AAChCE,MAAM,CAACM,GAAG,aAAaR,OAAO,CAAC;AAE/B,IAAMS,UAAU,GAAGC,OAAO,CAACC,GAAG,CAACC,OAAO,kBAAWF,OAAO,CAACC,GAAG,CAACC,OAAO,0BAAuB;AAE3FV,MAAM,CAACK,IAAI,YAAY,UAACM,GAAG,EAAEC,GAAG,EAAEC,IAAI,EAAK;EACzClB,MAAM,CAACY,UAAU,EAAE,UAACO,GAAG,EAAK;IAC1B,IAAIA,GAAG,EAAE;MACP,OAAOD,IAAI,CAACC,GAAG,CAAC;IAClB;IAEA,IAAMC,EAAE,GAAGhB,IAAI,CAACiB,EAAE,EAAE;IACpB,IAAMC,OAAO,GAAGpB,IAAI,CAACqB,IAAI,CAACX,UAAU,EAAEQ,EAAE,CAAC;IACzC,IAAMI,OAAO,6BAAsBJ,EAAE,CAAE;;IAEvC;IACA,OAAOrB,EAAE,CAAC0B,SAAS,CAACH,OAAO,EAAEN,GAAG,CAACU,IAAI,EAAE,UAACC,IAAI,EAAK;MAC/C,IAAIA,IAAI,EAAE;QACR,OAAOT,IAAI,CAACS,IAAI,CAAC;MACnB;MAEA,OAAOV,GAAG,CACPW,MAAM,CAAC,GAAG,CAAC,CACXC,IAAI,CAAC;QACJC,GAAG,EAAEN;MACP,CAAC,CAAC,CACDO,GAAG,EAAE;IACV,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF1B,MAAM,CAAC2B,GAAG,kBAAkB,UAAChB,GAAG,EAAEC,GAAG,EAAEC,IAAI,EAAK;EAC9C,IAAI,CAACF,GAAG,CAACiB,MAAM,CAACb,EAAE,EAAE;IAClB,OAAOF,IAAI,CAAC,IAAIgB,KAAK,wBAAwB,CAAC;EAChD;EAEA,OAAOnC,EAAE,CAACoC,QAAQ,CAACjC,IAAI,CAACqB,IAAI,CAACX,UAAU,EAAEI,GAAG,CAACiB,MAAM,CAACb,EAAE,CAAC,EAAE,UAACD,GAAG,EAAEiB,IAAI,EAAK;IACtE,IAAIjB,GAAG,EAAE;MACP,OAAOD,IAAI,CAACC,GAAG,CAAC;IAClB;IAEA,OAAOF,GAAG,CAACW,MAAM,CAAC,GAAG,CAAC,CAACS,IAAI,CAACD,IAAI,CAAC,CAACL,GAAG,EAAE;EACzC,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,IAAMO,OAAO,GAAGrC,MAAM,CAACsC,aAAa,EAAE;AACtC,IAAMC,MAAM,GAAGvC,MAAM,CAAC;EAACqC,OAAO,EAAPA;AAAO,CAAC,CAAC;AAEhC,wBAAwB,CAACG,OAAO,CAAC,UAACC,UAAU,EAAK;EAC/CrC,MAAM,CAACqC,UAAU,CAAC,cAAcF,MAAM,CAACG,KAAK,SAAS,EAAE,UAAC3B,GAAG,EAAEC,GAAG,EAAK;IACnEA,GAAG,CAACW,MAAM,CAAC,GAAG,CAAC,CAACC,IAAI,CAACb,GAAG,CAAC4B,KAAK,CAAC,CAACb,GAAG,EAAE;EACvC,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF1B,MAAM,CAACE,GAAG,SAAST,OAAO,CAAC+C,MAAM,CAAC3C,IAAI,CAACqB,IAAI,CAACuB,SAAS,WAAW,CAAC,CAAC;AAElEC,MAAM,CAACC,OAAO,GAAG3C,MAAM"}
|
package/dist/form.js
CHANGED
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
/*!
|
|
4
4
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
5
5
|
*/
|
|
6
|
-
var bodyParser = require("body-parser");
|
|
7
6
|
|
|
7
|
+
var bodyParser = require("body-parser");
|
|
8
8
|
var express = require("express");
|
|
9
|
-
|
|
10
9
|
var reflect = require("./reflect");
|
|
11
|
-
/* eslint new-cap: [0] */
|
|
12
10
|
|
|
11
|
+
/* eslint new-cap: [0] */
|
|
12
|
+
var router = express.Router();
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
// Configure Image processing
|
|
15
15
|
// -------------------------
|
|
16
16
|
|
|
17
17
|
router.use(bodyParser.urlencoded({
|
package/dist/form.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["bodyParser","require","express","reflect","router","Router","use","urlencoded","extended","patch","put","post","module","exports"],"sources":["form.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\
|
|
1
|
+
{"version":3,"names":["bodyParser","require","express","reflect","router","Router","use","urlencoded","extended","patch","put","post","module","exports"],"sources":["form.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nconst bodyParser = require(`body-parser`);\nconst express = require(`express`);\nconst reflect = require(`./reflect`);\n\n/* eslint new-cap: [0] */\nconst router = express.Router();\n\n// Configure Image processing\n// -------------------------\n\nrouter.use(bodyParser.urlencoded({extended: true}));\n\nrouter.patch(`/reflect`, reflect);\nrouter.put(`/reflect`, reflect);\nrouter.post(`/reflect`, reflect);\n\nmodule.exports = router;\n"],"mappings":";;AAAA;AACA;AACA;;AAEA,IAAMA,UAAU,GAAGC,OAAO,eAAe;AACzC,IAAMC,OAAO,GAAGD,OAAO,WAAW;AAClC,IAAME,OAAO,GAAGF,OAAO,aAAa;;AAEpC;AACA,IAAMG,MAAM,GAAGF,OAAO,CAACG,MAAM,EAAE;;AAE/B;AACA;;AAEAD,MAAM,CAACE,GAAG,CAACN,UAAU,CAACO,UAAU,CAAC;EAACC,QAAQ,EAAE;AAAI,CAAC,CAAC,CAAC;AAEnDJ,MAAM,CAACK,KAAK,aAAaN,OAAO,CAAC;AACjCC,MAAM,CAACM,GAAG,aAAaP,OAAO,CAAC;AAC/BC,MAAM,CAACO,IAAI,aAAaR,OAAO,CAAC;AAEhCS,MAAM,CAACC,OAAO,GAAGT,MAAM"}
|
package/dist/index.js
CHANGED
|
@@ -1,93 +1,97 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
|
|
4
|
+
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
|
|
5
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
|
|
6
|
+
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
|
|
7
|
+
var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
|
|
8
|
+
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
3
9
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
var _assign = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/assign"));
|
|
6
|
-
|
|
7
10
|
var _parseInt2 = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/parse-int"));
|
|
8
|
-
|
|
11
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
12
|
+
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
13
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
9
14
|
/*!
|
|
10
15
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
11
16
|
*/
|
|
12
17
|
|
|
13
18
|
/* eslint max-nested-callbacks: [2, 3] */
|
|
14
|
-
|
|
15
19
|
/* eslint no-console: [0] */
|
|
16
|
-
var btoa = require("btoa");
|
|
17
20
|
|
|
21
|
+
var btoa = require("btoa");
|
|
18
22
|
var bodyParser = require("body-parser");
|
|
19
|
-
|
|
20
23
|
var browserify = require("browserify-middleware");
|
|
21
|
-
|
|
22
24
|
var compression = require("compression");
|
|
23
|
-
|
|
24
25
|
var cors = require("cors");
|
|
25
|
-
|
|
26
26
|
var express = require("express");
|
|
27
|
-
|
|
28
27
|
var fs = require("fs");
|
|
29
|
-
|
|
30
28
|
var glob = require("glob");
|
|
31
|
-
|
|
32
29
|
var http = require("http");
|
|
33
|
-
|
|
34
30
|
var morgan = require("morgan");
|
|
35
|
-
|
|
36
31
|
var path = require("path");
|
|
37
|
-
|
|
38
32
|
var querystring = require("querystring");
|
|
39
|
-
|
|
40
33
|
var request = require("request");
|
|
41
|
-
|
|
42
34
|
var url = require("url");
|
|
43
|
-
|
|
44
35
|
var base64 = require("urlsafe-base64");
|
|
36
|
+
var app = express();
|
|
45
37
|
|
|
46
|
-
|
|
38
|
+
// Configure Logging
|
|
47
39
|
// -----------------
|
|
48
40
|
|
|
49
41
|
if (process.env.DEBUG) {
|
|
50
42
|
app.use(morgan("short", {
|
|
51
43
|
immediate: true
|
|
52
44
|
}));
|
|
53
|
-
}
|
|
54
|
-
// --------------
|
|
45
|
+
}
|
|
55
46
|
|
|
47
|
+
// Configure CORS
|
|
48
|
+
// --------------
|
|
56
49
|
|
|
57
50
|
app.use(cors({
|
|
58
51
|
credentials: true,
|
|
59
52
|
origin: function origin(o, callback) {
|
|
60
53
|
callback(null, true);
|
|
61
54
|
}
|
|
62
|
-
}));
|
|
55
|
+
}));
|
|
56
|
+
|
|
57
|
+
// Configure body processing
|
|
63
58
|
// -------------------------
|
|
64
59
|
|
|
65
60
|
app.use(bodyParser.raw({
|
|
66
61
|
type: "image/*"
|
|
67
|
-
}));
|
|
62
|
+
}));
|
|
63
|
+
|
|
64
|
+
// Enable gzip/deflate
|
|
68
65
|
// -------------------
|
|
69
66
|
|
|
70
|
-
app.use(compression());
|
|
67
|
+
app.use(compression());
|
|
68
|
+
|
|
69
|
+
// Close all connections
|
|
71
70
|
// ---------------------
|
|
71
|
+
|
|
72
72
|
// This *should* help tests run faster in IE, which has a very low number of
|
|
73
73
|
// allowed connections to the same origin.
|
|
74
|
-
|
|
75
74
|
app.use(function (req, res, next) {
|
|
76
75
|
res.set("connection", "close");
|
|
77
76
|
next();
|
|
78
|
-
});
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
// Configure Browserify
|
|
79
80
|
// --------------------
|
|
80
81
|
|
|
81
82
|
var appPattern = "packages/{*,*/*}/test/automation/fixtures/app.js";
|
|
82
83
|
glob.sync(appPattern).forEach(function (appjs) {
|
|
83
|
-
var packageName = appjs.replace("packages/", "").replace("/test/automation/fixtures/app.js", "");
|
|
84
|
+
var packageName = appjs.replace("packages/", "").replace("/test/automation/fixtures/app.js", "");
|
|
84
85
|
|
|
86
|
+
// eslint-disable-next-line no-sync
|
|
85
87
|
fs.statSync(appjs);
|
|
86
88
|
app.use("/".concat(packageName, "/app.js"), browserify(appjs, {
|
|
87
89
|
debug: true,
|
|
88
90
|
transform: ["babelify", "envify"]
|
|
89
91
|
}));
|
|
90
|
-
});
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
// Enable active routes
|
|
91
95
|
// --------------------
|
|
92
96
|
|
|
93
97
|
app.get('/', function (req, res) {
|
|
@@ -117,7 +121,9 @@ app.get("/return-qs-as-object", function (req, res) {
|
|
|
117
121
|
});
|
|
118
122
|
app.get("/embargoed", function (req, res) {
|
|
119
123
|
res.status(451).end();
|
|
120
|
-
});
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
// Enable static routes
|
|
121
127
|
// --------------------
|
|
122
128
|
|
|
123
129
|
var fixturePattern = "packages/{*,*/*}/test/automation/fixtures";
|
|
@@ -128,14 +134,11 @@ glob.sync(fixturePattern).forEach(function (fixturePath) {
|
|
|
128
134
|
next();
|
|
129
135
|
return;
|
|
130
136
|
}
|
|
131
|
-
|
|
132
137
|
var state = JSON.parse(base64.decode(req.query.state));
|
|
133
|
-
|
|
134
138
|
if (state.exchange === false) {
|
|
135
139
|
next();
|
|
136
140
|
return;
|
|
137
141
|
}
|
|
138
|
-
|
|
139
142
|
request({
|
|
140
143
|
/* eslint-disable camelcase */
|
|
141
144
|
method: "POST",
|
|
@@ -152,22 +155,19 @@ glob.sync(fixturePattern).forEach(function (fixturePath) {
|
|
|
152
155
|
sendImmediately: true
|
|
153
156
|
}
|
|
154
157
|
/* eslint-enable camelcase */
|
|
155
|
-
|
|
156
158
|
}, function (err, response) {
|
|
157
159
|
if (err) {
|
|
158
160
|
console.warn("Request to CI failed with non-HTTP error");
|
|
159
161
|
next(err);
|
|
160
162
|
return;
|
|
161
163
|
}
|
|
162
|
-
|
|
163
164
|
if (response.statusCode >= 400) {
|
|
164
165
|
console.warn("Got unexpected response from CI");
|
|
165
166
|
next(new Error(response.body));
|
|
166
167
|
return;
|
|
167
168
|
}
|
|
168
|
-
|
|
169
169
|
var redirect = url.parse(req.url, true);
|
|
170
|
-
var qs = querystring.stringify((
|
|
170
|
+
var qs = querystring.stringify(_objectSpread({
|
|
171
171
|
state: req.query.state
|
|
172
172
|
}, JSON.parse(response.body)));
|
|
173
173
|
redirect = "".concat(redirect.pathname, "#").concat(qs);
|
|
@@ -182,7 +182,6 @@ app.post("/refresh", bodyParser.json(), function (req, res, next) {
|
|
|
182
182
|
next(new Error("`refresh_token` is required"));
|
|
183
183
|
return;
|
|
184
184
|
}
|
|
185
|
-
|
|
186
185
|
console.info("Refreshing access token");
|
|
187
186
|
request({
|
|
188
187
|
/* eslint-disable camelcase */
|
|
@@ -199,25 +198,24 @@ app.post("/refresh", bodyParser.json(), function (req, res, next) {
|
|
|
199
198
|
sendImmediately: true
|
|
200
199
|
}
|
|
201
200
|
/* eslint-enable camelcase */
|
|
202
|
-
|
|
203
201
|
}, function (err, response) {
|
|
204
202
|
if (err) {
|
|
205
203
|
console.warn("Request to CI failed with non-HTTP error");
|
|
206
204
|
next(err);
|
|
207
205
|
return;
|
|
208
206
|
}
|
|
209
|
-
|
|
210
207
|
if (response.statusCode >= 400) {
|
|
211
208
|
console.warn("Got unexpected response from CI");
|
|
212
209
|
next(new Error(response.body));
|
|
213
210
|
return;
|
|
214
211
|
}
|
|
215
|
-
|
|
216
212
|
console.info("Returning new access token");
|
|
217
213
|
res.status(200).json(JSON.parse(response.body)).end();
|
|
218
214
|
});
|
|
219
215
|
});
|
|
220
|
-
app.use(express.static(path.resolve(__dirname, '..', "static")));
|
|
216
|
+
app.use(express.static(path.resolve(__dirname, '..', "static")));
|
|
217
|
+
|
|
218
|
+
// Start the server
|
|
221
219
|
// ----------------
|
|
222
220
|
|
|
223
221
|
var port = (0, _parseInt2.default)(process.env.SERVER_PORT, 10) || 8000;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["btoa","require","bodyParser","browserify","compression","cors","express","fs","glob","http","morgan","path","querystring","request","url","base64","app","process","env","DEBUG","use","immediate","credentials","origin","o","callback","raw","type","req","res","next","set","appPattern","sync","forEach","appjs","packageName","replace","statSync","debug","transform","get","send","router","headers","authorization","status","end","json","query","fixturePattern","fixturePath","code","state","JSON","parse","decode","exchange","method","uri","IDBROKER_BASE_URL","form","grant_type","redirect_uri","WEBEX_REDIRECT_URI","self_contained_token","auth","user","WEBEX_CLIENT_ID","pass","WEBEX_CLIENT_SECRET","sendImmediately","err","response","console","warn","statusCode","Error","body","redirect","qs","stringify","pathname","info","static","post","refresh_token","resolve","__dirname","port","SERVER_PORT","createServer","listen","log","fixtureport","FIXTURE_PORT","corsport","CORS_PORT"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint max-nested-callbacks: [2, 3] */\n/* eslint no-console: [0] */\n\n\nconst btoa = require(`btoa`);\nconst bodyParser = require(`body-parser`);\nconst browserify = require(`browserify-middleware`);\nconst compression = require(`compression`);\nconst cors = require(`cors`);\nconst express = require(`express`);\nconst fs = require(`fs`);\nconst glob = require(`glob`);\nconst http = require(`http`);\nconst morgan = require(`morgan`);\nconst path = require(`path`);\nconst querystring = require(`querystring`);\nconst request = require(`request`);\nconst url = require(`url`);\nconst base64 = require(`urlsafe-base64`);\n\nconst app = express();\n\n// Configure Logging\n// -----------------\n\nif (process.env.DEBUG) {\n app.use(morgan(`short`, {\n immediate: true\n }));\n}\n\n// Configure CORS\n// --------------\n\napp.use(cors({\n credentials: true,\n origin(o, callback) {\n callback(null, true);\n }\n}));\n\n// Configure body processing\n// -------------------------\n\napp.use(bodyParser.raw({type: `image/*`}));\n\n// Enable gzip/deflate\n// -------------------\n\napp.use(compression());\n\n// Close all connections\n// ---------------------\n\n// This *should* help tests run faster in IE, which has a very low number of\n// allowed connections to the same origin.\napp.use((req, res, next) => {\n res.set(`connection`, `close`);\n next();\n});\n\n// Configure Browserify\n// --------------------\n\nconst appPattern = `packages/{*,*/*}/test/automation/fixtures/app.js`;\n\nglob.sync(appPattern).forEach((appjs) => {\n const packageName = appjs\n .replace(`packages/`, ``)\n .replace(`/test/automation/fixtures/app.js`, ``);\n\n // eslint-disable-next-line no-sync\n fs.statSync(appjs);\n app.use(`/${packageName}/app.js`, browserify(appjs, {\n debug: true,\n transform: [\n `babelify`,\n `envify`\n ]\n }));\n});\n\n// Enable active routes\n// --------------------\n\napp.get('/', (req, res) => {\n res.send(`<!DOCTYPE html>\n<html>\n <head>\n <title>Redirect Dispatcher</title>\n <script>\n try {\n var state = /state=(.+?)(&.*)?$/.exec(window.location)[1]\n console.info('state', state);\n var name = JSON.parse(atob(state)).name;\n console.info('name', name);\n window.location.pathname = name;\n }\n catch(err) {\n console.warn(err);\n }\n </script>\n </head>\n <body>\n\n </body>\n</html>`);\n});\n\napp.use(`/cookies`, require(`./cookies`));\napp.use(`/json`, require(`./json`));\napp.use(`/form`, require(`./form`));\napp.use(`/files`, require(`./files`));\napp.use(`/jwt`, require(`@webex/test-helper-appid`).router);\n\napp.get(`/requires-basic-auth`, (req, res) => {\n if (req.headers.authorization === `Basic ${btoa(`basicuser:basicpass`)}`) {\n res.status(200).send().end();\n }\n else {\n res.status(403).send().end();\n }\n});\n\napp.get(`/requires-bearer-auth`, (req, res) => {\n if (req.headers.authorization === `Bearer bearertoken`) {\n res.status(200).send().end();\n }\n else {\n res.status(403).send().end();\n }\n});\n\napp.get(`/return-qs-as-object`, (req, res) => {\n res.status(200).json(req.query).end();\n});\n\napp.get(`/embargoed`, (req, res) => {\n res.status(451).end();\n});\n\n// Enable static routes\n// --------------------\n\nconst fixturePattern = `packages/{*,*/*}/test/automation/fixtures`;\n\n\nglob.sync(fixturePattern).forEach((fixturePath) => {\n const packageName = fixturePath\n .replace(`packages/`, ``)\n .replace(`/test/automation/fixtures`, ``);\n\n app.get(`/${packageName}`, (req, res, next) => {\n if (!req.query.code) {\n next();\n\n return;\n }\n\n const state = JSON.parse(base64.decode(req.query.state));\n\n if (state.exchange === false) {\n next();\n\n return;\n }\n\n request({\n /* eslint-disable camelcase */\n method: `POST`,\n uri: `${process.env.IDBROKER_BASE_URL || `https://idbroker.webex.com`}/idb/oauth2/v1/access_token`,\n form: {\n grant_type: `authorization_code`,\n redirect_uri: process.env.WEBEX_REDIRECT_URI,\n code: req.query.code,\n self_contained_token: true\n },\n auth: {\n user: process.env.WEBEX_CLIENT_ID,\n pass: process.env.WEBEX_CLIENT_SECRET,\n sendImmediately: true\n }\n /* eslint-enable camelcase */\n }, (err, response) => {\n if (err) {\n console.warn(`Request to CI failed with non-HTTP error`);\n next(err);\n\n return;\n }\n if (response.statusCode >= 400) {\n console.warn(`Got unexpected response from CI`);\n next(new Error(response.body));\n\n return;\n }\n let redirect = url.parse(req.url, true);\n const qs = querystring.stringify(Object.assign({state: req.query.state}, JSON.parse(response.body)));\n\n redirect = `${redirect.pathname}#${qs}`;\n\n console.info(`redirecting to ${redirect}`);\n res.redirect(redirect);\n });\n });\n app.use(`/${packageName}`, express.static(fixturePath));\n});\n\napp.post(`/refresh`, bodyParser.json(), (req, res, next) => {\n if (!req.body.refresh_token) {\n next(new Error(`\\`refresh_token\\` is required`));\n\n return;\n }\n console.info(`Refreshing access token`);\n request({\n /* eslint-disable camelcase */\n method: `POST`,\n uri: `${process.env.IDBROKER_BASE_URL || `https://idbroker.webex.com`}/idb/oauth2/v1/access_token`,\n form: {\n grant_type: `refresh_token`,\n redirect_uri: process.env.WEBEX_REDIRECT_URI,\n refresh_token: req.body.refresh_token\n },\n auth: {\n user: process.env.WEBEX_CLIENT_ID,\n pass: process.env.WEBEX_CLIENT_SECRET,\n sendImmediately: true\n }\n /* eslint-enable camelcase */\n }, (err, response) => {\n if (err) {\n console.warn(`Request to CI failed with non-HTTP error`);\n next(err);\n\n return;\n }\n if (response.statusCode >= 400) {\n console.warn(`Got unexpected response from CI`);\n next(new Error(response.body));\n\n return;\n }\n\n console.info(`Returning new access token`);\n res.status(200).json(JSON.parse(response.body)).end();\n });\n});\n\napp.use(express.static(path.resolve(__dirname, '..', `static`)));\n\n// Start the server\n// ----------------\n\nconst port = parseInt(process.env.SERVER_PORT, 10) || 8000;\n\nhttp.createServer(app).listen(port, () => {\n console.log(`Express server listening on port ${port}`);\n});\n\nconst fixtureport = parseInt(process.env.FIXTURE_PORT, 10) || 3000;\n\nhttp.createServer(app).listen(fixtureport, () => {\n console.log(`Express server listening on port ${fixtureport}`);\n});\n\nconst corsport = parseInt(process.env.CORS_PORT, 10) || 3002;\n\nhttp.createServer(app).listen(corsport, () => {\n console.log(`Express server listening on port ${corsport}`);\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["btoa","require","bodyParser","browserify","compression","cors","express","fs","glob","http","morgan","path","querystring","request","url","base64","app","process","env","DEBUG","use","immediate","credentials","origin","o","callback","raw","type","req","res","next","set","appPattern","sync","forEach","appjs","packageName","replace","statSync","debug","transform","get","send","router","headers","authorization","status","end","json","query","fixturePattern","fixturePath","code","state","JSON","parse","decode","exchange","method","uri","IDBROKER_BASE_URL","form","grant_type","redirect_uri","WEBEX_REDIRECT_URI","self_contained_token","auth","user","WEBEX_CLIENT_ID","pass","WEBEX_CLIENT_SECRET","sendImmediately","err","response","console","warn","statusCode","Error","body","redirect","qs","stringify","pathname","info","static","post","refresh_token","resolve","__dirname","port","SERVER_PORT","createServer","listen","log","fixtureport","FIXTURE_PORT","corsport","CORS_PORT"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint max-nested-callbacks: [2, 3] */\n/* eslint no-console: [0] */\n\nconst btoa = require(`btoa`);\nconst bodyParser = require(`body-parser`);\nconst browserify = require(`browserify-middleware`);\nconst compression = require(`compression`);\nconst cors = require(`cors`);\nconst express = require(`express`);\nconst fs = require(`fs`);\nconst glob = require(`glob`);\nconst http = require(`http`);\nconst morgan = require(`morgan`);\nconst path = require(`path`);\nconst querystring = require(`querystring`);\nconst request = require(`request`);\nconst url = require(`url`);\nconst base64 = require(`urlsafe-base64`);\n\nconst app = express();\n\n// Configure Logging\n// -----------------\n\nif (process.env.DEBUG) {\n app.use(\n morgan(`short`, {\n immediate: true,\n })\n );\n}\n\n// Configure CORS\n// --------------\n\napp.use(\n cors({\n credentials: true,\n origin(o, callback) {\n callback(null, true);\n },\n })\n);\n\n// Configure body processing\n// -------------------------\n\napp.use(bodyParser.raw({type: `image/*`}));\n\n// Enable gzip/deflate\n// -------------------\n\napp.use(compression());\n\n// Close all connections\n// ---------------------\n\n// This *should* help tests run faster in IE, which has a very low number of\n// allowed connections to the same origin.\napp.use((req, res, next) => {\n res.set(`connection`, `close`);\n next();\n});\n\n// Configure Browserify\n// --------------------\n\nconst appPattern = `packages/{*,*/*}/test/automation/fixtures/app.js`;\n\nglob.sync(appPattern).forEach((appjs) => {\n const packageName = appjs\n .replace(`packages/`, ``)\n .replace(`/test/automation/fixtures/app.js`, ``);\n\n // eslint-disable-next-line no-sync\n fs.statSync(appjs);\n app.use(\n `/${packageName}/app.js`,\n browserify(appjs, {\n debug: true,\n transform: [`babelify`, `envify`],\n })\n );\n});\n\n// Enable active routes\n// --------------------\n\napp.get('/', (req, res) => {\n res.send(`<!DOCTYPE html>\n<html>\n <head>\n <title>Redirect Dispatcher</title>\n <script>\n try {\n var state = /state=(.+?)(&.*)?$/.exec(window.location)[1]\n console.info('state', state);\n var name = JSON.parse(atob(state)).name;\n console.info('name', name);\n window.location.pathname = name;\n }\n catch(err) {\n console.warn(err);\n }\n </script>\n </head>\n <body>\n\n </body>\n</html>`);\n});\n\napp.use(`/cookies`, require(`./cookies`));\napp.use(`/json`, require(`./json`));\napp.use(`/form`, require(`./form`));\napp.use(`/files`, require(`./files`));\napp.use(`/jwt`, require(`@webex/test-helper-appid`).router);\n\napp.get(`/requires-basic-auth`, (req, res) => {\n if (req.headers.authorization === `Basic ${btoa(`basicuser:basicpass`)}`) {\n res.status(200).send().end();\n } else {\n res.status(403).send().end();\n }\n});\n\napp.get(`/requires-bearer-auth`, (req, res) => {\n if (req.headers.authorization === `Bearer bearertoken`) {\n res.status(200).send().end();\n } else {\n res.status(403).send().end();\n }\n});\n\napp.get(`/return-qs-as-object`, (req, res) => {\n res.status(200).json(req.query).end();\n});\n\napp.get(`/embargoed`, (req, res) => {\n res.status(451).end();\n});\n\n// Enable static routes\n// --------------------\n\nconst fixturePattern = `packages/{*,*/*}/test/automation/fixtures`;\n\nglob.sync(fixturePattern).forEach((fixturePath) => {\n const packageName = fixturePath.replace(`packages/`, ``).replace(`/test/automation/fixtures`, ``);\n\n app.get(`/${packageName}`, (req, res, next) => {\n if (!req.query.code) {\n next();\n\n return;\n }\n\n const state = JSON.parse(base64.decode(req.query.state));\n\n if (state.exchange === false) {\n next();\n\n return;\n }\n\n request(\n {\n /* eslint-disable camelcase */\n method: `POST`,\n uri: `${\n process.env.IDBROKER_BASE_URL || `https://idbroker.webex.com`\n }/idb/oauth2/v1/access_token`,\n form: {\n grant_type: `authorization_code`,\n redirect_uri: process.env.WEBEX_REDIRECT_URI,\n code: req.query.code,\n self_contained_token: true,\n },\n auth: {\n user: process.env.WEBEX_CLIENT_ID,\n pass: process.env.WEBEX_CLIENT_SECRET,\n sendImmediately: true,\n },\n /* eslint-enable camelcase */\n },\n (err, response) => {\n if (err) {\n console.warn(`Request to CI failed with non-HTTP error`);\n next(err);\n\n return;\n }\n if (response.statusCode >= 400) {\n console.warn(`Got unexpected response from CI`);\n next(new Error(response.body));\n\n return;\n }\n let redirect = url.parse(req.url, true);\n const qs = querystring.stringify({state: req.query.state, ...JSON.parse(response.body)});\n\n redirect = `${redirect.pathname}#${qs}`;\n\n console.info(`redirecting to ${redirect}`);\n res.redirect(redirect);\n }\n );\n });\n app.use(`/${packageName}`, express.static(fixturePath));\n});\n\napp.post(`/refresh`, bodyParser.json(), (req, res, next) => {\n if (!req.body.refresh_token) {\n next(new Error(`\\`refresh_token\\` is required`));\n\n return;\n }\n console.info(`Refreshing access token`);\n request(\n {\n /* eslint-disable camelcase */\n method: `POST`,\n uri: `${\n process.env.IDBROKER_BASE_URL || `https://idbroker.webex.com`\n }/idb/oauth2/v1/access_token`,\n form: {\n grant_type: `refresh_token`,\n redirect_uri: process.env.WEBEX_REDIRECT_URI,\n refresh_token: req.body.refresh_token,\n },\n auth: {\n user: process.env.WEBEX_CLIENT_ID,\n pass: process.env.WEBEX_CLIENT_SECRET,\n sendImmediately: true,\n },\n /* eslint-enable camelcase */\n },\n (err, response) => {\n if (err) {\n console.warn(`Request to CI failed with non-HTTP error`);\n next(err);\n\n return;\n }\n if (response.statusCode >= 400) {\n console.warn(`Got unexpected response from CI`);\n next(new Error(response.body));\n\n return;\n }\n\n console.info(`Returning new access token`);\n res.status(200).json(JSON.parse(response.body)).end();\n }\n );\n});\n\napp.use(express.static(path.resolve(__dirname, '..', `static`)));\n\n// Start the server\n// ----------------\n\nconst port = parseInt(process.env.SERVER_PORT, 10) || 8000;\n\nhttp.createServer(app).listen(port, () => {\n console.log(`Express server listening on port ${port}`);\n});\n\nconst fixtureport = parseInt(process.env.FIXTURE_PORT, 10) || 3000;\n\nhttp.createServer(app).listen(fixtureport, () => {\n console.log(`Express server listening on port ${fixtureport}`);\n});\n\nconst corsport = parseInt(process.env.CORS_PORT, 10) || 3002;\n\nhttp.createServer(app).listen(corsport, () => {\n console.log(`Express server listening on port ${corsport}`);\n});\n"],"mappings":"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"}
|
package/dist/json.js
CHANGED
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
/*!
|
|
4
4
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
5
5
|
*/
|
|
6
|
-
var bodyParser = require("body-parser");
|
|
7
6
|
|
|
7
|
+
var bodyParser = require("body-parser");
|
|
8
8
|
var express = require("express");
|
|
9
|
-
|
|
10
9
|
var reflect = require("./reflect");
|
|
11
|
-
/* eslint new-cap: [0] */
|
|
12
10
|
|
|
11
|
+
/* eslint new-cap: [0] */
|
|
12
|
+
var router = express.Router();
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
// Configure JSON processing
|
|
15
15
|
// -------------------------
|
|
16
16
|
|
|
17
17
|
router.use(bodyParser.json());
|
package/dist/json.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["bodyParser","require","express","reflect","router","Router","use","json","get","req","res","send","isObject","patch","post","put","module","exports"],"sources":["json.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\
|
|
1
|
+
{"version":3,"names":["bodyParser","require","express","reflect","router","Router","use","json","get","req","res","send","isObject","patch","post","put","module","exports"],"sources":["json.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nconst bodyParser = require(`body-parser`);\nconst express = require(`express`);\nconst reflect = require(`./reflect`);\n\n/* eslint new-cap: [0] */\nconst router = express.Router();\n\n// Configure JSON processing\n// -------------------------\n\nrouter.use(bodyParser.json());\n\nrouter.get(`/get`, (req, res) => {\n res.send({\n isObject: true,\n });\n});\n\nrouter.patch(`/set`, reflect);\nrouter.post(`/set`, reflect);\nrouter.put(`/set`, reflect);\n\nmodule.exports = router;\n"],"mappings":";;AAAA;AACA;AACA;;AAEA,IAAMA,UAAU,GAAGC,OAAO,eAAe;AACzC,IAAMC,OAAO,GAAGD,OAAO,WAAW;AAClC,IAAME,OAAO,GAAGF,OAAO,aAAa;;AAEpC;AACA,IAAMG,MAAM,GAAGF,OAAO,CAACG,MAAM,EAAE;;AAE/B;AACA;;AAEAD,MAAM,CAACE,GAAG,CAACN,UAAU,CAACO,IAAI,EAAE,CAAC;AAE7BH,MAAM,CAACI,GAAG,SAAS,UAACC,GAAG,EAAEC,GAAG,EAAK;EAC/BA,GAAG,CAACC,IAAI,CAAC;IACPC,QAAQ,EAAE;EACZ,CAAC,CAAC;AACJ,CAAC,CAAC;AAEFR,MAAM,CAACS,KAAK,SAASV,OAAO,CAAC;AAC7BC,MAAM,CAACU,IAAI,SAASX,OAAO,CAAC;AAC5BC,MAAM,CAACW,GAAG,SAASZ,OAAO,CAAC;AAE3Ba,MAAM,CAACC,OAAO,GAAGb,MAAM"}
|
package/dist/reflect.js
CHANGED
package/dist/reflect.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["reflect","req","res","set","headers","status","send","body","end","module","exports"],"sources":["reflect.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n
|
|
1
|
+
{"version":3,"names":["reflect","req","res","set","headers","status","send","body","end","module","exports"],"sources":["reflect.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/**\n * @param {http.IncomingMessage} req\n * @param {http.ServerResponse} res\n * @returns {undefined}\n */\nfunction reflect(req, res) {\n res.set(`content-type`, req.headers[`content-type`]);\n res.status(200).send(req.body).end();\n}\n\nmodule.exports = reflect;\n"],"mappings":";;AAAA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASA,OAAO,CAACC,GAAG,EAAEC,GAAG,EAAE;EACzBA,GAAG,CAACC,GAAG,iBAAiBF,GAAG,CAACG,OAAO,gBAAgB,CAAC;EACpDF,GAAG,CAACG,MAAM,CAAC,GAAG,CAAC,CAACC,IAAI,CAACL,GAAG,CAACM,IAAI,CAAC,CAACC,GAAG,EAAE;AACtC;AAEAC,MAAM,CAACC,OAAO,GAAGV,OAAO"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/test-helper-server",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.30",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"node": ">=16"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@webex/test-helper-appid": "3.0.0-beta.
|
|
16
|
+
"@webex/test-helper-appid": "3.0.0-beta.30",
|
|
17
17
|
"body-parser": "^1.19.0",
|
|
18
18
|
"browserify-middleware": "^8.1.1",
|
|
19
19
|
"btoa": "^1.2.1",
|
package/src/.eslintrc.yml
CHANGED
|
@@ -5,20 +5,20 @@ parserOptions:
|
|
|
5
5
|
blockBindings: false
|
|
6
6
|
modules: false
|
|
7
7
|
rules:
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
8
|
+
arrow-parens: off
|
|
9
|
+
arrow-spacing: off
|
|
10
|
+
constructor-super: off
|
|
11
|
+
generator-star-spacing: off
|
|
12
|
+
no-class-assign: off
|
|
13
|
+
no-const-assign: off
|
|
14
|
+
no-dupe-class-members: off
|
|
15
|
+
no-this-before-super: off
|
|
16
|
+
no-var: off
|
|
17
|
+
object-shorthand: off
|
|
18
|
+
prefer-arrow-callback: off
|
|
19
|
+
prefer-const: off
|
|
20
|
+
prefer-reflect: off
|
|
21
|
+
prefer-spread: off
|
|
22
|
+
prefer-template: off
|
|
23
|
+
quotes: off
|
|
24
|
+
require-yield: off
|
package/src/cookies.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
|
|
6
5
|
const cookieParser = require(`cookie-parser`);
|
|
7
6
|
const express = require(`express`);
|
|
8
7
|
|
|
@@ -21,8 +20,7 @@ router.get(`/set`, (req, res) => {
|
|
|
21
20
|
router.get(`/expect`, (req, res) => {
|
|
22
21
|
if (req.cookies.oreo === `double stuf`) {
|
|
23
22
|
res.status(200).send().end();
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
23
|
+
} else {
|
|
26
24
|
res.status(403).send().end();
|
|
27
25
|
}
|
|
28
26
|
});
|
package/src/files.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
|
|
6
5
|
const bodyParser = require(`body-parser`);
|
|
7
6
|
const express = require(`express`);
|
|
8
7
|
const fs = require(`fs`);
|
|
@@ -45,7 +44,7 @@ router.post(`/upload`, (req, res, next) => {
|
|
|
45
44
|
return res
|
|
46
45
|
.status(201)
|
|
47
46
|
.json({
|
|
48
|
-
loc: getFrom
|
|
47
|
+
loc: getFrom,
|
|
49
48
|
})
|
|
50
49
|
.end();
|
|
51
50
|
});
|
|
@@ -71,10 +70,7 @@ const upload = multer({storage});
|
|
|
71
70
|
|
|
72
71
|
[`put`, `patch`, `post`].forEach((methodName) => {
|
|
73
72
|
router[methodName](`/metadata`, upload.array(`files`), (req, res) => {
|
|
74
|
-
res
|
|
75
|
-
.status(200)
|
|
76
|
-
.json(req.files)
|
|
77
|
-
.end();
|
|
73
|
+
res.status(200).json(req.files).end();
|
|
78
74
|
});
|
|
79
75
|
});
|
|
80
76
|
|
package/src/form.js
CHANGED
package/src/index.js
CHANGED
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
/* eslint max-nested-callbacks: [2, 3] */
|
|
6
6
|
/* eslint no-console: [0] */
|
|
7
7
|
|
|
8
|
-
|
|
9
8
|
const btoa = require(`btoa`);
|
|
10
9
|
const bodyParser = require(`body-parser`);
|
|
11
10
|
const browserify = require(`browserify-middleware`);
|
|
@@ -28,20 +27,24 @@ const app = express();
|
|
|
28
27
|
// -----------------
|
|
29
28
|
|
|
30
29
|
if (process.env.DEBUG) {
|
|
31
|
-
app.use(
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
app.use(
|
|
31
|
+
morgan(`short`, {
|
|
32
|
+
immediate: true,
|
|
33
|
+
})
|
|
34
|
+
);
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
// Configure CORS
|
|
37
38
|
// --------------
|
|
38
39
|
|
|
39
|
-
app.use(
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
40
|
+
app.use(
|
|
41
|
+
cors({
|
|
42
|
+
credentials: true,
|
|
43
|
+
origin(o, callback) {
|
|
44
|
+
callback(null, true);
|
|
45
|
+
},
|
|
46
|
+
})
|
|
47
|
+
);
|
|
45
48
|
|
|
46
49
|
// Configure body processing
|
|
47
50
|
// -------------------------
|
|
@@ -75,13 +78,13 @@ glob.sync(appPattern).forEach((appjs) => {
|
|
|
75
78
|
|
|
76
79
|
// eslint-disable-next-line no-sync
|
|
77
80
|
fs.statSync(appjs);
|
|
78
|
-
app.use(
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
`envify`
|
|
83
|
-
|
|
84
|
-
|
|
81
|
+
app.use(
|
|
82
|
+
`/${packageName}/app.js`,
|
|
83
|
+
browserify(appjs, {
|
|
84
|
+
debug: true,
|
|
85
|
+
transform: [`babelify`, `envify`],
|
|
86
|
+
})
|
|
87
|
+
);
|
|
85
88
|
});
|
|
86
89
|
|
|
87
90
|
// Enable active routes
|
|
@@ -120,8 +123,7 @@ app.use(`/jwt`, require(`@webex/test-helper-appid`).router);
|
|
|
120
123
|
app.get(`/requires-basic-auth`, (req, res) => {
|
|
121
124
|
if (req.headers.authorization === `Basic ${btoa(`basicuser:basicpass`)}`) {
|
|
122
125
|
res.status(200).send().end();
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
126
|
+
} else {
|
|
125
127
|
res.status(403).send().end();
|
|
126
128
|
}
|
|
127
129
|
});
|
|
@@ -129,8 +131,7 @@ app.get(`/requires-basic-auth`, (req, res) => {
|
|
|
129
131
|
app.get(`/requires-bearer-auth`, (req, res) => {
|
|
130
132
|
if (req.headers.authorization === `Bearer bearertoken`) {
|
|
131
133
|
res.status(200).send().end();
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
+
} else {
|
|
134
135
|
res.status(403).send().end();
|
|
135
136
|
}
|
|
136
137
|
});
|
|
@@ -148,11 +149,8 @@ app.get(`/embargoed`, (req, res) => {
|
|
|
148
149
|
|
|
149
150
|
const fixturePattern = `packages/{*,*/*}/test/automation/fixtures`;
|
|
150
151
|
|
|
151
|
-
|
|
152
152
|
glob.sync(fixturePattern).forEach((fixturePath) => {
|
|
153
|
-
const packageName = fixturePath
|
|
154
|
-
.replace(`packages/`, ``)
|
|
155
|
-
.replace(`/test/automation/fixtures`, ``);
|
|
153
|
+
const packageName = fixturePath.replace(`packages/`, ``).replace(`/test/automation/fixtures`, ``);
|
|
156
154
|
|
|
157
155
|
app.get(`/${packageName}`, (req, res, next) => {
|
|
158
156
|
if (!req.query.code) {
|
|
@@ -169,23 +167,79 @@ glob.sync(fixturePattern).forEach((fixturePath) => {
|
|
|
169
167
|
return;
|
|
170
168
|
}
|
|
171
169
|
|
|
172
|
-
request(
|
|
170
|
+
request(
|
|
171
|
+
{
|
|
172
|
+
/* eslint-disable camelcase */
|
|
173
|
+
method: `POST`,
|
|
174
|
+
uri: `${
|
|
175
|
+
process.env.IDBROKER_BASE_URL || `https://idbroker.webex.com`
|
|
176
|
+
}/idb/oauth2/v1/access_token`,
|
|
177
|
+
form: {
|
|
178
|
+
grant_type: `authorization_code`,
|
|
179
|
+
redirect_uri: process.env.WEBEX_REDIRECT_URI,
|
|
180
|
+
code: req.query.code,
|
|
181
|
+
self_contained_token: true,
|
|
182
|
+
},
|
|
183
|
+
auth: {
|
|
184
|
+
user: process.env.WEBEX_CLIENT_ID,
|
|
185
|
+
pass: process.env.WEBEX_CLIENT_SECRET,
|
|
186
|
+
sendImmediately: true,
|
|
187
|
+
},
|
|
188
|
+
/* eslint-enable camelcase */
|
|
189
|
+
},
|
|
190
|
+
(err, response) => {
|
|
191
|
+
if (err) {
|
|
192
|
+
console.warn(`Request to CI failed with non-HTTP error`);
|
|
193
|
+
next(err);
|
|
194
|
+
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
if (response.statusCode >= 400) {
|
|
198
|
+
console.warn(`Got unexpected response from CI`);
|
|
199
|
+
next(new Error(response.body));
|
|
200
|
+
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
let redirect = url.parse(req.url, true);
|
|
204
|
+
const qs = querystring.stringify({state: req.query.state, ...JSON.parse(response.body)});
|
|
205
|
+
|
|
206
|
+
redirect = `${redirect.pathname}#${qs}`;
|
|
207
|
+
|
|
208
|
+
console.info(`redirecting to ${redirect}`);
|
|
209
|
+
res.redirect(redirect);
|
|
210
|
+
}
|
|
211
|
+
);
|
|
212
|
+
});
|
|
213
|
+
app.use(`/${packageName}`, express.static(fixturePath));
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
app.post(`/refresh`, bodyParser.json(), (req, res, next) => {
|
|
217
|
+
if (!req.body.refresh_token) {
|
|
218
|
+
next(new Error(`\`refresh_token\` is required`));
|
|
219
|
+
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
console.info(`Refreshing access token`);
|
|
223
|
+
request(
|
|
224
|
+
{
|
|
173
225
|
/* eslint-disable camelcase */
|
|
174
226
|
method: `POST`,
|
|
175
|
-
uri: `${
|
|
227
|
+
uri: `${
|
|
228
|
+
process.env.IDBROKER_BASE_URL || `https://idbroker.webex.com`
|
|
229
|
+
}/idb/oauth2/v1/access_token`,
|
|
176
230
|
form: {
|
|
177
|
-
grant_type: `
|
|
231
|
+
grant_type: `refresh_token`,
|
|
178
232
|
redirect_uri: process.env.WEBEX_REDIRECT_URI,
|
|
179
|
-
|
|
180
|
-
self_contained_token: true
|
|
233
|
+
refresh_token: req.body.refresh_token,
|
|
181
234
|
},
|
|
182
235
|
auth: {
|
|
183
236
|
user: process.env.WEBEX_CLIENT_ID,
|
|
184
237
|
pass: process.env.WEBEX_CLIENT_SECRET,
|
|
185
|
-
sendImmediately: true
|
|
186
|
-
}
|
|
238
|
+
sendImmediately: true,
|
|
239
|
+
},
|
|
187
240
|
/* eslint-enable camelcase */
|
|
188
|
-
},
|
|
241
|
+
},
|
|
242
|
+
(err, response) => {
|
|
189
243
|
if (err) {
|
|
190
244
|
console.warn(`Request to CI failed with non-HTTP error`);
|
|
191
245
|
next(err);
|
|
@@ -198,57 +252,11 @@ glob.sync(fixturePattern).forEach((fixturePath) => {
|
|
|
198
252
|
|
|
199
253
|
return;
|
|
200
254
|
}
|
|
201
|
-
let redirect = url.parse(req.url, true);
|
|
202
|
-
const qs = querystring.stringify(Object.assign({state: req.query.state}, JSON.parse(response.body)));
|
|
203
|
-
|
|
204
|
-
redirect = `${redirect.pathname}#${qs}`;
|
|
205
|
-
|
|
206
|
-
console.info(`redirecting to ${redirect}`);
|
|
207
|
-
res.redirect(redirect);
|
|
208
|
-
});
|
|
209
|
-
});
|
|
210
|
-
app.use(`/${packageName}`, express.static(fixturePath));
|
|
211
|
-
});
|
|
212
|
-
|
|
213
|
-
app.post(`/refresh`, bodyParser.json(), (req, res, next) => {
|
|
214
|
-
if (!req.body.refresh_token) {
|
|
215
|
-
next(new Error(`\`refresh_token\` is required`));
|
|
216
|
-
|
|
217
|
-
return;
|
|
218
|
-
}
|
|
219
|
-
console.info(`Refreshing access token`);
|
|
220
|
-
request({
|
|
221
|
-
/* eslint-disable camelcase */
|
|
222
|
-
method: `POST`,
|
|
223
|
-
uri: `${process.env.IDBROKER_BASE_URL || `https://idbroker.webex.com`}/idb/oauth2/v1/access_token`,
|
|
224
|
-
form: {
|
|
225
|
-
grant_type: `refresh_token`,
|
|
226
|
-
redirect_uri: process.env.WEBEX_REDIRECT_URI,
|
|
227
|
-
refresh_token: req.body.refresh_token
|
|
228
|
-
},
|
|
229
|
-
auth: {
|
|
230
|
-
user: process.env.WEBEX_CLIENT_ID,
|
|
231
|
-
pass: process.env.WEBEX_CLIENT_SECRET,
|
|
232
|
-
sendImmediately: true
|
|
233
|
-
}
|
|
234
|
-
/* eslint-enable camelcase */
|
|
235
|
-
}, (err, response) => {
|
|
236
|
-
if (err) {
|
|
237
|
-
console.warn(`Request to CI failed with non-HTTP error`);
|
|
238
|
-
next(err);
|
|
239
255
|
|
|
240
|
-
|
|
256
|
+
console.info(`Returning new access token`);
|
|
257
|
+
res.status(200).json(JSON.parse(response.body)).end();
|
|
241
258
|
}
|
|
242
|
-
|
|
243
|
-
console.warn(`Got unexpected response from CI`);
|
|
244
|
-
next(new Error(response.body));
|
|
245
|
-
|
|
246
|
-
return;
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
console.info(`Returning new access token`);
|
|
250
|
-
res.status(200).json(JSON.parse(response.body)).end();
|
|
251
|
-
});
|
|
259
|
+
);
|
|
252
260
|
});
|
|
253
261
|
|
|
254
262
|
app.use(express.static(path.resolve(__dirname, '..', `static`)));
|
package/src/json.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
|
|
6
5
|
const bodyParser = require(`body-parser`);
|
|
7
6
|
const express = require(`express`);
|
|
8
7
|
const reflect = require(`./reflect`);
|
|
@@ -17,7 +16,7 @@ router.use(bodyParser.json());
|
|
|
17
16
|
|
|
18
17
|
router.get(`/get`, (req, res) => {
|
|
19
18
|
res.send({
|
|
20
|
-
isObject: true
|
|
19
|
+
isObject: true,
|
|
21
20
|
});
|
|
22
21
|
});
|
|
23
22
|
|
package/src/redirect.html
CHANGED
|
@@ -3,19 +3,16 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<title>Redirect Dispatcher</title>
|
|
5
5
|
<script>
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
6
|
+
try {
|
|
7
|
+
var state = /state=(.+?)(&.*)?$/.exec(window.location)[1];
|
|
8
|
+
console.info('state', state);
|
|
9
|
+
var name = JSON.parse(atob(state)).name;
|
|
10
|
+
console.info('name', name);
|
|
11
|
+
window.location.pathname = name;
|
|
12
|
+
} catch (err) {
|
|
13
|
+
console.warn(err);
|
|
14
|
+
}
|
|
16
15
|
</script>
|
|
17
16
|
</head>
|
|
18
|
-
<body>
|
|
19
|
-
|
|
20
|
-
</body>
|
|
17
|
+
<body></body>
|
|
21
18
|
</html>
|