Compare commits
15
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7c5e563aec | ||
|
|
18bf3e853a | ||
|
|
b78ec5bd9d | ||
|
|
8e295c23a4 | ||
|
|
634615346d | ||
|
|
98d6128375 | ||
|
|
24faa4690f | ||
|
|
7c33ae9c49 | ||
|
|
bf77474a11 | ||
|
|
8416b043ea | ||
|
|
0eb591b78a | ||
|
|
f53f92351e | ||
|
|
3fa3e2d89d | ||
|
|
a2015ee08b | ||
|
|
8fd919eede |
@@ -18,6 +18,10 @@
|
|||||||
"expose": "components",
|
"expose": "components",
|
||||||
"src": "src/core/components"
|
"src": "src/core/components"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"expose": "containers",
|
||||||
|
"src": "src/core/containers"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"expose": "core",
|
"expose": "core",
|
||||||
"src": "src/core"
|
"src": "src/core"
|
||||||
@@ -37,10 +41,6 @@
|
|||||||
{
|
{
|
||||||
"expose": "less",
|
"expose": "less",
|
||||||
"src": "src/less"
|
"src": "src/less"
|
||||||
},
|
|
||||||
{
|
|
||||||
"expose": "base",
|
|
||||||
"src": "npm:getbase/src/less/base"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ node_modules
|
|||||||
.nyc_output
|
.nyc_output
|
||||||
npm-debug.log*
|
npm-debug.log*
|
||||||
.eslintcache
|
.eslintcache
|
||||||
package-lock.json
|
|
||||||
*.iml
|
*.iml
|
||||||
selenium-debug.log
|
selenium-debug.log
|
||||||
test/e2e/db.json
|
test/e2e/db.json
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@ LABEL maintainer="fehguy"
|
|||||||
|
|
||||||
ENV VERSION "v2.2.10"
|
ENV VERSION "v2.2.10"
|
||||||
ENV FOLDER "swagger-ui-2.2.10"
|
ENV FOLDER "swagger-ui-2.2.10"
|
||||||
ENV API_URL "http://petstore.swagger.io/v2/swagger.json"
|
ENV API_URL "https://petstore.swagger.io/v2/swagger.json"
|
||||||
ENV API_URLS ""
|
ENV API_URLS ""
|
||||||
ENV API_KEY "**None**"
|
ENV API_KEY "**None**"
|
||||||
ENV OAUTH_CLIENT_ID "**None**"
|
ENV OAUTH_CLIENT_ID "**None**"
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ The OpenAPI Specification has undergone 5 revisions since initial creation in 20
|
|||||||
|
|
||||||
Swagger UI Version | Release Date | OpenAPI Spec compatibility | Notes
|
Swagger UI Version | Release Date | OpenAPI Spec compatibility | Notes
|
||||||
------------------ | ------------ | -------------------------- | -----
|
------------------ | ------------ | -------------------------- | -----
|
||||||
3.17.0 | 2018-05-26 | 2.0, 3.0 | [tag v3.17.0](https://github.com/swagger-api/swagger-ui/tree/v3.17.0)
|
3.17.1 | 2018-06-16 | 2.0, 3.0 | [tag v3.17.1](https://github.com/swagger-api/swagger-ui/tree/v3.17.1)
|
||||||
3.0.21 | 2017-07-26 | 2.0 | [tag v3.0.21](https://github.com/swagger-api/swagger-ui/tree/v3.0.21)
|
3.0.21 | 2017-07-26 | 2.0 | [tag v3.0.21](https://github.com/swagger-api/swagger-ui/tree/v3.0.21)
|
||||||
2.2.10 | 2017-01-04 | 1.1, 1.2, 2.0 | [tag v2.2.10](https://github.com/swagger-api/swagger-ui/tree/v2.2.10)
|
2.2.10 | 2017-01-04 | 1.1, 1.2, 2.0 | [tag v2.2.10](https://github.com/swagger-api/swagger-ui/tree/v2.2.10)
|
||||||
2.1.5 | 2016-07-20 | 1.1, 1.2, 2.0 | [tag v2.1.5](https://github.com/swagger-api/swagger-ui/tree/v2.1.5)
|
2.1.5 | 2016-07-20 | 1.1, 1.2, 2.0 | [tag v2.1.5](https://github.com/swagger-api/swagger-ui/tree/v2.1.5)
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
window["SwaggerUIStandalonePreset"] = window["swagger-ui-standalone-preset"]
|
window["SwaggerUIStandalonePreset"] = window["swagger-ui-standalone-preset"]
|
||||||
// Build a system
|
// Build a system
|
||||||
const ui = SwaggerUIBundle({
|
const ui = SwaggerUIBundle({
|
||||||
url: "http://petstore.swagger.io/v2/swagger.json",
|
url: "https://petstore.swagger.io/v2/swagger.json",
|
||||||
dom_id: '#swagger-ui',
|
dom_id: '#swagger-ui',
|
||||||
presets: [
|
presets: [
|
||||||
SwaggerUIBundle.presets.apis,
|
SwaggerUIBundle.presets.apis,
|
||||||
|
|||||||
Vendored
+1
-1
@@ -41,7 +41,7 @@
|
|||||||
|
|
||||||
// Build a system
|
// Build a system
|
||||||
const ui = SwaggerUIBundle({
|
const ui = SwaggerUIBundle({
|
||||||
url: "http://petstore.swagger.io/v2/swagger.json",
|
url: "https://petstore.swagger.io/v2/swagger.json",
|
||||||
dom_id: '#swagger-ui',
|
dom_id: '#swagger-ui',
|
||||||
deepLinking: true,
|
deepLinking: true,
|
||||||
presets: [
|
presets: [
|
||||||
|
|||||||
Vendored
+60
-33
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+2
-2
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+3
-3
@@ -38,10 +38,10 @@ fi
|
|||||||
if [[ -f $SWAGGER_JSON ]]; then
|
if [[ -f $SWAGGER_JSON ]]; then
|
||||||
cp -s $SWAGGER_JSON $NGINX_ROOT
|
cp -s $SWAGGER_JSON $NGINX_ROOT
|
||||||
REL_PATH="./$(basename $SWAGGER_JSON)"
|
REL_PATH="./$(basename $SWAGGER_JSON)"
|
||||||
sed -i "s|http://petstore.swagger.io/v2/swagger.json|$REL_PATH|g" $INDEX_FILE
|
sed -i "s|https://petstore.swagger.io/v2/swagger.json|$REL_PATH|g" $INDEX_FILE
|
||||||
sed -i "s|http://example.com/api|$REL_PATH|g" $INDEX_FILE
|
sed -i "s|http://example.com/api|$REL_PATH|g" $INDEX_FILE
|
||||||
else
|
else
|
||||||
sed -i "s|http://petstore.swagger.io/v2/swagger.json|$API_URL|g" $INDEX_FILE
|
sed -i "s|https://petstore.swagger.io/v2/swagger.json|$API_URL|g" $INDEX_FILE
|
||||||
sed -i "s|http://example.com/api|$API_URL|g" $INDEX_FILE
|
sed -i "s|http://example.com/api|$API_URL|g" $INDEX_FILE
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@ if [[ -n "$API_URLS" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# replace the PORT that nginx listens on if PORT is supplied
|
# replace the PORT that nginx listens on if PORT is supplied
|
||||||
if [[ -n "${PORT}" ]]; then
|
if [[ -n "${PORT}" ]]; then
|
||||||
sed -i "s|8080|${PORT}|g" /etc/nginx/nginx.conf
|
sed -i "s|8080|${PORT}|g" /etc/nginx/nginx.conf
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ const OperationsLayoutPlugin = () => {
|
|||||||
// Provide the plugin to Swagger-UI, and select OperationsLayout
|
// Provide the plugin to Swagger-UI, and select OperationsLayout
|
||||||
// as the layout for Swagger-UI
|
// as the layout for Swagger-UI
|
||||||
SwaggerUI({
|
SwaggerUI({
|
||||||
url: "http://petstore.swagger.io/v2/swagger.json",
|
url: "https://petstore.swagger.io/v2/swagger.json",
|
||||||
plugins: [ OperationsLayoutPlugin ],
|
plugins: [ OperationsLayoutPlugin ],
|
||||||
layout: "OperationsLayout"
|
layout: "OperationsLayout"
|
||||||
})
|
})
|
||||||
@@ -85,7 +85,7 @@ const AugmentingLayoutPlugin = () => {
|
|||||||
// Provide the plugin to Swagger-UI, and select AugmentingLayout
|
// Provide the plugin to Swagger-UI, and select AugmentingLayout
|
||||||
// as the layout for Swagger-UI
|
// as the layout for Swagger-UI
|
||||||
SwaggerUI({
|
SwaggerUI({
|
||||||
url: "http://petstore.swagger.io/v2/swagger.json",
|
url: "https://petstore.swagger.io/v2/swagger.json",
|
||||||
plugins: [ AugmentingLayoutPlugin ],
|
plugins: [ AugmentingLayoutPlugin ],
|
||||||
layout: "AugmentingLayout"
|
layout: "AugmentingLayout"
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ Script name | Description
|
|||||||
--- | ---
|
--- | ---
|
||||||
`build` | Build a new set of JS and CSS assets, and output them to `/dist`.
|
`build` | Build a new set of JS and CSS assets, and output them to `/dist`.
|
||||||
`build-bundle` | Build `swagger-ui-bundle.js` only.
|
`build-bundle` | Build `swagger-ui-bundle.js` only.
|
||||||
`build-core` | Build `swagger-ui.(js|css)` only.
|
`build-core` | Build `swagger-ui.(js\|css)` only.
|
||||||
`build-standalone` | Build `swagger-ui-standalone-preset.js` only.
|
`build-standalone` | Build `swagger-ui-standalone-preset.js` only.
|
||||||
|
|
||||||
### Testing
|
### Testing
|
||||||
|
|||||||
+1
-1
@@ -21,7 +21,7 @@ You can verify CORS support with one of three techniques:
|
|||||||
- Curl your API and inspect the headers. For instance:
|
- Curl your API and inspect the headers. For instance:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ curl -I "http://petstore.swagger.io/v2/swagger.json"
|
$ curl -I "https://petstore.swagger.io/v2/swagger.json"
|
||||||
HTTP/1.1 200 OK
|
HTTP/1.1 200 OK
|
||||||
Date: Sat, 31 Jan 2015 23:05:44 GMT
|
Date: Sat, 31 Jan 2015 23:05:44 GMT
|
||||||
Access-Control-Allow-Origin: *
|
Access-Control-Allow-Origin: *
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ you could do something like this:
|
|||||||
var SwaggerUIBundle = require('swagger-ui-dist').SwaggerUIBundle
|
var SwaggerUIBundle = require('swagger-ui-dist').SwaggerUIBundle
|
||||||
|
|
||||||
const ui = SwaggerUIBundle({
|
const ui = SwaggerUIBundle({
|
||||||
url: "http://petstore.swagger.io/v2/swagger.json",
|
url: "https://petstore.swagger.io/v2/swagger.json",
|
||||||
dom_id: '#swagger-ui',
|
dom_id: '#swagger-ui',
|
||||||
presets: [
|
presets: [
|
||||||
SwaggerUIBundle.presets.apis,
|
SwaggerUIBundle.presets.apis,
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ You can configure OAuth2 authorization by calling the `initOAuth` method.
|
|||||||
|
|
||||||
Config Name | Description
|
Config Name | Description
|
||||||
--- | ---
|
--- | ---
|
||||||
client_id | Default clientId. MUST be a string
|
clientId | Default clientId. MUST be a string
|
||||||
client_secret | Default clientSecret. MUST be a string
|
clientSecret | **🚨 Never use this parameter in your production environemnt. It exposes cruicial security information. This feature is intended for dev/test environments only. 🚨** <br>Default clientSecret. MUST be a string
|
||||||
realm | realm query parameter (for oauth1) added to `authorizationUrl` and `tokenUrl` . MUST be a string
|
realm | realm query parameter (for oauth1) added to `authorizationUrl` and `tokenUrl`. MUST be a string
|
||||||
appName | application name, displayed in authorization popup. MUST be a string
|
appName | application name, displayed in authorization popup. MUST be a string
|
||||||
scopeSeparator | scope separator for passing scopes, encoded before calling, default value is a space (encoded value `%20`). MUST be a string
|
scopeSeparator | scope separator for passing scopes, encoded before calling, default value is a space (encoded value `%20`). MUST be a string
|
||||||
additionalQueryStringParams | Additional query parameters added to `authorizationUrl` and `tokenUrl`. MUST be an object
|
additionalQueryStringParams | Additional query parameters added to `authorizationUrl` and `tokenUrl`. MUST be an object
|
||||||
|
|||||||
@@ -141,9 +141,7 @@ module.exports = function(rules, options) {
|
|||||||
"node_modules"
|
"node_modules"
|
||||||
],
|
],
|
||||||
extensions: [".web.js", ".js", ".jsx", ".json", ".less"],
|
extensions: [".web.js", ".js", ".jsx", ".json", ".less"],
|
||||||
alias: {
|
alias: {}
|
||||||
base: "getbase/src/less/base",
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
devtool: specialOptions.sourcemaps ? "nosource-source-map" : false,
|
devtool: specialOptions.sourcemaps ? "nosource-source-map" : false,
|
||||||
|
|||||||
Generated
+24338
File diff suppressed because it is too large
Load Diff
+34
-53
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "swagger-ui",
|
"name": "swagger-ui",
|
||||||
"version": "3.17.0",
|
"version": "3.17.1",
|
||||||
"main": "dist/swagger-ui.js",
|
"main": "dist/swagger-ui.js",
|
||||||
"repository": "git@github.com:swagger-api/swagger-ui.git",
|
"repository": "git@github.com:swagger-api/swagger-ui.git",
|
||||||
"contributors": [
|
"contributors": [
|
||||||
@@ -30,7 +30,6 @@
|
|||||||
"lint-fix": "eslint --cache --ext '.js,.jsx' src test --fix",
|
"lint-fix": "eslint --cache --ext '.js,.jsx' src test --fix",
|
||||||
"test": "npm run just-test-in-node && npm run lint-errors",
|
"test": "npm run just-test-in-node && npm run lint-errors",
|
||||||
"test-in-node": "npm run lint-errors && npm run just-test-in-node",
|
"test-in-node": "npm run lint-errors && npm run just-test-in-node",
|
||||||
"just-test": "karma start --config karma.conf.js",
|
|
||||||
"just-test-in-node": "mocha --require test/setup.js --recursive --compilers js:babel-core/register test/core test/components test/bugs test/swagger-ui-dist-package test/xss",
|
"just-test-in-node": "mocha --require test/setup.js --recursive --compilers js:babel-core/register test/core test/components test/bugs test/swagger-ui-dist-package test/xss",
|
||||||
"just-check-coverage": "nyc npm run just-test-in-node",
|
"just-check-coverage": "nyc npm run just-test-in-node",
|
||||||
"test-e2e": "sleep 3 && nightwatch test/e2e/scenarios/ --config test/e2e/nightwatch.json",
|
"test-e2e": "sleep 3 && nightwatch test/e2e/scenarios/ --config test/e2e/nightwatch.json",
|
||||||
@@ -45,59 +44,45 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@braintree/sanitize-url": "^2.0.2",
|
"@braintree/sanitize-url": "^2.0.2",
|
||||||
"base64-js": "^1.2.0",
|
"base64-js": "^1.2.0",
|
||||||
"brace": "0.7.0",
|
|
||||||
"classnames": "^2.2.5",
|
"classnames": "^2.2.5",
|
||||||
"commonmark": "^0.28.1",
|
"commonmark": "^0.28.1",
|
||||||
"core-js": "^2.5.1",
|
"core-js": "^2.5.1",
|
||||||
"css.escape": "1.5.1",
|
"css.escape": "1.5.1",
|
||||||
"deep-extend": "0.5.1",
|
"deep-extend": "0.5.1",
|
||||||
"dompurify": "^1.0.4",
|
"dompurify": "^1.0.4",
|
||||||
"expect": "1.20.2",
|
|
||||||
"getbase": "^2.8.2",
|
|
||||||
"ieee754": "^1.1.8",
|
"ieee754": "^1.1.8",
|
||||||
"immutable": "^3.x.x",
|
"immutable": "^3.x.x",
|
||||||
"js-file-download": "^0.4.1",
|
"js-file-download": "^0.4.1",
|
||||||
"js-yaml": "^3.5.5",
|
"js-yaml": "^3.5.5",
|
||||||
"lodash": "4.17.5",
|
"lodash": "^4.17.10",
|
||||||
"matcher": "^0.1.2",
|
"memoizee": "^0.4.12",
|
||||||
"memoizee": "0.4.1",
|
|
||||||
"promise-worker": "^1.1.1",
|
|
||||||
"prop-types": "^15.5.10",
|
"prop-types": "^15.5.10",
|
||||||
"react": "^15.6.2",
|
"react": "^15.6.2",
|
||||||
"react-addons-perf": "^15.4.0",
|
"react-addons-perf": "^15.4.0",
|
||||||
"react-addons-shallow-compare": "0.14.8",
|
|
||||||
"react-addons-test-utils": "^15.6.2",
|
|
||||||
"react-collapse": "^4.0.3",
|
"react-collapse": "^4.0.3",
|
||||||
"react-debounce-input": "^3.2.0",
|
"react-debounce-input": "^3.2.0",
|
||||||
"react-dom": "^15.6.2",
|
"react-dom": "^15.6.2",
|
||||||
"react-height": "^2.0.0",
|
|
||||||
"react-hot-loader": "1.3.1",
|
|
||||||
"react-immutable-proptypes": "2.1.0",
|
"react-immutable-proptypes": "2.1.0",
|
||||||
"react-immutable-pure-component": "^1.1.1",
|
"react-immutable-pure-component": "^1.1.1",
|
||||||
|
"react-inspector": "^2.3.0",
|
||||||
"react-markdown": "^2.5.0",
|
"react-markdown": "^2.5.0",
|
||||||
"react-motion": "^0.5.2",
|
"react-motion": "^0.5.2",
|
||||||
"react-object-inspector": "0.2.1",
|
|
||||||
"react-redux": "^4.x.x",
|
"react-redux": "^4.x.x",
|
||||||
"react-split-pane": "0.1.70",
|
"react-split-pane": "^0.1.77",
|
||||||
"redux": "^3.x.x",
|
"redux": "^3.x.x",
|
||||||
"redux-immutable": "3.0.8",
|
"redux-immutable": "3.0.8",
|
||||||
"redux-logger": "*",
|
|
||||||
"remarkable": "^1.7.1",
|
"remarkable": "^1.7.1",
|
||||||
"reselect": "2.5.3",
|
"reselect": "^3.0.1",
|
||||||
"scroll-to-element": "^2.0.0",
|
"serialize-error": "^2.1.0",
|
||||||
"serialize-error": "2.0.0",
|
|
||||||
"shallowequal": "0.2.2",
|
|
||||||
"swagger-client": "^3.8.5",
|
"swagger-client": "^3.8.5",
|
||||||
"url-parse": "^1.1.8",
|
"url-parse": "^1.1.8",
|
||||||
"whatwg-fetch": "0.11.1",
|
|
||||||
"worker-loader": "^0.7.1",
|
|
||||||
"xml": "1.0.1",
|
"xml": "1.0.1",
|
||||||
"xml-but-prettier": "^1.0.1",
|
"xml-but-prettier": "^1.0.1",
|
||||||
"yaml-js": "0.2.0",
|
"yaml-js": "^0.2.3",
|
||||||
"zenscroll": "4.0.1"
|
"zenscroll": "^4.0.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"autoprefixer": "7.1.1",
|
"autoprefixer": "^8.4.1",
|
||||||
"babel-core": "^6.23.1",
|
"babel-core": "^6.23.1",
|
||||||
"babel-eslint": "^7.1.1",
|
"babel-eslint": "^7.1.1",
|
||||||
"babel-loader": "^7.1.0",
|
"babel-loader": "^7.1.0",
|
||||||
@@ -109,52 +94,48 @@
|
|||||||
"babel-preset-react": "^6.23.0",
|
"babel-preset-react": "^6.23.0",
|
||||||
"babel-preset-stage-0": "^6.22.0",
|
"babel-preset-stage-0": "^6.22.0",
|
||||||
"babel-runtime": "^6.23.0",
|
"babel-runtime": "^6.23.0",
|
||||||
"chromedriver": "^2.30.1",
|
"chromedriver": "^2.38.3",
|
||||||
"copy-webpack-plugin": "^4.0.1",
|
"copy-webpack-plugin": "^4.0.1",
|
||||||
"css-loader": "0.28.4",
|
"css-loader": "^0.28.11",
|
||||||
"deep-extend": "^0.5.0",
|
"deepmerge": "^2.1.0",
|
||||||
"deepmerge": "^1.3.2",
|
|
||||||
"enzyme": "^2.7.1",
|
"enzyme": "^2.7.1",
|
||||||
"eslint": "^4.1.1",
|
"eslint": "^4.1.1",
|
||||||
"eslint-plugin-import": "^2.6.0",
|
"eslint-plugin-import": "^2.6.0",
|
||||||
"eslint-plugin-mocha": "^4.11.0",
|
"eslint-plugin-mocha": "^4.11.0",
|
||||||
"eslint-plugin-react": "~7.7.0",
|
"eslint-plugin-react": "~7.7.0",
|
||||||
"extract-text-webpack-plugin": "^2.1.2",
|
"expect": "^1.20.2",
|
||||||
"file-loader": "0.11.2",
|
"extract-text-webpack-plugin": "^3.0.2",
|
||||||
|
"file-loader": "^1.1.11",
|
||||||
"git-describe": "^4.0.1",
|
"git-describe": "^4.0.1",
|
||||||
"imports-loader": "0.7.1",
|
"imports-loader": "^0.8.0",
|
||||||
"jsdom": "^11.10.0",
|
"jsdom": "^11.10.0",
|
||||||
"json-loader": "0.5.4",
|
"json-loader": "^0.5.7",
|
||||||
"json-server": "^0.11.0",
|
"json-server": "^0.12.2",
|
||||||
"karma": "^1.7.0",
|
"less": "^3.0.2",
|
||||||
"karma-chrome-launcher": "^2.2.0",
|
"license-checker": "^19.0.0",
|
||||||
"karma-mocha": "^1.3.0",
|
"mocha": "^5.1.1",
|
||||||
"karma-sourcemap-loader": "^0.3.7",
|
|
||||||
"karma-webpack": "2.0.3",
|
|
||||||
"less": "2.7.2",
|
|
||||||
"license-checker": "^11.0.0",
|
|
||||||
"mocha": "^3.4.2",
|
|
||||||
"nightwatch": "^0.9.16",
|
"nightwatch": "^0.9.16",
|
||||||
"node-sass": "^4.5.0",
|
"node-sass": "^4.5.0",
|
||||||
"npm-run-all": "4.0.2",
|
"npm-run-all": "^4.1.2",
|
||||||
"null-loader": "0.1.1",
|
"null-loader": "0.1.1",
|
||||||
"nyc": "^11.3.0",
|
"nyc": "^11.3.0",
|
||||||
"open": "0.0.5",
|
"open": "0.0.5",
|
||||||
"postcss-loader": "2.0.6",
|
"postcss-loader": "^2.1.5",
|
||||||
"raw-loader": "0.5.1",
|
"raw-loader": "0.5.1",
|
||||||
"react-hot-loader": "^1.3.1",
|
|
||||||
"react-test-renderer": "^15.5.4",
|
"react-test-renderer": "^15.5.4",
|
||||||
"rimraf": "^2.6.0",
|
"rimraf": "^2.6.0",
|
||||||
"sass-loader": "^6.0.2",
|
"sass-loader": "^7.0.1",
|
||||||
"selenium-server-standalone-jar": "3.4.0",
|
"selenium-server-standalone-jar": "3.12.0",
|
||||||
"standard": "^10.0.2",
|
"standard": "^11.0.1",
|
||||||
"standard-loader": "^6.0.1",
|
"standard-loader": "^6.0.1",
|
||||||
"style-loader": "0.18.2",
|
"style-loader": "^0.21.0",
|
||||||
"tachyons-sass": "^4.9.2",
|
"tachyons-sass": "^4.9.2",
|
||||||
"uglifyjs-webpack-plugin": "^1.2.5",
|
"uglifyjs-webpack-plugin": "^1.2.5",
|
||||||
"url-loader": "0.5.9",
|
"url-loader": "^1.0.1",
|
||||||
"webpack": "^2.6.1",
|
"webpack": "^3.1.0",
|
||||||
"webpack-bundle-size-analyzer": "^2.5.0"
|
"webpack-bundle-size-analyzer": "^2.5.0",
|
||||||
|
"webpack-cli": "^2.0.4",
|
||||||
|
"worker-loader": "^1.1.1"
|
||||||
},
|
},
|
||||||
"config": {
|
"config": {
|
||||||
"deps_check_dir": ".deps_check"
|
"deps_check_dir": ".deps_check"
|
||||||
@@ -165,7 +146,7 @@
|
|||||||
"IE 11"
|
"IE 11"
|
||||||
],
|
],
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"webpack-dev-server": "2.5.0"
|
"webpack-dev-server": "^2.11.1"
|
||||||
},
|
},
|
||||||
"nyc": {
|
"nyc": {
|
||||||
"all": true,
|
"all": true,
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import React from "react"
|
|||||||
import PropTypes from "prop-types"
|
import PropTypes from "prop-types"
|
||||||
import { Collapse } from "react-collapse"
|
import { Collapse } from "react-collapse"
|
||||||
import { presets } from "react-motion"
|
import { presets } from "react-motion"
|
||||||
import ObjectInspector from "react-object-inspector"
|
import ObjectInspector from "react-inspector"
|
||||||
import Perf from "react-addons-perf"
|
import Perf from "react-addons-perf"
|
||||||
|
|
||||||
export default class Debug extends React.Component {
|
export default class Debug extends React.Component {
|
||||||
|
|||||||
@@ -6,67 +6,35 @@ export default class BaseLayout extends React.Component {
|
|||||||
static propTypes = {
|
static propTypes = {
|
||||||
errSelectors: PropTypes.object.isRequired,
|
errSelectors: PropTypes.object.isRequired,
|
||||||
errActions: PropTypes.object.isRequired,
|
errActions: PropTypes.object.isRequired,
|
||||||
specActions: PropTypes.object.isRequired,
|
|
||||||
specSelectors: PropTypes.object.isRequired,
|
specSelectors: PropTypes.object.isRequired,
|
||||||
oas3Selectors: PropTypes.object.isRequired,
|
oas3Selectors: PropTypes.object.isRequired,
|
||||||
oas3Actions: PropTypes.object.isRequired,
|
oas3Actions: PropTypes.object.isRequired,
|
||||||
layoutSelectors: PropTypes.object.isRequired,
|
|
||||||
layoutActions: PropTypes.object.isRequired,
|
|
||||||
getComponent: PropTypes.func.isRequired
|
getComponent: PropTypes.func.isRequired
|
||||||
}
|
}
|
||||||
|
|
||||||
onFilterChange =(e) => {
|
|
||||||
let {target: {value}} = e
|
|
||||||
this.props.layoutActions.updateFilter(value)
|
|
||||||
}
|
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
let {
|
let {specSelectors, getComponent} = this.props
|
||||||
specSelectors,
|
|
||||||
specActions,
|
|
||||||
getComponent,
|
|
||||||
layoutSelectors,
|
|
||||||
oas3Selectors,
|
|
||||||
oas3Actions
|
|
||||||
} = this.props
|
|
||||||
|
|
||||||
let info = specSelectors.info()
|
|
||||||
let url = specSelectors.url()
|
|
||||||
let basePath = specSelectors.basePath()
|
|
||||||
let host = specSelectors.host()
|
|
||||||
let securityDefinitions = specSelectors.securityDefinitions()
|
|
||||||
let externalDocs = specSelectors.externalDocs()
|
|
||||||
let schemes = specSelectors.schemes()
|
|
||||||
let servers = specSelectors.servers()
|
|
||||||
|
|
||||||
let SvgAssets = getComponent("SvgAssets")
|
let SvgAssets = getComponent("SvgAssets")
|
||||||
|
let InfoContainer = getComponent("InfoContainer", true)
|
||||||
let VersionPragmaFilter = getComponent("VersionPragmaFilter")
|
let VersionPragmaFilter = getComponent("VersionPragmaFilter")
|
||||||
let Info = getComponent("info")
|
|
||||||
let Operations = getComponent("operations", true)
|
let Operations = getComponent("operations", true)
|
||||||
let Models = getComponent("Models", true)
|
let Models = getComponent("Models", true)
|
||||||
let AuthorizeBtn = getComponent("authorizeBtn", true)
|
|
||||||
let Row = getComponent("Row")
|
let Row = getComponent("Row")
|
||||||
let Col = getComponent("Col")
|
let Col = getComponent("Col")
|
||||||
let Servers = getComponent("Servers")
|
let ServersContainer = getComponent("ServersContainer", true)
|
||||||
let Errors = getComponent("errors", true)
|
let Errors = getComponent("errors", true)
|
||||||
|
|
||||||
|
const SchemesContainer = getComponent("SchemesContainer", true)
|
||||||
|
const FilterContainer = getComponent("FilterContainer", true)
|
||||||
let isSwagger2 = specSelectors.isSwagger2()
|
let isSwagger2 = specSelectors.isSwagger2()
|
||||||
let isOAS3 = specSelectors.isOAS3()
|
let isOAS3 = specSelectors.isOAS3()
|
||||||
|
|
||||||
let isLoading = specSelectors.loadingStatus() === "loading"
|
|
||||||
let isFailed = specSelectors.loadingStatus() === "failed"
|
|
||||||
let filter = layoutSelectors.currentFilter()
|
|
||||||
|
|
||||||
let inputStyle = {}
|
|
||||||
if(isFailed) inputStyle.color = "red"
|
|
||||||
if(isLoading) inputStyle.color = "#aaa"
|
|
||||||
|
|
||||||
const Schemes = getComponent("schemes")
|
|
||||||
|
|
||||||
const isSpecEmpty = !specSelectors.specStr()
|
const isSpecEmpty = !specSelectors.specStr()
|
||||||
|
|
||||||
if(isSpecEmpty) {
|
if(isSpecEmpty) {
|
||||||
let loadingMessage
|
let loadingMessage
|
||||||
|
let isLoading = specSelectors.loadingStatus() === "loading"
|
||||||
if(isLoading) {
|
if(isLoading) {
|
||||||
loadingMessage = <div className="loading"></div>
|
loadingMessage = <div className="loading"></div>
|
||||||
} else {
|
} else {
|
||||||
@@ -88,53 +56,15 @@ export default class BaseLayout extends React.Component {
|
|||||||
<Errors/>
|
<Errors/>
|
||||||
<Row className="information-container">
|
<Row className="information-container">
|
||||||
<Col mobile={12}>
|
<Col mobile={12}>
|
||||||
{ info.count() ? (
|
<InfoContainer/>
|
||||||
<Info info={ info } url={ url } host={ host } basePath={ basePath } externalDocs={externalDocs} getComponent={getComponent}/>
|
|
||||||
) : null }
|
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
{ schemes && schemes.size || securityDefinitions ? (
|
|
||||||
<div className="scheme-container">
|
|
||||||
<Col className="schemes wrapper" mobile={12}>
|
|
||||||
{ schemes && schemes.size ? (
|
|
||||||
<Schemes
|
|
||||||
currentScheme={specSelectors.operationScheme()}
|
|
||||||
schemes={ schemes }
|
|
||||||
specActions={ specActions } />
|
|
||||||
) : null }
|
|
||||||
|
|
||||||
{ securityDefinitions ? (
|
<SchemesContainer/>
|
||||||
<AuthorizeBtn />
|
|
||||||
) : null }
|
|
||||||
</Col>
|
|
||||||
</div>
|
|
||||||
) : null }
|
|
||||||
|
|
||||||
{ servers && servers.size ? (
|
<ServersContainer/>
|
||||||
<div className="global-server-container">
|
|
||||||
<Col className="servers wrapper" mobile={12}>
|
|
||||||
<span className="servers-title">Server</span>
|
|
||||||
<Servers
|
|
||||||
servers={servers}
|
|
||||||
currentServer={oas3Selectors.selectedServer()}
|
|
||||||
setSelectedServer={oas3Actions.setSelectedServer}
|
|
||||||
setServerVariableValue={oas3Actions.setServerVariableValue}
|
|
||||||
getServerVariable={oas3Selectors.serverVariableValue}
|
|
||||||
getEffectiveServerValue={oas3Selectors.serverEffectiveValue}
|
|
||||||
/>
|
|
||||||
</Col>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
) : null}
|
<FilterContainer/>
|
||||||
|
|
||||||
{
|
|
||||||
filter === null || filter === false ? null :
|
|
||||||
<div className="filter-container">
|
|
||||||
<Col className="filter wrapper" mobile={12}>
|
|
||||||
<input className="operation-filter-input" placeholder="Filter by tag" type="text" onChange={this.onFilterChange} value={filter === true || filter === "true" ? "" : filter} disabled={isLoading} style={inputStyle} />
|
|
||||||
</Col>
|
|
||||||
</div>
|
|
||||||
}
|
|
||||||
|
|
||||||
<Row>
|
<Row>
|
||||||
<Col mobile={12} desktop={12} >
|
<Col mobile={12} desktop={12} >
|
||||||
|
|||||||
@@ -46,11 +46,10 @@ export default class ParamBody extends PureComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
updateValues = (props) => {
|
updateValues = (props) => {
|
||||||
let { specSelectors, pathMethod, param, isExecute, consumesValue="" } = props
|
let { param, isExecute, consumesValue="" } = props
|
||||||
let parameter = (specSelectors ? specSelectors.parameterWithMeta(pathMethod, param.get("name"), param.get("in")) : fromJS({})) || param
|
|
||||||
let isXml = /xml/i.test(consumesValue)
|
let isXml = /xml/i.test(consumesValue)
|
||||||
let isJson = /json/i.test(consumesValue)
|
let isJson = /json/i.test(consumesValue)
|
||||||
let paramValue = isXml ? parameter.get("value_xml") : parameter.get("value")
|
let paramValue = isXml ? param.get("value_xml") : param.get("value")
|
||||||
|
|
||||||
if ( paramValue !== undefined ) {
|
if ( paramValue !== undefined ) {
|
||||||
let val = !paramValue && isJson ? "{}" : paramValue
|
let val = !paramValue && isJson ? "{}" : paramValue
|
||||||
@@ -79,7 +78,7 @@ export default class ParamBody extends PureComponent {
|
|||||||
this._onChange(value, isXml)
|
this._onChange(value, isXml)
|
||||||
}
|
}
|
||||||
|
|
||||||
_onChange = (val, isXml) => { (this.props.onChange || NOOP)(this.props.param, val, isXml) }
|
_onChange = (val, isXml) => { (this.props.onChange || NOOP)(val, isXml) }
|
||||||
|
|
||||||
handleOnChange = e => {
|
handleOnChange = e => {
|
||||||
const {consumesValue} = this.props
|
const {consumesValue} = this.props
|
||||||
@@ -107,7 +106,7 @@ export default class ParamBody extends PureComponent {
|
|||||||
const HighlightCode = getComponent("highlightCode")
|
const HighlightCode = getComponent("highlightCode")
|
||||||
const ContentType = getComponent("contentType")
|
const ContentType = getComponent("contentType")
|
||||||
// for domains where specSelectors not passed
|
// for domains where specSelectors not passed
|
||||||
let parameter = specSelectors ? specSelectors.parameterWithMeta(pathMethod, param.get("name"), param.get("in")) : param
|
let parameter = specSelectors ? specSelectors.parameterWithMetaByIdentity(pathMethod, param) : param
|
||||||
let errors = parameter.get("errors", List())
|
let errors = parameter.get("errors", List())
|
||||||
let consumesValue = specSelectors.contentTypeValues(pathMethod).get("requestContentType")
|
let consumesValue = specSelectors.contentTypeValues(pathMethod).get("requestContentType")
|
||||||
let consumes = this.props.consumes && this.props.consumes.size ? this.props.consumes : ParamBody.defaultProp.consumes
|
let consumes = this.props.consumes && this.props.consumes.size ? this.props.consumes : ParamBody.defaultProp.consumes
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ export default class ParameterRow extends Component {
|
|||||||
static propTypes = {
|
static propTypes = {
|
||||||
onChange: PropTypes.func.isRequired,
|
onChange: PropTypes.func.isRequired,
|
||||||
param: PropTypes.object.isRequired,
|
param: PropTypes.object.isRequired,
|
||||||
|
rawParam: PropTypes.object.isRequired,
|
||||||
getComponent: PropTypes.func.isRequired,
|
getComponent: PropTypes.func.isRequired,
|
||||||
fn: PropTypes.object.isRequired,
|
fn: PropTypes.object.isRequired,
|
||||||
isExecute: PropTypes.bool,
|
isExecute: PropTypes.bool,
|
||||||
@@ -30,7 +31,7 @@ export default class ParameterRow extends Component {
|
|||||||
let { isOAS3 } = specSelectors
|
let { isOAS3 } = specSelectors
|
||||||
|
|
||||||
let example = param.get("example")
|
let example = param.get("example")
|
||||||
let parameter = specSelectors.parameterWithMeta(pathMethod, param.get("name"), param.get("in")) || param
|
let parameter = specSelectors.parameterWithMetaByIdentity(pathMethod, param) || param
|
||||||
let enumValue
|
let enumValue
|
||||||
|
|
||||||
if(isOAS3()) {
|
if(isOAS3()) {
|
||||||
@@ -56,9 +57,9 @@ export default class ParameterRow extends Component {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onChangeWrapper = (value) => {
|
onChangeWrapper = (value, isXml = false) => {
|
||||||
let { onChange, param } = this.props
|
let { onChange, rawParam } = this.props
|
||||||
return onChange(param, value)
|
return onChange(rawParam, value, isXml)
|
||||||
}
|
}
|
||||||
|
|
||||||
setDefaultValue = () => {
|
setDefaultValue = () => {
|
||||||
@@ -72,7 +73,7 @@ export default class ParameterRow extends Component {
|
|||||||
|
|
||||||
let defaultValue = schema.get("default")
|
let defaultValue = schema.get("default")
|
||||||
let xExampleValue = param.get("x-example") // Swagger 2 only
|
let xExampleValue = param.get("x-example") // Swagger 2 only
|
||||||
let parameter = specSelectors.parameterWithMeta(pathMethod, param.get("name"), param.get("in"))
|
let parameter = specSelectors.parameterWithMetaByIdentity(pathMethod, param)
|
||||||
let value = parameter ? parameter.get("value") : ""
|
let value = parameter ? parameter.get("value") : ""
|
||||||
|
|
||||||
if( param.get("in") !== "body" ) {
|
if( param.get("in") !== "body" ) {
|
||||||
@@ -85,7 +86,7 @@ export default class ParameterRow extends Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
let {param, onChange, getComponent, getConfigs, isExecute, fn, onChangeConsumes, specSelectors, pathMethod, specPath} = this.props
|
let {param, rawParam, getComponent, getConfigs, isExecute, fn, onChangeConsumes, specSelectors, pathMethod, specPath} = this.props
|
||||||
|
|
||||||
let { isOAS3 } = specSelectors
|
let { isOAS3 } = specSelectors
|
||||||
|
|
||||||
@@ -101,7 +102,7 @@ export default class ParameterRow extends Component {
|
|||||||
param={param}
|
param={param}
|
||||||
consumes={ specSelectors.operationConsumes(pathMethod) }
|
consumes={ specSelectors.operationConsumes(pathMethod) }
|
||||||
consumesValue={ specSelectors.contentTypeValues(pathMethod).get("requestContentType") }
|
consumesValue={ specSelectors.contentTypeValues(pathMethod).get("requestContentType") }
|
||||||
onChange={onChange}
|
onChange={this.onChangeWrapper}
|
||||||
onChangeConsumes={onChangeConsumes}
|
onChangeConsumes={onChangeConsumes}
|
||||||
isExecute={ isExecute }
|
isExecute={ isExecute }
|
||||||
specSelectors={ specSelectors }
|
specSelectors={ specSelectors }
|
||||||
@@ -112,7 +113,7 @@ export default class ParameterRow extends Component {
|
|||||||
const Markdown = getComponent("Markdown")
|
const Markdown = getComponent("Markdown")
|
||||||
const ParameterExt = getComponent("ParameterExt")
|
const ParameterExt = getComponent("ParameterExt")
|
||||||
|
|
||||||
let paramWithMeta = specSelectors.parameterWithMeta(pathMethod, param.get("name"), param.get("in"))
|
let paramWithMeta = specSelectors.parameterWithMetaByIdentity(pathMethod, rawParam)
|
||||||
let format = param.get("format")
|
let format = param.get("format")
|
||||||
let schema = isOAS3 && isOAS3() ? param.get("schema") : param
|
let schema = isOAS3 && isOAS3() ? param.get("schema") : param
|
||||||
let type = schema.get("type")
|
let type = schema.get("type")
|
||||||
|
|||||||
@@ -36,11 +36,11 @@ export default class Parameters extends Component {
|
|||||||
|
|
||||||
onChange = ( param, value, isXml ) => {
|
onChange = ( param, value, isXml ) => {
|
||||||
let {
|
let {
|
||||||
specActions: { changeParam },
|
specActions: { changeParamByIdentity },
|
||||||
onChangeKey,
|
onChangeKey,
|
||||||
} = this.props
|
} = this.props
|
||||||
|
|
||||||
changeParam( onChangeKey, param.get("name"), param.get("in"), value, isXml)
|
changeParamByIdentity(onChangeKey, param, value, isXml)
|
||||||
}
|
}
|
||||||
|
|
||||||
onChangeConsumesWrapper = ( val ) => {
|
onChangeConsumesWrapper = ( val ) => {
|
||||||
@@ -101,7 +101,8 @@ export default class Parameters extends Component {
|
|||||||
specPath={specPath.push(i.toString())}
|
specPath={specPath.push(i.toString())}
|
||||||
getComponent={ getComponent }
|
getComponent={ getComponent }
|
||||||
getConfigs={ getConfigs }
|
getConfigs={ getConfigs }
|
||||||
param={ specSelectors.parameterWithMeta(pathMethod, parameter.get("name"), parameter.get("in")) }
|
rawParam={ parameter }
|
||||||
|
param={ specSelectors.parameterWithMetaByIdentity(pathMethod, parameter) }
|
||||||
key={ `${parameter.get( "in" )}.${parameter.get("name")}` }
|
key={ `${parameter.get( "in" )}.${parameter.get("name")}` }
|
||||||
onChange={ this.onChange }
|
onChange={ this.onChange }
|
||||||
onChangeConsumes={this.onChangeConsumesWrapper}
|
onChangeConsumes={this.onChangeConsumesWrapper}
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
import React from "react"
|
||||||
|
import PropTypes from "prop-types"
|
||||||
|
|
||||||
|
export default class FilterContainer extends React.Component {
|
||||||
|
|
||||||
|
static propTypes = {
|
||||||
|
specSelectors: PropTypes.object.isRequired,
|
||||||
|
layoutSelectors: PropTypes.object.isRequired,
|
||||||
|
layoutActions: PropTypes.object.isRequired,
|
||||||
|
getComponent: PropTypes.func.isRequired,
|
||||||
|
}
|
||||||
|
|
||||||
|
onFilterChange = (e) => {
|
||||||
|
const {target: {value}} = e
|
||||||
|
this.props.layoutActions.updateFilter(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
render () {
|
||||||
|
const {specSelectors, layoutSelectors, getComponent} = this.props
|
||||||
|
const Col = getComponent("Col")
|
||||||
|
|
||||||
|
const isLoading = specSelectors.loadingStatus() === "loading"
|
||||||
|
const isFailed = specSelectors.loadingStatus() === "failed"
|
||||||
|
const filter = layoutSelectors.currentFilter()
|
||||||
|
|
||||||
|
const inputStyle = {}
|
||||||
|
if (isFailed) inputStyle.color = "red"
|
||||||
|
if (isLoading) inputStyle.color = "#aaa"
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{filter === null || filter === false ? null :
|
||||||
|
<div className="filter-container">
|
||||||
|
<Col className="filter wrapper" mobile={12}>
|
||||||
|
<input className="operation-filter-input" placeholder="Filter by tag" type="text"
|
||||||
|
onChange={this.onFilterChange} value={filter === true || filter === "true" ? "" : filter}
|
||||||
|
disabled={isLoading} style={inputStyle}/>
|
||||||
|
</Col>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
import React from "react"
|
||||||
|
import PropTypes from "prop-types"
|
||||||
|
|
||||||
|
export default class InfoContainer extends React.Component {
|
||||||
|
|
||||||
|
static propTypes = {
|
||||||
|
specActions: PropTypes.object.isRequired,
|
||||||
|
specSelectors: PropTypes.object.isRequired,
|
||||||
|
getComponent: PropTypes.func.isRequired,
|
||||||
|
}
|
||||||
|
|
||||||
|
render () {
|
||||||
|
const {specSelectors, getComponent} = this.props
|
||||||
|
|
||||||
|
const info = specSelectors.info()
|
||||||
|
const url = specSelectors.url()
|
||||||
|
const basePath = specSelectors.basePath()
|
||||||
|
const host = specSelectors.host()
|
||||||
|
const externalDocs = specSelectors.externalDocs()
|
||||||
|
|
||||||
|
const Info = getComponent("info")
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{info && info.count() ? (
|
||||||
|
<Info info={info} url={url} host={host} basePath={basePath} externalDocs={externalDocs}
|
||||||
|
getComponent={getComponent}/>
|
||||||
|
) : null}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
import React from "react"
|
||||||
|
import PropTypes from "prop-types"
|
||||||
|
|
||||||
|
export default class SchemesContainer extends React.Component {
|
||||||
|
|
||||||
|
static propTypes = {
|
||||||
|
specActions: PropTypes.object.isRequired,
|
||||||
|
specSelectors: PropTypes.object.isRequired,
|
||||||
|
getComponent: PropTypes.func.isRequired,
|
||||||
|
}
|
||||||
|
|
||||||
|
render () {
|
||||||
|
const {specActions, specSelectors, getComponent} = this.props
|
||||||
|
const currentScheme = specSelectors.operationScheme()
|
||||||
|
const schemes = specSelectors.schemes()
|
||||||
|
const securityDefinitions = specSelectors.securityDefinitions()
|
||||||
|
|
||||||
|
const Col = getComponent("Col")
|
||||||
|
const AuthorizeBtn = getComponent("authorizeBtn", true)
|
||||||
|
const Schemes = getComponent("schemes")
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{schemes && schemes.size || securityDefinitions ? (
|
||||||
|
<div className="scheme-container">
|
||||||
|
<Col className="schemes wrapper" mobile={12}>
|
||||||
|
{schemes && schemes.size ? (
|
||||||
|
<Schemes
|
||||||
|
currentScheme={currentScheme}
|
||||||
|
schemes={schemes}
|
||||||
|
specActions={specActions}
|
||||||
|
/>
|
||||||
|
) : null}
|
||||||
|
{securityDefinitions ? (
|
||||||
|
<AuthorizeBtn/>
|
||||||
|
) : null}
|
||||||
|
</Col>
|
||||||
|
</div>
|
||||||
|
) : null}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
-7
@@ -131,9 +131,6 @@ module.exports = function SwaggerUI(opts) {
|
|||||||
var system = store.getSystem()
|
var system = store.getSystem()
|
||||||
|
|
||||||
const downloadSpec = (fetchedConfig) => {
|
const downloadSpec = (fetchedConfig) => {
|
||||||
if(typeof constructorConfig !== "object") {
|
|
||||||
return system
|
|
||||||
}
|
|
||||||
let localConfig = system.specSelectors.getLocalConfig ? system.specSelectors.getLocalConfig() : {}
|
let localConfig = system.specSelectors.getLocalConfig ? system.specSelectors.getLocalConfig() : {}
|
||||||
let mergedConfig = deepExtend({}, localConfig, constructorConfig, fetchedConfig || {}, queryConfig)
|
let mergedConfig = deepExtend({}, localConfig, constructorConfig, fetchedConfig || {}, queryConfig)
|
||||||
|
|
||||||
@@ -143,10 +140,7 @@ module.exports = function SwaggerUI(opts) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
store.setConfigs(mergedConfig)
|
store.setConfigs(mergedConfig)
|
||||||
|
system.configsActions.loaded()
|
||||||
if(system.configsActions) {
|
|
||||||
system.configsActions.loaded()
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fetchedConfig !== null) {
|
if (fetchedConfig !== null) {
|
||||||
if (!queryConfig.url && typeof mergedConfig.spec === "object" && Object.keys(mergedConfig.spec).length) {
|
if (!queryConfig.url && typeof mergedConfig.spec === "object" && Object.keys(mergedConfig.spec).length) {
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import Callbacks from "./callbacks"
|
|||||||
import RequestBody from "./request-body"
|
import RequestBody from "./request-body"
|
||||||
import OperationLink from "./operation-link.jsx"
|
import OperationLink from "./operation-link.jsx"
|
||||||
import Servers from "./servers"
|
import Servers from "./servers"
|
||||||
|
import ServersContainer from "./servers-container"
|
||||||
import RequestBodyEditor from "./request-body-editor"
|
import RequestBodyEditor from "./request-body-editor"
|
||||||
import HttpAuth from "./http-auth"
|
import HttpAuth from "./http-auth"
|
||||||
import OperationServers from "./operation-servers"
|
import OperationServers from "./operation-servers"
|
||||||
@@ -11,6 +12,7 @@ export default {
|
|||||||
HttpAuth,
|
HttpAuth,
|
||||||
RequestBody,
|
RequestBody,
|
||||||
Servers,
|
Servers,
|
||||||
|
ServersContainer,
|
||||||
RequestBodyEditor,
|
RequestBodyEditor,
|
||||||
OperationServers,
|
OperationServers,
|
||||||
operationLink: OperationLink
|
operationLink: OperationLink
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
import React from "react"
|
||||||
|
import PropTypes from "prop-types"
|
||||||
|
|
||||||
|
export default class ServersContainer extends React.Component {
|
||||||
|
|
||||||
|
static propTypes = {
|
||||||
|
specSelectors: PropTypes.object.isRequired,
|
||||||
|
oas3Selectors: PropTypes.object.isRequired,
|
||||||
|
oas3Actions: PropTypes.object.isRequired,
|
||||||
|
getComponent: PropTypes.func.isRequired,
|
||||||
|
}
|
||||||
|
|
||||||
|
render () {
|
||||||
|
const {specSelectors, oas3Selectors, oas3Actions, getComponent} = this.props
|
||||||
|
|
||||||
|
const servers = specSelectors.servers()
|
||||||
|
|
||||||
|
const Col = getComponent("Col")
|
||||||
|
const Servers = getComponent("Servers")
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{servers && servers.size ? (
|
||||||
|
<div className="global-server-container">
|
||||||
|
<Col className="servers wrapper" mobile={12}>
|
||||||
|
<span className="servers-title">Server</span>
|
||||||
|
<Servers
|
||||||
|
servers={servers}
|
||||||
|
currentServer={oas3Selectors.selectedServer()}
|
||||||
|
setSelectedServer={oas3Actions.setSelectedServer}
|
||||||
|
setServerVariableValue={oas3Actions.setServerVariableValue}
|
||||||
|
getServerVariable={oas3Selectors.serverVariableValue}
|
||||||
|
getEffectiveServerValue={oas3Selectors.serverEffectiveValue}
|
||||||
|
/>
|
||||||
|
</Col>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
) : null}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -47,11 +47,11 @@ class Parameters extends Component {
|
|||||||
|
|
||||||
onChange = ( param, value, isXml ) => {
|
onChange = ( param, value, isXml ) => {
|
||||||
let {
|
let {
|
||||||
specActions: { changeParam },
|
specActions: { changeParamByIdentity },
|
||||||
onChangeKey,
|
onChangeKey,
|
||||||
} = this.props
|
} = this.props
|
||||||
|
|
||||||
changeParam( onChangeKey, param.get("name"), param.get("in"), value, isXml)
|
changeParamByIdentity( onChangeKey, param, value, isXml)
|
||||||
}
|
}
|
||||||
|
|
||||||
onChangeConsumesWrapper = ( val ) => {
|
onChangeConsumesWrapper = ( val ) => {
|
||||||
@@ -145,7 +145,8 @@ class Parameters extends Component {
|
|||||||
getComponent={ getComponent }
|
getComponent={ getComponent }
|
||||||
specPath={specPath.push(i)}
|
specPath={specPath.push(i)}
|
||||||
getConfigs={ getConfigs }
|
getConfigs={ getConfigs }
|
||||||
param={ parameter }
|
rawParam={ parameter }
|
||||||
|
param={ specSelectors.parameterWithMetaByIdentity(pathMethod, parameter) }
|
||||||
key={ parameter.get( "name" ) }
|
key={ parameter.get( "name" ) }
|
||||||
onChange={ this.onChange }
|
onChange={ this.onChange }
|
||||||
onChangeConsumes={this.onChangeConsumesWrapper}
|
onChangeConsumes={this.onChangeConsumesWrapper}
|
||||||
|
|||||||
@@ -234,6 +234,13 @@ export function changeParam( path, paramName, paramIn, value, isXml ){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function changeParamByIdentity( pathMethod, param, value, isXml ){
|
||||||
|
return {
|
||||||
|
type: UPDATE_PARAM,
|
||||||
|
payload:{ path: pathMethod, param, value, isXml }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export const updateResolvedSubtree = (path, value) => {
|
export const updateResolvedSubtree = (path, value) => {
|
||||||
return {
|
return {
|
||||||
type: UPDATE_RESOLVED_SUBTREE,
|
type: UPDATE_RESOLVED_SUBTREE,
|
||||||
|
|||||||
@@ -51,12 +51,21 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
[UPDATE_PARAM]: ( state, {payload} ) => {
|
[UPDATE_PARAM]: ( state, {payload} ) => {
|
||||||
let { path: pathMethod, paramName, paramIn, value, isXml } = payload
|
let { path: pathMethod, paramName, paramIn, param, value, isXml } = payload
|
||||||
|
|
||||||
|
let paramKey
|
||||||
|
|
||||||
|
// `hashCode` is an Immutable.js Map method
|
||||||
|
if(param && param.hashCode && !paramIn && !paramName) {
|
||||||
|
paramKey = `${param.get("name")}.${param.get("in")}.hash-${param.hashCode()}`
|
||||||
|
} else {
|
||||||
|
paramKey = `${paramName}.${paramIn}`
|
||||||
|
}
|
||||||
|
|
||||||
const valueKey = isXml ? "value_xml" : "value"
|
const valueKey = isXml ? "value_xml" : "value"
|
||||||
|
|
||||||
return state.setIn(
|
return state.setIn(
|
||||||
["meta", "paths", ...pathMethod, "parameters", `${paramName}.${paramIn}`, valueKey],
|
["meta", "paths", ...pathMethod, "parameters", paramKey, valueKey],
|
||||||
value
|
value
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -294,34 +294,42 @@ export const allowTryItOutFor = () => {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
export const operationWithMeta = (state, path, method) => {
|
export const parameterWithMetaByIdentity = (state, pathMethod, param) => {
|
||||||
const op = specJsonWithResolvedSubtrees(state).getIn(["paths", path, method], Map())
|
const opParams = specJsonWithResolvedSubtrees(state).getIn(["paths", ...pathMethod, "parameters"], OrderedMap())
|
||||||
const meta = state.getIn(["meta", "paths", path, method], Map())
|
const metaParams = state.getIn(["meta", "paths", ...pathMethod, "parameters"], OrderedMap())
|
||||||
|
|
||||||
const mergedParams = op.get("parameters", List()).map((param) => {
|
const mergedParams = opParams.map((currentParam) => {
|
||||||
return Map().merge(
|
const nameInKeyedMeta = metaParams.get(`${param.get("name")}.${param.get("in")}`)
|
||||||
param,
|
const hashKeyedMeta = metaParams.get(`${param.get("name")}.${param.get("in")}.hash-${param.hashCode()}`)
|
||||||
meta.getIn(["parameters", `${param.get("name")}.${param.get("in")}`])
|
return OrderedMap().merge(
|
||||||
|
currentParam,
|
||||||
|
nameInKeyedMeta,
|
||||||
|
hashKeyedMeta
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
return Map()
|
return mergedParams.find(curr => curr.get("in") === param.get("in") && curr.get("name") === param.get("name"), OrderedMap())
|
||||||
.merge(op, meta)
|
|
||||||
.set("parameters", mergedParams)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const parameterWithMeta = (state, pathMethod, paramName, paramIn) => {
|
|
||||||
const opParams = specJsonWithResolvedSubtrees(state).getIn(["paths", ...pathMethod, "parameters"], Map())
|
|
||||||
const metaParams = state.getIn(["meta", "paths", ...pathMethod, "parameters"], Map())
|
|
||||||
|
|
||||||
const mergedParams = opParams.map((param) => {
|
export const parameterWithMeta = (state, pathMethod, paramName, paramIn) => {
|
||||||
return Map().merge(
|
const opParams = specJsonWithResolvedSubtrees(state).getIn(["paths", ...pathMethod, "parameters"], OrderedMap())
|
||||||
param,
|
const currentParam = opParams.find(param => param.get("in") === paramIn && param.get("name") === paramName, OrderedMap())
|
||||||
metaParams.get(`${param.get("name")}.${param.get("in")}`)
|
|
||||||
)
|
return parameterWithMetaByIdentity(state, pathMethod, currentParam)
|
||||||
|
}
|
||||||
|
|
||||||
|
export const operationWithMeta = (state, path, method) => {
|
||||||
|
const op = specJsonWithResolvedSubtrees(state).getIn(["paths", path, method], OrderedMap())
|
||||||
|
const meta = state.getIn(["meta", "paths", path, method], OrderedMap())
|
||||||
|
|
||||||
|
const mergedParams = op.get("parameters", List()).map((param) => {
|
||||||
|
return parameterWithMetaByIdentity(state, [path, method], param)
|
||||||
})
|
})
|
||||||
|
|
||||||
return mergedParams.find(param => param.get("in") === paramIn && param.get("name") === paramName, Map())
|
return OrderedMap()
|
||||||
|
.merge(op, meta)
|
||||||
|
.set("parameters", mergedParams)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the parameter value by parameter name
|
// Get the parameter value by parameter name
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ export const updateJsonSpec = (ori, {specActions}) => (...args) => {
|
|||||||
|
|
||||||
// Trigger resolution of any path-level $refs.
|
// Trigger resolution of any path-level $refs.
|
||||||
const [json] = args
|
const [json] = args
|
||||||
const pathItems = get(json, ["paths"]) || {}
|
const pathItems = get(json, ["paths"])
|
||||||
const pathItemKeys = Object.keys(pathItems)
|
const pathItemKeys = Object.keys(pathItems)
|
||||||
|
|
||||||
pathItemKeys.forEach(k => {
|
pathItemKeys.forEach(k => {
|
||||||
|
|||||||
@@ -51,10 +51,13 @@ import Info, {
|
|||||||
InfoUrl,
|
InfoUrl,
|
||||||
InfoBasePath
|
InfoBasePath
|
||||||
} from "core/components/info"
|
} from "core/components/info"
|
||||||
|
import InfoContainer from "core/containers/info"
|
||||||
import Footer from "core/components/footer"
|
import Footer from "core/components/footer"
|
||||||
|
import FilterContainer from "core/containers/filter"
|
||||||
import ParamBody from "core/components/param-body"
|
import ParamBody from "core/components/param-body"
|
||||||
import Curl from "core/components/curl"
|
import Curl from "core/components/curl"
|
||||||
import Schemes from "core/components/schemes"
|
import Schemes from "core/components/schemes"
|
||||||
|
import SchemesContainer from "core/containers/schemes"
|
||||||
import ModelCollapse from "core/components/model-collapse"
|
import ModelCollapse from "core/components/model-collapse"
|
||||||
import ModelExample from "core/components/model-example"
|
import ModelExample from "core/components/model-example"
|
||||||
import ModelWrapper from "core/components/model-wrapper"
|
import ModelWrapper from "core/components/model-wrapper"
|
||||||
@@ -95,6 +98,7 @@ export default function() {
|
|||||||
clear: Clear,
|
clear: Clear,
|
||||||
liveResponse: LiveResponse,
|
liveResponse: LiveResponse,
|
||||||
info: Info,
|
info: Info,
|
||||||
|
InfoContainer,
|
||||||
onlineValidatorBadge: OnlineValidatorBadge,
|
onlineValidatorBadge: OnlineValidatorBadge,
|
||||||
operations: Operations,
|
operations: Operations,
|
||||||
operation: Operation,
|
operation: Operation,
|
||||||
@@ -110,9 +114,11 @@ export default function() {
|
|||||||
contentType: ContentType,
|
contentType: ContentType,
|
||||||
overview: Overview,
|
overview: Overview,
|
||||||
footer: Footer,
|
footer: Footer,
|
||||||
|
FilterContainer,
|
||||||
ParamBody: ParamBody,
|
ParamBody: ParamBody,
|
||||||
curl: Curl,
|
curl: Curl,
|
||||||
schemes: Schemes,
|
schemes: Schemes,
|
||||||
|
SchemesContainer,
|
||||||
modelExample: ModelExample,
|
modelExample: ModelExample,
|
||||||
ModelWrapper,
|
ModelWrapper,
|
||||||
ModelCollapse,
|
ModelCollapse,
|
||||||
|
|||||||
+1
-1
@@ -37,7 +37,7 @@ export function objectify (thing) {
|
|||||||
if(!isObject(thing))
|
if(!isObject(thing))
|
||||||
return {}
|
return {}
|
||||||
if(isImmutable(thing))
|
if(isImmutable(thing))
|
||||||
return thing.toObject()
|
return thing.toJS()
|
||||||
return thing
|
return thing
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ Here is an example of each `type`
|
|||||||
```js
|
```js
|
||||||
// A contrived, but quite full example....
|
// A contrived, but quite full example....
|
||||||
|
|
||||||
export function SomePlugin( toolbox ) {
|
export function SomePlugin(toolbox) {
|
||||||
|
|
||||||
const UPDATE_SOMETHING = "some_namespace_update_something" // strings just need to be uniuqe... see below
|
const UPDATE_SOMETHING = "some_namespace_update_something" // strings just need to be uniuqe... see below
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
url: "http://petstore.swagger.io/v2/swagger.json"
|
url: "https://petstore.swagger.io/v2/swagger.json"
|
||||||
dom_id: "#swagger-ui"
|
dom_id: "#swagger-ui"
|
||||||
validatorUrl: "https://online.swagger.io/validator"
|
validatorUrl: "https://online.swagger.io/validator"
|
||||||
oauth2RedirectUrl: "http://localhost:3200/oauth2-redirect.html"
|
oauth2RedirectUrl: "http://localhost:3200/oauth2-redirect.html"
|
||||||
|
|||||||
@@ -18,12 +18,14 @@ describe("bug #4557: default parameter values", function(){
|
|||||||
getComponent: ()=> "div",
|
getComponent: ()=> "div",
|
||||||
specSelectors: {
|
specSelectors: {
|
||||||
security(){},
|
security(){},
|
||||||
parameterWithMeta(){ return paramValue },
|
parameterWithMetaByIdentity(){ return paramValue },
|
||||||
isOAS3(){ return false }
|
isOAS3(){ return false }
|
||||||
},
|
},
|
||||||
|
fn: {},
|
||||||
operation: {get: ()=>{}},
|
operation: {get: ()=>{}},
|
||||||
onChange: createSpy(),
|
onChange: createSpy(),
|
||||||
param: paramValue,
|
param: paramValue,
|
||||||
|
rawParam: paramValue,
|
||||||
onChangeConsumes: () => {},
|
onChangeConsumes: () => {},
|
||||||
pathMethod: [],
|
pathMethod: [],
|
||||||
getConfigs: () => { return {} },
|
getConfigs: () => { return {} },
|
||||||
@@ -32,7 +34,8 @@ describe("bug #4557: default parameter values", function(){
|
|||||||
|
|
||||||
render(<ParameterRow {...props}/>)
|
render(<ParameterRow {...props}/>)
|
||||||
|
|
||||||
expect(props.onChange).toHaveBeenCalledWith(paramValue, "MyDefaultValue")
|
expect(props.onChange).toHaveBeenCalled()
|
||||||
|
expect(props.onChange).toHaveBeenCalledWith(paramValue, "MyDefaultValue", false)
|
||||||
})
|
})
|
||||||
it("should apply an OpenAPI 3.0 default value", function(){
|
it("should apply an OpenAPI 3.0 default value", function(){
|
||||||
|
|
||||||
@@ -48,12 +51,14 @@ describe("bug #4557: default parameter values", function(){
|
|||||||
getComponent: ()=> "div",
|
getComponent: ()=> "div",
|
||||||
specSelectors: {
|
specSelectors: {
|
||||||
security(){},
|
security(){},
|
||||||
parameterWithMeta(){ return paramValue },
|
parameterWithMetaByIdentity(){ return paramValue },
|
||||||
isOAS3(){ return true }
|
isOAS3(){ return true }
|
||||||
},
|
},
|
||||||
|
fn: {},
|
||||||
operation: {get: ()=>{}},
|
operation: {get: ()=>{}},
|
||||||
onChange: createSpy(),
|
onChange: createSpy(),
|
||||||
param: paramValue,
|
param: paramValue,
|
||||||
|
rawParam: paramValue,
|
||||||
onChangeConsumes: () => {},
|
onChangeConsumes: () => {},
|
||||||
pathMethod: [],
|
pathMethod: [],
|
||||||
getConfigs: () => { return {} },
|
getConfigs: () => { return {} },
|
||||||
@@ -62,6 +67,7 @@ describe("bug #4557: default parameter values", function(){
|
|||||||
|
|
||||||
render(<ParameterRow {...props}/>)
|
render(<ParameterRow {...props}/>)
|
||||||
|
|
||||||
expect(props.onChange).toHaveBeenCalledWith(paramValue, "MyDefaultValue")
|
expect(props.onChange).toHaveBeenCalled()
|
||||||
|
expect(props.onChange).toHaveBeenCalledWith(paramValue, "MyDefaultValue", false)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -0,0 +1,65 @@
|
|||||||
|
|
||||||
|
/* eslint-env mocha */
|
||||||
|
import React from "react"
|
||||||
|
import expect from "expect"
|
||||||
|
import { mount } from "enzyme"
|
||||||
|
import FilterContainer from "containers/filter"
|
||||||
|
import { Col } from "components/layout-utils"
|
||||||
|
|
||||||
|
describe("<FilterContainer/>", function(){
|
||||||
|
|
||||||
|
const mockedProps = {
|
||||||
|
specSelectors: {
|
||||||
|
loadingStatus() {}
|
||||||
|
},
|
||||||
|
layoutSelectors: {
|
||||||
|
currentFilter() {}
|
||||||
|
},
|
||||||
|
getComponent: () => {return Col}
|
||||||
|
}
|
||||||
|
|
||||||
|
it("renders FilterContainer if filter is provided", function(){
|
||||||
|
|
||||||
|
// Given
|
||||||
|
let props = {...mockedProps}
|
||||||
|
props.layoutSelectors = {...mockedProps.specSelectors}
|
||||||
|
props.layoutSelectors.currentFilter = function() {return true}
|
||||||
|
|
||||||
|
// When
|
||||||
|
let wrapper = mount(<FilterContainer {...props}/>)
|
||||||
|
|
||||||
|
// Then
|
||||||
|
const renderedColInsideFilter = wrapper.find(Col)
|
||||||
|
expect(renderedColInsideFilter.length).toEqual(1)
|
||||||
|
})
|
||||||
|
|
||||||
|
it("does not render FilterContainer if filter is null", function(){
|
||||||
|
|
||||||
|
// Given
|
||||||
|
let props = {...mockedProps}
|
||||||
|
props.layoutSelectors = {...mockedProps.specSelectors}
|
||||||
|
props.layoutSelectors.currentFilter = function() {return null}
|
||||||
|
|
||||||
|
// When
|
||||||
|
let wrapper = mount(<FilterContainer {...props}/>)
|
||||||
|
|
||||||
|
// Then
|
||||||
|
const renderedColInsideFilter = wrapper.find(Col)
|
||||||
|
expect(renderedColInsideFilter.length).toEqual(0)
|
||||||
|
})
|
||||||
|
|
||||||
|
it("does not render FilterContainer if filter is false", function(){
|
||||||
|
|
||||||
|
// Given
|
||||||
|
let props = {...mockedProps}
|
||||||
|
props.layoutSelectors = {...mockedProps.specSelectors}
|
||||||
|
props.layoutSelectors.currentFilter = function() {return false}
|
||||||
|
|
||||||
|
// When
|
||||||
|
let wrapper = mount(<FilterContainer {...props}/>)
|
||||||
|
|
||||||
|
// Then
|
||||||
|
const renderedColInsideFilter = wrapper.find(Col)
|
||||||
|
expect(renderedColInsideFilter.length).toEqual(0)
|
||||||
|
})
|
||||||
|
})
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
|
||||||
|
/* eslint-env mocha */
|
||||||
|
import React from "react"
|
||||||
|
import expect from "expect"
|
||||||
|
import { mount } from "enzyme"
|
||||||
|
import { fromJS } from "immutable"
|
||||||
|
import InfoContainer from "containers/info"
|
||||||
|
|
||||||
|
describe("<InfoContainer/>", function () {
|
||||||
|
|
||||||
|
const components = {
|
||||||
|
info: () => <span className="mocked-info"/>
|
||||||
|
}
|
||||||
|
const mockedProps = {
|
||||||
|
specSelectors: {
|
||||||
|
info () {},
|
||||||
|
url () {},
|
||||||
|
basePath () {},
|
||||||
|
host () {},
|
||||||
|
externalDocs () {}
|
||||||
|
},
|
||||||
|
getComponent: c => components[c]
|
||||||
|
}
|
||||||
|
|
||||||
|
it("renders Info inside InfoContainer if info is provided", function () {
|
||||||
|
|
||||||
|
// Given
|
||||||
|
let props = {...mockedProps}
|
||||||
|
props.specSelectors = {...mockedProps.specSelectors}
|
||||||
|
props.specSelectors.info = function () {return fromJS(["info1", "info2"])}
|
||||||
|
|
||||||
|
// When
|
||||||
|
let wrapper = mount(<InfoContainer {...props}/>)
|
||||||
|
|
||||||
|
// Then
|
||||||
|
const renderedInfo = wrapper.find("span.mocked-info")
|
||||||
|
expect(renderedInfo.length).toEqual(1)
|
||||||
|
})
|
||||||
|
|
||||||
|
it("does not render Info inside InfoContainer if no info is provided", function () {
|
||||||
|
|
||||||
|
// Given
|
||||||
|
let props = {...mockedProps}
|
||||||
|
props.specSelectors = {...mockedProps.specSelectors}
|
||||||
|
props.specSelectors.info = function () {return fromJS([])}
|
||||||
|
|
||||||
|
// When
|
||||||
|
let wrapper = mount(<InfoContainer {...props}/>)
|
||||||
|
|
||||||
|
// Then
|
||||||
|
const renderedInfo = wrapper.find("span.mocked-info")
|
||||||
|
expect(renderedInfo.length).toEqual(0)
|
||||||
|
})
|
||||||
|
|
||||||
|
it("does not render Info inside InfoContainer if info is undefined", function () {
|
||||||
|
|
||||||
|
// Given
|
||||||
|
let props = {...mockedProps}
|
||||||
|
|
||||||
|
// When
|
||||||
|
let wrapper = mount(<InfoContainer {...props}/>)
|
||||||
|
|
||||||
|
// Then
|
||||||
|
const renderedInfo = wrapper.find("span.mocked-info")
|
||||||
|
expect(renderedInfo.length).toEqual(0)
|
||||||
|
})
|
||||||
|
})
|
||||||
@@ -0,0 +1,119 @@
|
|||||||
|
|
||||||
|
/* eslint-env mocha */
|
||||||
|
import React from "react"
|
||||||
|
import expect from "expect"
|
||||||
|
import { mount, render } from "enzyme"
|
||||||
|
import { fromJS } from "immutable"
|
||||||
|
import SchemesContainer from "containers/schemes"
|
||||||
|
import Schemes from "components/schemes"
|
||||||
|
import { Col } from "components/layout-utils"
|
||||||
|
|
||||||
|
describe("<SchemesContainer/>", function(){
|
||||||
|
|
||||||
|
const components = {
|
||||||
|
schemes: Schemes,
|
||||||
|
Col,
|
||||||
|
authorizeBtn: () => <span className="mocked-button" id="mocked-button" />
|
||||||
|
}
|
||||||
|
const mockedProps = {
|
||||||
|
specSelectors: {
|
||||||
|
securityDefinitions() {},
|
||||||
|
operationScheme() {},
|
||||||
|
schemes() {}
|
||||||
|
},
|
||||||
|
specActions: {
|
||||||
|
setScheme() {}
|
||||||
|
},
|
||||||
|
getComponent: c => components[c]
|
||||||
|
}
|
||||||
|
const twoSecurityDefinitions = {
|
||||||
|
"petstore_auth": {
|
||||||
|
"type": "oauth2",
|
||||||
|
"authorizationUrl": "http://petstore.swagger.io/oauth/dialog",
|
||||||
|
"flow": "implicit",
|
||||||
|
"scopes": {
|
||||||
|
"write:pets": "modify pets in your account",
|
||||||
|
"read:pets": "read your pets"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"api_key": {
|
||||||
|
"type": "apiKey",
|
||||||
|
"name": "api_key",
|
||||||
|
"in": "header"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
it("renders Schemes inside SchemesContainer if schemes are provided", function(){
|
||||||
|
|
||||||
|
// Given
|
||||||
|
let props = {...mockedProps}
|
||||||
|
props.specSelectors = {...mockedProps.specSelectors}
|
||||||
|
props.specSelectors.operationScheme = function() {return "http"}
|
||||||
|
props.specSelectors.schemes = function() {return fromJS(["http", "https"])}
|
||||||
|
|
||||||
|
// When
|
||||||
|
let wrapper = mount(<SchemesContainer {...props}/>)
|
||||||
|
|
||||||
|
// Then
|
||||||
|
const renderedSchemes = wrapper.find(Schemes)
|
||||||
|
expect(renderedSchemes.length).toEqual(1)
|
||||||
|
})
|
||||||
|
|
||||||
|
it("does not render Schemes inside SchemeWrapper if empty array of schemes is provided", function(){
|
||||||
|
|
||||||
|
// Given
|
||||||
|
let props = {...mockedProps}
|
||||||
|
props.specSelectors = {...mockedProps.specSelectors}
|
||||||
|
props.specSelectors.schemes = function() {return fromJS([])}
|
||||||
|
|
||||||
|
// When
|
||||||
|
let wrapper = mount(<SchemesContainer {...props}/>)
|
||||||
|
|
||||||
|
// Then
|
||||||
|
const renderedSchemes = wrapper.find(Schemes)
|
||||||
|
expect(renderedSchemes.length).toEqual(0)
|
||||||
|
})
|
||||||
|
|
||||||
|
it("does not render Schemes inside SchemeWrapper if provided schemes are undefined", function(){
|
||||||
|
|
||||||
|
// Given
|
||||||
|
let props = {...mockedProps}
|
||||||
|
props.specSelectors = {...mockedProps.specSelectors}
|
||||||
|
props.specSelectors.schemes = function() {return undefined}
|
||||||
|
|
||||||
|
// When
|
||||||
|
let wrapper = mount(<SchemesContainer {...props}/>)
|
||||||
|
|
||||||
|
// Then
|
||||||
|
const renderedSchemes = wrapper.find(Schemes)
|
||||||
|
expect(renderedSchemes.length).toEqual(0)
|
||||||
|
})
|
||||||
|
|
||||||
|
it("renders AuthorizeBtn inside SchemesContainer if security definition is provided", function(){
|
||||||
|
|
||||||
|
// Given
|
||||||
|
let props = {...mockedProps}
|
||||||
|
props.specSelectors = {...mockedProps.specSelectors}
|
||||||
|
props.specSelectors.securityDefinitions = function () {return fromJS(twoSecurityDefinitions)}
|
||||||
|
|
||||||
|
// When
|
||||||
|
let wrapper = render(<SchemesContainer {...props}/>)
|
||||||
|
|
||||||
|
// Then
|
||||||
|
const renderedAuthorizeBtn = wrapper.find("span.mocked-button")
|
||||||
|
expect(renderedAuthorizeBtn.length).toEqual(1)
|
||||||
|
})
|
||||||
|
|
||||||
|
it("does not render AuthorizeBtn if security definition is not provided", function(){
|
||||||
|
|
||||||
|
// Given
|
||||||
|
let props = {...mockedProps}
|
||||||
|
|
||||||
|
// When
|
||||||
|
let wrapper = render(<SchemesContainer {...props}/>)
|
||||||
|
|
||||||
|
// Then
|
||||||
|
const renderedAuthorizeBtn = wrapper.find("span.mocked-button")
|
||||||
|
expect(renderedAuthorizeBtn.length).toEqual(0)
|
||||||
|
})
|
||||||
|
})
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
|
||||||
|
/* eslint-env mocha */
|
||||||
|
import React from "react"
|
||||||
|
import expect from "expect"
|
||||||
|
import { mount } from "enzyme"
|
||||||
|
import { fromJS } from "immutable"
|
||||||
|
import ServersContainer from "core/plugins/oas3/components/servers-container"
|
||||||
|
import Servers from "core/plugins/oas3/components/servers"
|
||||||
|
import { Col } from "components/layout-utils"
|
||||||
|
|
||||||
|
describe("<ServersContainer/>", function(){
|
||||||
|
|
||||||
|
const components = {
|
||||||
|
Servers,
|
||||||
|
Col
|
||||||
|
}
|
||||||
|
const mockedProps = {
|
||||||
|
specSelectors: {
|
||||||
|
servers() {}
|
||||||
|
},
|
||||||
|
oas3Selectors: {
|
||||||
|
selectedServer() {},
|
||||||
|
serverVariableValue() {},
|
||||||
|
serverEffectiveValue() {}
|
||||||
|
},
|
||||||
|
oas3Actions: {
|
||||||
|
setSelectedServer() {},
|
||||||
|
setServerVariableValue() {}
|
||||||
|
},
|
||||||
|
getComponent: c => components[c]
|
||||||
|
}
|
||||||
|
|
||||||
|
it("renders Servers inside ServersContainer if servers are provided", function(){
|
||||||
|
|
||||||
|
// Given
|
||||||
|
let props = {...mockedProps}
|
||||||
|
props.specSelectors = {...mockedProps.specSelectors}
|
||||||
|
props.specSelectors.servers = function() {return fromJS([{url: "http://server1.com"}])}
|
||||||
|
props.oas3Selectors = {...mockedProps.oas3Selectors}
|
||||||
|
props.oas3Selectors.selectedServer = function() {return "http://server1.com"}
|
||||||
|
|
||||||
|
// When
|
||||||
|
let wrapper = mount(<ServersContainer {...props}/>)
|
||||||
|
|
||||||
|
// Then
|
||||||
|
const renderedServers = wrapper.find(Servers)
|
||||||
|
expect(renderedServers.length).toEqual(1)
|
||||||
|
})
|
||||||
|
|
||||||
|
it("does not render Servers inside ServersContainer if servers are empty", function(){
|
||||||
|
|
||||||
|
// Given
|
||||||
|
let props = {...mockedProps}
|
||||||
|
props.specSelectors = {...mockedProps.specSelectors}
|
||||||
|
props.specSelectors.servers = function() {return fromJS([])}
|
||||||
|
|
||||||
|
// When
|
||||||
|
let wrapper = mount(<ServersContainer {...props}/>)
|
||||||
|
|
||||||
|
// Then
|
||||||
|
const renderedServers = wrapper.find(Servers)
|
||||||
|
expect(renderedServers.length).toEqual(0)
|
||||||
|
})
|
||||||
|
|
||||||
|
it("does not render Servers inside ServersContainer if servers are undefined", function(){
|
||||||
|
|
||||||
|
// Given
|
||||||
|
let props = {...mockedProps}
|
||||||
|
|
||||||
|
// When
|
||||||
|
let wrapper = mount(<ServersContainer {...props}/>)
|
||||||
|
|
||||||
|
// Then
|
||||||
|
const renderedServers = wrapper.find(Servers)
|
||||||
|
expect(renderedServers.length).toEqual(0)
|
||||||
|
})
|
||||||
|
})
|
||||||
@@ -1,7 +1,35 @@
|
|||||||
|
import { fromJS } from "immutable"
|
||||||
import { createXMLExample, sampleFromSchema } from "corePlugins/samples/fn"
|
import { createXMLExample, sampleFromSchema } from "corePlugins/samples/fn"
|
||||||
import expect from "expect"
|
import expect from "expect"
|
||||||
|
|
||||||
describe("sampleFromSchema", function() {
|
describe("sampleFromSchema", function() {
|
||||||
|
it("handles Immutable.js objects for nested schemas", function () {
|
||||||
|
var definition = fromJS({
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"json": {
|
||||||
|
"type": "object",
|
||||||
|
"example": {
|
||||||
|
"a": "string"
|
||||||
|
},
|
||||||
|
"properties": {
|
||||||
|
"a": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
var expected = {
|
||||||
|
json: {
|
||||||
|
a: "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
expect(sampleFromSchema(definition, { includeReadOnly: false })).toEqual(expected)
|
||||||
|
})
|
||||||
|
|
||||||
it("returns object with no readonly fields for parameter", function () {
|
it("returns object with no readonly fields for parameter", function () {
|
||||||
var definition = {
|
var definition = {
|
||||||
type: "object",
|
type: "object",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/* eslint-env mocha */
|
/* eslint-env mocha */
|
||||||
import expect, { createSpy } from "expect"
|
import expect, { createSpy } from "expect"
|
||||||
import { fromJS } from "immutable"
|
import { fromJS } from "immutable"
|
||||||
import { execute, executeRequest } from "corePlugins/spec/actions"
|
import { execute, executeRequest, changeParamByIdentity } from "corePlugins/spec/actions"
|
||||||
|
|
||||||
describe("spec plugin - actions", function(){
|
describe("spec plugin - actions", function(){
|
||||||
|
|
||||||
@@ -184,4 +184,27 @@ describe("spec plugin - actions", function(){
|
|||||||
it.skip("should call errActions.newErr, if the fn.execute rejects", function(){
|
it.skip("should call errActions.newErr, if the fn.execute rejects", function(){
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe("changeParamByIdentity", function () {
|
||||||
|
it("should map its arguments to a payload", function () {
|
||||||
|
const pathMethod = ["/one", "get"]
|
||||||
|
const param = fromJS({
|
||||||
|
name: "body",
|
||||||
|
in: "body"
|
||||||
|
})
|
||||||
|
const value = "my value"
|
||||||
|
const isXml = false
|
||||||
|
|
||||||
|
const result = changeParamByIdentity(pathMethod, param, value, isXml)
|
||||||
|
|
||||||
|
expect(result).toEqual({
|
||||||
|
type: "spec_update_param",
|
||||||
|
payload: {
|
||||||
|
path: pathMethod,
|
||||||
|
param,
|
||||||
|
value,
|
||||||
|
isXml
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -129,4 +129,53 @@ describe("spec plugin - reducer", function(){
|
|||||||
expect(response).toEqual(expectedResult)
|
expect(response).toEqual(expectedResult)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
describe("SPEC_UPDATE_PARAM", function() {
|
||||||
|
it("should store parameter values by name+in", () => {
|
||||||
|
const updateParam = reducer["spec_update_param"]
|
||||||
|
|
||||||
|
const path = "/pet/post"
|
||||||
|
const method = "POST"
|
||||||
|
|
||||||
|
const state = fromJS({})
|
||||||
|
const result = updateParam(state, {
|
||||||
|
payload: {
|
||||||
|
path: [path, method],
|
||||||
|
paramName: "body",
|
||||||
|
paramIn: "body",
|
||||||
|
value: `{ "a": 123 }`,
|
||||||
|
isXml: false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const response = result.getIn(["meta", "paths", path, method, "parameters", "body.body", "value"])
|
||||||
|
expect(response).toEqual(`{ "a": 123 }`)
|
||||||
|
})
|
||||||
|
it("should store parameter values by identity", () => {
|
||||||
|
const updateParam = reducer["spec_update_param"]
|
||||||
|
|
||||||
|
const path = "/pet/post"
|
||||||
|
const method = "POST"
|
||||||
|
|
||||||
|
const param = fromJS({
|
||||||
|
name: "body",
|
||||||
|
in: "body",
|
||||||
|
schema: {
|
||||||
|
type: "string"
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const state = fromJS({})
|
||||||
|
const result = updateParam(state, {
|
||||||
|
payload: {
|
||||||
|
param,
|
||||||
|
path: [path, method],
|
||||||
|
value: `{ "a": 123 }`,
|
||||||
|
isXml: false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const value = result.getIn(["meta", "paths", path, method, "parameters", `body.body.hash-${param.hashCode()}`, "value"])
|
||||||
|
expect(value).toEqual(`{ "a": 123 }`)
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -11,6 +11,11 @@ import {
|
|||||||
} from "corePlugins/spec/selectors"
|
} from "corePlugins/spec/selectors"
|
||||||
|
|
||||||
import Petstore from "./assets/petstore.json"
|
import Petstore from "./assets/petstore.json"
|
||||||
|
import {
|
||||||
|
operationWithMeta,
|
||||||
|
parameterWithMeta,
|
||||||
|
parameterWithMetaByIdentity
|
||||||
|
} from "../../../../src/core/plugins/spec/selectors"
|
||||||
|
|
||||||
describe("spec plugin - selectors", function(){
|
describe("spec plugin - selectors", function(){
|
||||||
|
|
||||||
@@ -451,4 +456,260 @@ describe("spec plugin - selectors", function(){
|
|||||||
expect(result.getIn(["paths"]).keySeq().toJS()).toEqual(correctOrder)
|
expect(result.getIn(["paths"]).keySeq().toJS()).toEqual(correctOrder)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe("operationWithMeta", function() {
|
||||||
|
it("should support merging in name+in keyed param metadata", function () {
|
||||||
|
const state = fromJS({
|
||||||
|
json: {
|
||||||
|
paths: {
|
||||||
|
"/": {
|
||||||
|
"get": {
|
||||||
|
parameters: [
|
||||||
|
{
|
||||||
|
name: "body",
|
||||||
|
in: "body"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
meta: {
|
||||||
|
paths: {
|
||||||
|
"/": {
|
||||||
|
"get": {
|
||||||
|
parameters: {
|
||||||
|
"body.body": {
|
||||||
|
value: "abc123"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const result = operationWithMeta(state, "/", "get")
|
||||||
|
|
||||||
|
expect(result.toJS()).toEqual({
|
||||||
|
parameters: [
|
||||||
|
{
|
||||||
|
name: "body",
|
||||||
|
in: "body",
|
||||||
|
value: "abc123"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
})
|
||||||
|
})
|
||||||
|
it("should support merging in hash-keyed param metadata", function () {
|
||||||
|
const bodyParam = fromJS({
|
||||||
|
name: "body",
|
||||||
|
in: "body"
|
||||||
|
})
|
||||||
|
|
||||||
|
const state = fromJS({
|
||||||
|
json: {
|
||||||
|
paths: {
|
||||||
|
"/": {
|
||||||
|
"get": {
|
||||||
|
parameters: [
|
||||||
|
bodyParam
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
meta: {
|
||||||
|
paths: {
|
||||||
|
"/": {
|
||||||
|
"get": {
|
||||||
|
parameters: {
|
||||||
|
[`body.body.hash-${bodyParam.hashCode()}`]: {
|
||||||
|
value: "abc123"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const result = operationWithMeta(state, "/", "get")
|
||||||
|
|
||||||
|
expect(result.toJS()).toEqual({
|
||||||
|
parameters: [
|
||||||
|
{
|
||||||
|
name: "body",
|
||||||
|
in: "body",
|
||||||
|
value: "abc123"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
describe("parameterWithMeta", function() {
|
||||||
|
it("should support merging in name+in keyed param metadata", function () {
|
||||||
|
const state = fromJS({
|
||||||
|
json: {
|
||||||
|
paths: {
|
||||||
|
"/": {
|
||||||
|
"get": {
|
||||||
|
parameters: [
|
||||||
|
{
|
||||||
|
name: "body",
|
||||||
|
in: "body"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
meta: {
|
||||||
|
paths: {
|
||||||
|
"/": {
|
||||||
|
"get": {
|
||||||
|
parameters: {
|
||||||
|
"body.body": {
|
||||||
|
value: "abc123"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const result = parameterWithMeta(state, ["/", "get"], "body", "body")
|
||||||
|
|
||||||
|
expect(result.toJS()).toEqual({
|
||||||
|
name: "body",
|
||||||
|
in: "body",
|
||||||
|
value: "abc123"
|
||||||
|
})
|
||||||
|
})
|
||||||
|
it("should give best-effort when encountering hash-keyed param metadata", function () {
|
||||||
|
const bodyParam = fromJS({
|
||||||
|
name: "body",
|
||||||
|
in: "body"
|
||||||
|
})
|
||||||
|
|
||||||
|
const state = fromJS({
|
||||||
|
json: {
|
||||||
|
paths: {
|
||||||
|
"/": {
|
||||||
|
"get": {
|
||||||
|
parameters: [
|
||||||
|
bodyParam
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
meta: {
|
||||||
|
paths: {
|
||||||
|
"/": {
|
||||||
|
"get": {
|
||||||
|
parameters: {
|
||||||
|
[`body.body.hash-${bodyParam.hashCode()}`]: {
|
||||||
|
value: "abc123"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const result = parameterWithMeta(state, ["/", "get"], "body", "body")
|
||||||
|
|
||||||
|
expect(result.toJS()).toEqual({
|
||||||
|
name: "body",
|
||||||
|
in: "body",
|
||||||
|
value: "abc123"
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
|
describe("parameterWithMetaByIdentity", function() {
|
||||||
|
it("should support merging in name+in keyed param metadata", function () {
|
||||||
|
const bodyParam = fromJS({
|
||||||
|
name: "body",
|
||||||
|
in: "body"
|
||||||
|
})
|
||||||
|
|
||||||
|
const state = fromJS({
|
||||||
|
json: {
|
||||||
|
paths: {
|
||||||
|
"/": {
|
||||||
|
"get": {
|
||||||
|
parameters: [bodyParam]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
meta: {
|
||||||
|
paths: {
|
||||||
|
"/": {
|
||||||
|
"get": {
|
||||||
|
parameters: {
|
||||||
|
"body.body": {
|
||||||
|
value: "abc123"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const result = parameterWithMetaByIdentity(state, ["/", "get"], bodyParam)
|
||||||
|
|
||||||
|
expect(result.toJS()).toEqual({
|
||||||
|
name: "body",
|
||||||
|
in: "body",
|
||||||
|
value: "abc123"
|
||||||
|
})
|
||||||
|
})
|
||||||
|
it("should support merging in hash-keyed param metadata", function () {
|
||||||
|
const bodyParam = fromJS({
|
||||||
|
name: "body",
|
||||||
|
in: "body"
|
||||||
|
})
|
||||||
|
|
||||||
|
const state = fromJS({
|
||||||
|
json: {
|
||||||
|
paths: {
|
||||||
|
"/": {
|
||||||
|
"get": {
|
||||||
|
parameters: [
|
||||||
|
bodyParam
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
meta: {
|
||||||
|
paths: {
|
||||||
|
"/": {
|
||||||
|
"get": {
|
||||||
|
parameters: {
|
||||||
|
[`body.body.hash-${bodyParam.hashCode()}`]: {
|
||||||
|
value: "abc123"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const result = parameterWithMetaByIdentity(state, ["/", "get"], bodyParam)
|
||||||
|
|
||||||
|
expect(result.toJS()).toEqual({
|
||||||
|
name: "body",
|
||||||
|
in: "body",
|
||||||
|
value: "abc123"
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -317,7 +317,7 @@ describe("bound system", function(){
|
|||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
describe("when selector returns a funtcion", function(){
|
describe("when selector returns a function", function(){
|
||||||
|
|
||||||
it("should pass the system to that function", function(){
|
it("should pass the system to that function", function(){
|
||||||
|
|
||||||
|
|||||||
@@ -75,7 +75,7 @@
|
|||||||
window["SwaggerUIStandalonePreset"] = window["swagger-ui-standalone-preset"]
|
window["SwaggerUIStandalonePreset"] = window["swagger-ui-standalone-preset"]
|
||||||
// Build a system
|
// Build a system
|
||||||
const ui = SwaggerUIBundle({
|
const ui = SwaggerUIBundle({
|
||||||
url: "http://petstore.swagger.io/v2/swagger.json",
|
url: "https://petstore.swagger.io/v2/swagger.json",
|
||||||
dom_id: '#swagger-ui',
|
dom_id: '#swagger-ui',
|
||||||
presets: [
|
presets: [
|
||||||
SwaggerUIBundle.presets.apis,
|
SwaggerUIBundle.presets.apis,
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
"selenium" : {
|
"selenium" : {
|
||||||
"start_process" : true,
|
"start_process" : true,
|
||||||
"server_path" : "node_modules/selenium-server-standalone-jar/jar/selenium-server-standalone-3.4.0.jar",
|
"server_path" : "node_modules/selenium-server-standalone-jar/jar/selenium-server-standalone-3.12.0.jar",
|
||||||
"log_path" : "",
|
"log_path" : "",
|
||||||
"host" : "127.0.0.1",
|
"host" : "127.0.0.1",
|
||||||
"port" : 4444,
|
"port" : 4444,
|
||||||
@@ -60,4 +60,4 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+124
-124
@@ -85,404 +85,404 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
apiWrapper: {
|
apiWrapper: {
|
||||||
selector: ".swagger-ui .wrapper:nth-child(3)",
|
selector: "div.swagger-ui > div:nth-child(2) > div:nth-child(5) > section > div",
|
||||||
elements: {
|
elements: {
|
||||||
petAPIWrapper: {
|
petAPIWrapper: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1)"
|
selector: "div.swagger-ui div:nth-child(5) > section > div > span:nth-child(1) > div"
|
||||||
},
|
},
|
||||||
petAPIWrapperBar: {
|
petAPIWrapperBar: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) .opblock-tag"
|
selector: "div.swagger-ui div:nth-child(5) > section > div > span:nth-child(1) > div .opblock-tag"
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Post pet/ api
|
* Post pet/ api
|
||||||
*/
|
*/
|
||||||
petOperationPostContainer: {
|
petOperationPostContainer: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-addPet"
|
selector: "div#operations-pet-addPet"
|
||||||
},
|
},
|
||||||
petOperationPostTitle: {
|
petOperationPostTitle: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-addPet .opblock-summary-post span.opblock-summary-path span"
|
selector: "div#operations-pet-addPet .opblock-summary-post span.opblock-summary-path span"
|
||||||
},
|
},
|
||||||
petOperationPostCollpase: {
|
petOperationPostCollpase: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-addPet .opblock-summary-post"
|
selector: "div#operations-pet-addPet .opblock-summary-post"
|
||||||
},
|
},
|
||||||
petOperationPostCollapseContainer: {
|
petOperationPostCollapseContainer: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-addPet>div:nth-child(2)"
|
selector: "div#operations-pet-addPet>div:nth-child(2)"
|
||||||
},
|
},
|
||||||
petOperationPostTryBtn: {
|
petOperationPostTryBtn: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-addPet button.try-out__btn"
|
selector: "div#operations-pet-addPet button.try-out__btn"
|
||||||
},
|
},
|
||||||
petOperationPostTryText: {
|
petOperationPostTryText: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-addPet textarea.body-param__text"
|
selector: "div#operations-pet-addPet textarea.body-param__text"
|
||||||
},
|
},
|
||||||
petOperationPostExecuteBtn: {
|
petOperationPostExecuteBtn: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-addPet button.execute"
|
selector: "div#operations-pet-addPet button.execute"
|
||||||
},
|
},
|
||||||
petOperationPostTryTextArea: {
|
petOperationPostTryTextArea: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-addPet textarea"
|
selector: "div#operations-pet-addPet textarea"
|
||||||
},
|
},
|
||||||
petOperationPostResultsBox: {
|
petOperationPostResultsBox: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-addPet pre.microlight"
|
selector: "div#operations-pet-addPet pre.microlight"
|
||||||
},
|
},
|
||||||
petOperationPostMockCategoryID: {
|
petOperationPostMockCategoryID: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-addPet pre.microlight span:nth-child(17)"
|
selector: "div#operations-pet-addPet pre.microlight span:nth-child(17)"
|
||||||
},
|
},
|
||||||
petOperationPostMockCategoryName: {
|
petOperationPostMockCategoryName: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-addPet pre.microlight span:nth-child(23)"
|
selector: "div#operations-pet-addPet pre.microlight span:nth-child(23)"
|
||||||
},
|
},
|
||||||
petOperationPostMockName: {
|
petOperationPostMockName: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-addPet pre.microlight span:nth-child(31)"
|
selector: "div#operations-pet-addPet pre.microlight span:nth-child(31)"
|
||||||
},
|
},
|
||||||
petOperationPostTagID: {
|
petOperationPostTagID: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-addPet pre.microlight span:nth-child(54)"
|
selector: "div#operations-pet-addPet pre.microlight span:nth-child(54)"
|
||||||
},
|
},
|
||||||
petOperationPostTagName: {
|
petOperationPostTagName: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-addPet pre.microlight span:nth-child(60)"
|
selector: "div#operations-pet-addPet pre.microlight span:nth-child(60)"
|
||||||
},
|
},
|
||||||
petOperationPostStatus: {
|
petOperationPostStatus: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-addPet pre.microlight span:nth-child(70)"
|
selector: "div#operations-pet-addPet pre.microlight span:nth-child(70)"
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Put pet/ api
|
* Put pet/ api
|
||||||
*/
|
*/
|
||||||
petOperationPutContainer: {
|
petOperationPutContainer: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-updatePet"
|
selector: "div#operations-pet-updatePet"
|
||||||
},
|
},
|
||||||
petOperationPutTitle: {
|
petOperationPutTitle: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-updatePet .opblock-summary-put span.opblock-summary-path span"
|
selector: "div#operations-pet-updatePet .opblock-summary-put span.opblock-summary-path span"
|
||||||
},
|
},
|
||||||
petOperationPutCollpase: {
|
petOperationPutCollpase: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-updatePet .opblock-summary-put"
|
selector: "div#operations-pet-updatePet .opblock-summary-put"
|
||||||
},
|
},
|
||||||
petOperationPutCollapseContainer: {
|
petOperationPutCollapseContainer: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-updatePet>div:nth-child(2)"
|
selector: "div#operations-pet-updatePet>div:nth-child(2)"
|
||||||
},
|
},
|
||||||
petOperationPutTryBtn: {
|
petOperationPutTryBtn: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-updatePet button.try-out__btn"
|
selector: "div#operations-pet-updatePet button.try-out__btn"
|
||||||
},
|
},
|
||||||
petOperationPutTryText: {
|
petOperationPutTryText: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-updatePet textarea.body-param__text"
|
selector: "div#operations-pet-updatePet textarea.body-param__text"
|
||||||
},
|
},
|
||||||
petOperationPutExecuteBtn: {
|
petOperationPutExecuteBtn: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-updatePet button.execute"
|
selector: "div#operations-pet-updatePet button.execute"
|
||||||
},
|
},
|
||||||
petOperationPutTryTextArea: {
|
petOperationPutTryTextArea: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-updatePet textarea"
|
selector: "div#operations-pet-updatePet textarea"
|
||||||
},
|
},
|
||||||
petOperationPutResultsBox: {
|
petOperationPutResultsBox: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-updatePet pre.microlight"
|
selector: "div#operations-pet-updatePet pre.microlight"
|
||||||
},
|
},
|
||||||
petOperationPutMockCategoryID: {
|
petOperationPutMockCategoryID: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-updatePet pre.microlight span:nth-child(17)"
|
selector: "div#operations-pet-updatePet pre.microlight span:nth-child(17)"
|
||||||
},
|
},
|
||||||
petOperationPutMockCategoryName: {
|
petOperationPutMockCategoryName: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-updatePet pre.microlight span:nth-child(23)"
|
selector: "div#operations-pet-updatePet pre.microlight span:nth-child(23)"
|
||||||
},
|
},
|
||||||
petOperationPutMockName: {
|
petOperationPutMockName: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-updatePet pre.microlight span:nth-child(31)"
|
selector: "div#operations-pet-updatePet pre.microlight span:nth-child(31)"
|
||||||
},
|
},
|
||||||
petOperationPutTagID: {
|
petOperationPutTagID: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-updatePet pre.microlight span:nth-child(54)"
|
selector: "div#operations-pet-updatePet pre.microlight span:nth-child(54)"
|
||||||
},
|
},
|
||||||
petOperationPutTagName: {
|
petOperationPutTagName: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-updatePet pre.microlight span:nth-child(60)"
|
selector: "div#operations-pet-updatePet pre.microlight span:nth-child(60)"
|
||||||
},
|
},
|
||||||
petOperationPutStatus: {
|
petOperationPutStatus: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-updatePet pre.microlight span:nth-child(70)"
|
selector: "div#operations-pet-updatePet pre.microlight span:nth-child(70)"
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get /pet/findByTags
|
* Get /pet/findByTags
|
||||||
*/
|
*/
|
||||||
petOperationGetByTagContainer: {
|
petOperationGetByTagContainer: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-findPetsByTags"
|
selector: "div#operations-pet-findPetsByTags"
|
||||||
},
|
},
|
||||||
petOperationGetByTagTitle: {
|
petOperationGetByTagTitle: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-findPetsByTags .opblock-summary-get span.opblock-summary-path__deprecated span"
|
selector: "div#operations-pet-findPetsByTags .opblock-summary-get span.opblock-summary-path__deprecated span"
|
||||||
},
|
},
|
||||||
petOperationGetByTagCollpase: {
|
petOperationGetByTagCollpase: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-findPetsByTags .opblock-summary-get"
|
selector: "div#operations-pet-findPetsByTags .opblock-summary-get"
|
||||||
},
|
},
|
||||||
petOperationGetByTagCollapseContainer: {
|
petOperationGetByTagCollapseContainer: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-findPetsByTags .ReactCollapse--collapse"
|
selector: "div#operations-pet-findPetsByTags .ReactCollapse--collapse"
|
||||||
},
|
},
|
||||||
petOperationGetByTagTryBtn: {
|
petOperationGetByTagTryBtn: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-findPetsByTags button.try-out__btn"
|
selector: "div#operations-pet-findPetsByTags button.try-out__btn"
|
||||||
},
|
},
|
||||||
petOperationGetByTagTryAdded: {
|
petOperationGetByTagTryAdded: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-findPetsByTags button.json-schema-form-item-add"
|
selector: "div#operations-pet-findPetsByTags button.json-schema-form-item-add"
|
||||||
},
|
},
|
||||||
petOperationGetByTagExecuteBtn: {
|
petOperationGetByTagExecuteBtn: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-findPetsByTags button.execute"
|
selector: "div#operations-pet-findPetsByTags button.execute"
|
||||||
},
|
},
|
||||||
petOperationGetByTagTryTextArea: {
|
petOperationGetByTagTryTextArea: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-findPetsByTags textarea"
|
selector: "div#operations-pet-findPetsByTags textarea"
|
||||||
},
|
},
|
||||||
petOperationGetByTagResultsBox: {
|
petOperationGetByTagResultsBox: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-findPetsByTags pre.microlight"
|
selector: "div#operations-pet-findPetsByTags pre.microlight"
|
||||||
},
|
},
|
||||||
petOperationGetByTagMockCategoryID: {
|
petOperationGetByTagMockCategoryID: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-findPetsByTags pre.microlight span:nth-child(17)"
|
selector: "div#operations-pet-findPetsByTags pre.microlight span:nth-child(17)"
|
||||||
},
|
},
|
||||||
petOperationGetByTagMockCategoryName: {
|
petOperationGetByTagMockCategoryName: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-findPetsByTags pre.microlight span:nth-child(23)"
|
selector: "div#operations-pet-findPetsByTags pre.microlight span:nth-child(23)"
|
||||||
},
|
},
|
||||||
petOperationGetByTagMockName: {
|
petOperationGetByTagMockName: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-findPetsByTags pre.microlight span:nth-child(31)"
|
selector: "div#operations-pet-findPetsByTags pre.microlight span:nth-child(31)"
|
||||||
},
|
},
|
||||||
petOperationGetByTagTagID: {
|
petOperationGetByTagTagID: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-findPetsByTags pre.microlight span:nth-child(54)"
|
selector: "div#operations-pet-findPetsByTags pre.microlight span:nth-child(54)"
|
||||||
},
|
},
|
||||||
petOperationGetByTagTagName: {
|
petOperationGetByTagTagName: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-findPetsByTags pre.microlight span:nth-child(60)"
|
selector: "div#operations-pet-findPetsByTags pre.microlight span:nth-child(60)"
|
||||||
},
|
},
|
||||||
petOperationGetByTagStatus: {
|
petOperationGetByTagStatus: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-findPetsByTags pre.microlight span:nth-child(70)"
|
selector: "div#operations-pet-findPetsByTags pre.microlight span:nth-child(70)"
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get /pet/{petId}
|
* Get /pet/{petId}
|
||||||
*/
|
*/
|
||||||
petOperationGetByIdContainer: {
|
petOperationGetByIdContainer: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-getPetById"
|
selector: "div#operations-pet-getPetById"
|
||||||
},
|
},
|
||||||
petOperationGetByIdTitle: {
|
petOperationGetByIdTitle: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-getPetById .opblock-summary-get span.opblock-summary-path span"
|
selector: "div#operations-pet-getPetById .opblock-summary-get span.opblock-summary-path span"
|
||||||
},
|
},
|
||||||
petOperationGetByIdCollpase: {
|
petOperationGetByIdCollpase: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-getPetById .opblock-summary-get"
|
selector: "div#operations-pet-getPetById .opblock-summary-get"
|
||||||
},
|
},
|
||||||
petOperationGetByIdCollapseContainer: {
|
petOperationGetByIdCollapseContainer: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-getPetById .ReactCollapse--collapse"
|
selector: "div#operations-pet-getPetById .ReactCollapse--collapse"
|
||||||
},
|
},
|
||||||
petOperationGetByIdTryBtn: {
|
petOperationGetByIdTryBtn: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-getPetById button.try-out__btn"
|
selector: "div#operations-pet-getPetById button.try-out__btn"
|
||||||
},
|
},
|
||||||
petOperationGetByIdExecuteBtn: {
|
petOperationGetByIdExecuteBtn: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-getPetById button.execute"
|
selector: "div#operations-pet-getPetById button.execute"
|
||||||
},
|
},
|
||||||
petOperationGetByIdParameter: {
|
petOperationGetByIdParameter: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(3) div#operations-pet-getPetById div.parameters-col_description input"
|
selector: "div#operations-pet-getPetById div.parameters-col_description input"
|
||||||
},
|
},
|
||||||
petOperationGetByIdResultsBox: {
|
petOperationGetByIdResultsBox: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-getPetById pre.microlight"
|
selector: "div#operations-pet-getPetById pre.microlight"
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete pet/
|
* Delete pet/
|
||||||
*/
|
*/
|
||||||
petOperationDeleteContainer: {
|
petOperationDeleteContainer: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-deletePet"
|
selector: "div#operations-pet-deletePet"
|
||||||
},
|
},
|
||||||
petOperationDeleteTitle: {
|
petOperationDeleteTitle: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-deletePet .opblock-summary-delete span.opblock-summary-path span"
|
selector: "div#operations-pet-deletePet .opblock-summary-delete span.opblock-summary-path span"
|
||||||
},
|
},
|
||||||
petOperationDeleteCollpase: {
|
petOperationDeleteCollpase: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-deletePet .opblock-summary-delete"
|
selector: "div#operations-pet-deletePet .opblock-summary-delete"
|
||||||
},
|
},
|
||||||
petOperationDeleteCollapseContainer: {
|
petOperationDeleteCollapseContainer: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-deletePet>div:nth-child(2)"
|
selector: "div#operations-pet-deletePet>div:nth-child(2)"
|
||||||
},
|
},
|
||||||
petOperationDeleteTryBtn: {
|
petOperationDeleteTryBtn: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-deletePet button.try-out__btn"
|
selector: "div#operations-pet-deletePet button.try-out__btn"
|
||||||
},
|
},
|
||||||
petOperationDeleteExecuteBtn: {
|
petOperationDeleteExecuteBtn: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-deletePet button.execute"
|
selector: "div#operations-pet-deletePet button.execute"
|
||||||
},
|
},
|
||||||
petOperationDeleteTryTextArea: {
|
petOperationDeleteTryTextArea: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-deletePet textarea"
|
selector: "div#operations-pet-deletePet textarea"
|
||||||
},
|
},
|
||||||
petOperationDeleteResultsBox: {
|
petOperationDeleteResultsBox: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-deletePet pre.microlight"
|
selector: "div#operations-pet-deletePet pre.microlight"
|
||||||
},
|
},
|
||||||
petOperationDeleteMockCategoryID: {
|
petOperationDeleteMockCategoryID: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-deletePet pre.microlight span:nth-child(17)"
|
selector: "div#operations-pet-deletePet pre.microlight span:nth-child(17)"
|
||||||
},
|
},
|
||||||
petOperationDeleteMockCategoryName: {
|
petOperationDeleteMockCategoryName: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-deletePet pre.microlight span:nth-child(23)"
|
selector: "div#operations-pet-deletePet pre.microlight span:nth-child(23)"
|
||||||
},
|
},
|
||||||
petOperationDeleteMockName: {
|
petOperationDeleteMockName: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-deletePet pre.microlight span:nth-child(31)"
|
selector: "div#operations-pet-deletePet pre.microlight span:nth-child(31)"
|
||||||
},
|
},
|
||||||
petOperationDeleteTagID: {
|
petOperationDeleteTagID: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-deletePet pre.microlight span:nth-child(54)"
|
selector: "div#operations-pet-deletePet pre.microlight span:nth-child(54)"
|
||||||
},
|
},
|
||||||
petOperationDeleteTagName: {
|
petOperationDeleteTagName: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-deletePet pre.microlight span:nth-child(60)"
|
selector: "div#operations-pet-deletePet pre.microlight span:nth-child(60)"
|
||||||
},
|
},
|
||||||
petOperationDeleteStatus: {
|
petOperationDeleteStatus: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(1) div#operations-pet-deletePet pre.microlight span:nth-child(70)"
|
selector: "div#operations-pet-deletePet pre.microlight span:nth-child(70)"
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ***********Store************
|
* ***********Store************
|
||||||
*/
|
*/
|
||||||
storeAPIWrapper: {
|
storeAPIWrapper: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2)"
|
selector: "div.swagger-ui div:nth-child(5) > section > div > span:nth-child(2) > div"
|
||||||
},
|
},
|
||||||
storeAPIWrapperBar: {
|
storeAPIWrapperBar: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) .opblock-tag"
|
selector: "div.swagger-ui div:nth-child(5) > section > div > span:nth-child(2) > div .opblock-tag"
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* Get /store/inventory
|
* Get /store/inventory
|
||||||
*/
|
*/
|
||||||
storeOperationGetContainer: {
|
storeOperationGetContainer: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-getInventory"
|
selector: "div#operations-store-getInventory"
|
||||||
},
|
},
|
||||||
storeOperationGetTitle: {
|
storeOperationGetTitle: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-getInventory .opblock-summary-get span.opblock-summary-path span"
|
selector: "div#operations-store-getInventory .opblock-summary-get span.opblock-summary-path span"
|
||||||
},
|
},
|
||||||
storeOperationGetCollpase: {
|
storeOperationGetCollpase: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-getInventory .opblock-summary-get"
|
selector: "div#operations-store-getInventory .opblock-summary-get"
|
||||||
},
|
},
|
||||||
storeOperationGetCollapseContainer: {
|
storeOperationGetCollapseContainer: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-getInventory>div:nth-child(2)"
|
selector: "div#operations-store-getInventory>div:nth-child(2)"
|
||||||
},
|
},
|
||||||
storeOperationGetTryBtn: {
|
storeOperationGetTryBtn: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-getInventory button.try-out__btn"
|
selector: "div#operations-store-getInventory button.try-out__btn"
|
||||||
},
|
},
|
||||||
storeOperationGetExecuteBtn: {
|
storeOperationGetExecuteBtn: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-getInventory button.execute"
|
selector: "div#operations-store-getInventory button.execute"
|
||||||
},
|
},
|
||||||
storeOperationResponseProps1: {
|
storeOperationResponseProps1: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-getInventory pre.example.microlight span:nth-child(6)"
|
selector: "div#operations-store-getInventory pre.example.microlight span:nth-child(6)"
|
||||||
},
|
},
|
||||||
storeOperationResponseProps2: {
|
storeOperationResponseProps2: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-getInventory pre.example.microlight span:nth-child(12)"
|
selector: "div#operations-store-getInventory pre.example.microlight span:nth-child(12)"
|
||||||
},
|
},
|
||||||
storeOperationResponseProps3: {
|
storeOperationResponseProps3: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-getInventory pre.example.microlight span:nth-child(18)"
|
selector: "div#operations-store-getInventory pre.example.microlight span:nth-child(18)"
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* Post /store/order
|
* Post /store/order
|
||||||
*/
|
*/
|
||||||
storeOperationPostContainer: {
|
storeOperationPostContainer: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-placeOrder"
|
selector: "div#operations-store-placeOrder"
|
||||||
},
|
},
|
||||||
storeOperationPostTitle: {
|
storeOperationPostTitle: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-placeOrder .opblock-summary-post span.opblock-summary-path span"
|
selector: "div#operations-store-placeOrder .opblock-summary-post span.opblock-summary-path span"
|
||||||
},
|
},
|
||||||
storeOperationPostCollpase: {
|
storeOperationPostCollpase: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-placeOrder .opblock-summary-post"
|
selector: "div#operations-store-placeOrder .opblock-summary-post"
|
||||||
},
|
},
|
||||||
storeOperationPostCollapseContainer: {
|
storeOperationPostCollapseContainer: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-placeOrder>div:nth-child(2)"
|
selector: "div#operations-store-placeOrder>div:nth-child(2)"
|
||||||
},
|
},
|
||||||
storeOperationPostTryBtn: {
|
storeOperationPostTryBtn: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-placeOrder button.try-out__btn"
|
selector: "div#operations-store-placeOrder button.try-out__btn"
|
||||||
},
|
},
|
||||||
storeOperationPostExecuteBtn: {
|
storeOperationPostExecuteBtn: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-placeOrder button.execute"
|
selector: "div#operations-store-placeOrder button.execute"
|
||||||
},
|
},
|
||||||
storeOperationPostResponseId: {
|
storeOperationPostResponseId: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-placeOrder pre.example.microlight span:nth-child(22)"
|
selector: "div#operations-store-placeOrder pre.example.microlight span:nth-child(22)"
|
||||||
},
|
},
|
||||||
storeOperationPostResponsePetId: {
|
storeOperationPostResponsePetId: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-placeOrder pre.example.microlight span:nth-child(31)"
|
selector: "div#operations-store-placeOrder pre.example.microlight span:nth-child(31)"
|
||||||
},
|
},
|
||||||
storeOperationPostResponseQuantity: {
|
storeOperationPostResponseQuantity: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-placeOrder pre.example.microlight span:nth-child(40)"
|
selector: "div#operations-store-placeOrder pre.example.microlight span:nth-child(40)"
|
||||||
},
|
},
|
||||||
storeOperationPostResponseStatus: {
|
storeOperationPostResponseStatus: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-placeOrder pre.example.microlight span:nth-child(66)"
|
selector: "div#operations-store-placeOrder pre.example.microlight span:nth-child(66)"
|
||||||
},
|
},
|
||||||
storeOperationPostResponseComplete: {
|
storeOperationPostResponseComplete: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-placeOrder pre.example.microlight span:nth-child(75)"
|
selector: "div#operations-store-placeOrder pre.example.microlight span:nth-child(75)"
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* Delete /store/order/{orderId}
|
* Delete /store/order/{orderId}
|
||||||
*/
|
*/
|
||||||
storeOperationDeleteContainer: {
|
storeOperationDeleteContainer: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-deleteOrder"
|
selector: "div#operations-store-deleteOrder"
|
||||||
},
|
},
|
||||||
storeOperationDeleteTitle: {
|
storeOperationDeleteTitle: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-deleteOrder .opblock-summary-delete span.opblock-summary-path span"
|
selector: "div#operations-store-deleteOrder .opblock-summary-delete span.opblock-summary-path span"
|
||||||
},
|
},
|
||||||
storeOperationDeleteCollpase: {
|
storeOperationDeleteCollpase: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-deleteOrder .opblock-summary-delete"
|
selector: "div#operations-store-deleteOrder .opblock-summary-delete"
|
||||||
},
|
},
|
||||||
storeOperationDeleteCollapseContainer: {
|
storeOperationDeleteCollapseContainer: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-deleteOrder>div:nth-child(2)"
|
selector: "div#operations-store-deleteOrder>div:nth-child(2)"
|
||||||
},
|
},
|
||||||
storeOperationDeleteTryBtn: {
|
storeOperationDeleteTryBtn: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-deleteOrder button.try-out__btn"
|
selector: "div#operations-store-deleteOrder button.try-out__btn"
|
||||||
},
|
},
|
||||||
storeOperationDeleteExecuteBtn: {
|
storeOperationDeleteExecuteBtn: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-deleteOrder button.execute"
|
selector: "div#operations-store-deleteOrder button.execute"
|
||||||
},
|
},
|
||||||
storeOperationGetResponseHeaders: {
|
storeOperationGetResponseHeaders: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(2) div#operations-store-deleteOrder pre span"
|
selector: "div#operations-store-deleteOrder pre span"
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* *********User**************
|
* *********User**************
|
||||||
*/
|
*/
|
||||||
userAPIWrapper: {
|
userAPIWrapper: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(3)"
|
selector: "div.swagger-ui div:nth-child(5) > section > div > span:nth-child(3) > div"
|
||||||
},
|
},
|
||||||
userAPIWrapperBar: {
|
userAPIWrapperBar: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(3) .opblock-tag"
|
selector: "div.swagger-ui div:nth-child(5) > section > div > span:nth-child(3) > div .opblock-tag"
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* Put /user/login
|
* Put /user/login
|
||||||
*/
|
*/
|
||||||
userOperationPutContainer: {
|
userOperationPutContainer: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(3) div#operations-user-updateUser"
|
selector: "div#operations-user-updateUser"
|
||||||
},
|
},
|
||||||
userOperationPutTitle: {
|
userOperationPutTitle: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(3) div#operations-user-updateUser .opblock-summary-put span.opblock-summary-path span"
|
selector: "div#operations-user-updateUser .opblock-summary-put span.opblock-summary-path span"
|
||||||
},
|
},
|
||||||
userOperationPutCollpase: {
|
userOperationPutCollpase: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(3) div#operations-user-updateUser .opblock-summary-put"
|
selector: "div#operations-user-updateUser .opblock-summary-put"
|
||||||
},
|
},
|
||||||
userOperationPutCollapseContainer: {
|
userOperationPutCollapseContainer: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(3) div#operations-user-updateUser>div:nth-child(2)"
|
selector: "div#operations-user-updateUser>div:nth-child(2)"
|
||||||
},
|
},
|
||||||
userOperationPutTryBtn: {
|
userOperationPutTryBtn: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(3) div#operations-user-updateUser button.try-out__btn"
|
selector: "div#operations-user-updateUser button.try-out__btn"
|
||||||
},
|
},
|
||||||
userOperationPutExecuteBtn: {
|
userOperationPutExecuteBtn: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(3) div#operations-user-updateUser button.execute"
|
selector: "div#operations-user-updateUser button.execute"
|
||||||
},
|
},
|
||||||
userOperationPutParameter: {
|
userOperationPutParameter: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(3) div#operations-user-updateUser div.parameters-col_description input"
|
selector: "div#operations-user-updateUser div.parameters-col_description input"
|
||||||
},
|
},
|
||||||
userOperationPutResponseHeader: {
|
userOperationPutResponseHeader: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(3) div#operations-user-updateUser div.parameters-col_description input"
|
selector: "div#operations-user-updateUser div.parameters-col_description input"
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* Delete /user
|
* Delete /user
|
||||||
*/
|
*/
|
||||||
userOperationDeleteContainer: {
|
userOperationDeleteContainer: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(3) div#operations-user-deleteUser"
|
selector: "div#operations-user-deleteUser"
|
||||||
},
|
},
|
||||||
userOperationDeleteTitle: {
|
userOperationDeleteTitle: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(3) div#operations-user-deleteUser .opblock-summary-delete span.opblock-summary-path span"
|
selector: "div#operations-user-deleteUser .opblock-summary-delete span.opblock-summary-path span"
|
||||||
},
|
},
|
||||||
userOperationDeleteCollpase: {
|
userOperationDeleteCollpase: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(3) div#operations-user-deleteUser .opblock-summary-delete"
|
selector: "div#operations-user-deleteUser .opblock-summary-delete"
|
||||||
},
|
},
|
||||||
userOperationDeleteCollapseContainer: {
|
userOperationDeleteCollapseContainer: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(3) div#operations-user-deleteUser>div:nth-child(2)"
|
selector: "div#operations-user-deleteUser>div:nth-child(2)"
|
||||||
},
|
},
|
||||||
userOperationDeleteTryBtn: {
|
userOperationDeleteTryBtn: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(3) div#operations-user-deleteUser button.try-out__btn"
|
selector: "div#operations-user-deleteUser button.try-out__btn"
|
||||||
},
|
},
|
||||||
userOperationDeleteExecuteBtn: {
|
userOperationDeleteExecuteBtn: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(3) div#operations-user-deleteUser button.execute"
|
selector: "div#operations-user-deleteUser button.execute"
|
||||||
},
|
},
|
||||||
userOperationDeleteParameter: {
|
userOperationDeleteParameter: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(3) div#operations-user-deleteUser div.parameters-col_description input"
|
selector: "div#operations-user-deleteUser div.parameters-col_description input"
|
||||||
},
|
},
|
||||||
userOperationDeleteResponseHeader: {
|
userOperationDeleteResponseHeader: {
|
||||||
selector: ".swagger-ui .opblock-tag-section:nth-child(3) .opblock-delete div.parameters-col_description input"
|
selector: "div#operations-user-deleteUser div.parameters-col_description input"
|
||||||
},
|
},
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
/* Model Container */
|
/* Model Container */
|
||||||
modelWrapper: {
|
modelWrapper: {
|
||||||
selector: ".swagger-ui .wrapper:nth-child(4)",
|
selector: "div.swagger-ui > div:nth-child(2) > div:nth-child(6)",
|
||||||
elements: {
|
elements: {
|
||||||
modelContainer: {
|
modelContainer: {
|
||||||
selector: ".swagger-ui .models"
|
selector: ".swagger-ui .models"
|
||||||
|
|||||||
Reference in New Issue
Block a user