UNPKG

13.2 kBSource Map (JSON)View Raw
1{"version":3,"sources":["index.js"],"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","CISCOSPARK_REDIRECT_URI","self_contained_token","auth","user","CISCOSPARK_CLIENT_ID","pass","CISCOSPARK_CLIENT_SECRET","sendImmediately","err","response","console","warn","statusCode","Error","body","redirect","qs","stringify","pathname","info","static","post","refresh_token","resolve","__dirname","port","parseInt","SERVER_PORT","createServer","listen","log","fixtureport","FIXTURE_PORT","corsport","CORS_PORT"],"mappings":"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","file":"index.js","sourcesContent":["/*!\n * Copyright (c) 2015-2017 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/node_modules/{*,*/*}/test/automation/fixtures/app.js`;\n\nglob.sync(appPattern).forEach((appjs) => {\n const packageName = appjs\n .replace(`packages/node_modules/`, ``)\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(`@ciscospark/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/node_modules/{*,*/*}/test/automation/fixtures`;\n\n\nglob.sync(fixturePattern).forEach((fixturePath) => {\n const packageName = fixturePath\n .replace(`packages/node_modules/`, ``)\n .replace(`/test/automation/fixtures`, ``);\n\n app.get(`/${packageName}`, (req, res, next) => {\n if (!req.query.code) {\n next();\n return;\n }\n\n const state = JSON.parse(base64.decode(req.query.state));\n if (state.exchange === false) {\n next();\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.CISCOSPARK_REDIRECT_URI,\n code: req.query.code,\n self_contained_token: true\n },\n auth: {\n user: process.env.CISCOSPARK_CLIENT_ID,\n pass: process.env.CISCOSPARK_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 return;\n }\n if (response.statusCode >= 400) {\n console.warn(`Got unexpected response from CI`);\n next(new Error(response.body));\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 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 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.CISCOSPARK_REDIRECT_URI,\n refresh_token: req.body.refresh_token\n },\n auth: {\n user: process.env.CISCOSPARK_CLIENT_ID,\n pass: process.env.CISCOSPARK_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 return;\n }\n if (response.statusCode >= 400) {\n console.warn(`Got unexpected response from CI`);\n next(new Error(response.body));\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;\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;\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;\nhttp.createServer(app).listen(corsport, () => {\n console.log(`Express server listening on port ${corsport}`);\n});\n"]}
\No newline at end of file