Commit Graph

388 Commits

Author SHA1 Message Date
Tim Lai
0a807d6237 fix(auth): support for oauth2 relative url (#6546)
* Handle relative urls for oauth authorization

The full URL is computed based on the current selected server
if a relative URL is used as authorizationUrl
or tokenUrl


Co-authored-by: Eliot Berriot <contact@eliotberriot.com>
2020-10-21 15:46:31 -07:00
Adam Stachowicz
8e3e059aa1 fix: add additional autoFocus for http-auth component (#6527)
* Addendum to commit 65ea764b, in PR #6483
2020-10-16 14:19:52 -07:00
Lucia Sarni
5065613130 fix(requestBody): hide read only properties (#6490) 2020-10-15 11:25:06 -07:00
Tim Lai
3905fadfbe fix(oas3): switching media types should update schema properties (#6518)
* When the media-type is changed, there is a new `onChangeMediaType` method to handle actions.
* If target schema properties key/value pairs does NOT equals current schema properties, clear the requestBodyValue, try-it-out request/response and validation params.
* If target schema properties key/value pairs DOES equals current schema properties, do not change or re-render schema properties
* oas3Selector `validateShallowRequired` now also validates required keys against target media-type

Fixes #6201, #6250, #6476
2020-10-14 16:24:07 -07:00
Mahtis Michel
f4bdf2f953 fix: multipart array sample generation for items (#6461)
* json schema array component should use schema to generate example in case of array items.
* empty value checkbox should be disabled if not empty => not empty list || not empty string
* curl should also check for not empty list
2020-10-07 16:59:29 -07:00
Adrien Becchis
b5e8081115 fix(syntax-highlighter): configuration for Examples (#6455)
* Complement #5259, getConfigs was not correctly forwarded to Examples. As a result, syntax highlight could not be disabled be disabled or configured in that elements
2020-10-02 14:44:46 -07:00
Amir Bitaraf Haghighi
96aecc8860 feat: Preserve authorization on browser refresh and close/reopen (#5939)
* Add default configuration `preserveAuthorization`

* Add localStorage to auth plugin

* Add persistAuthorization unit tests

* Refactor persistAuthorization to use wrapped actions

* Upgrade unit tests to be compatible with jest

* Add persistAuthorization documentation


Co-authored-by: Tim Lai <timothy.lai@gmail.com>
2020-09-11 14:05:37 -07:00
ben-smartbear
6ad418d0ab fix: Updating select to pass in a better prop; updating test to do a better check (#6385)
fixes #6372
2020-09-10 11:06:46 -07:00
geraldglynn
0199b4785f fix: Add entrySeq() to bodyProperties.map() (#6267)
* Added immutable guard to  bodyProperties
2020-09-09 18:46:24 -07:00
ben-smartbear
5123b47ef4 fix: Allowing servers dropdown to change when oas3Actions.setSelectedServer is called (#6358)
ref: #6351
2020-09-08 15:37:48 -07:00
Tim Lai
6742cbd38b fix: remove unused non-compliant system method inside 'err' reducer (#6330) 2020-08-20 15:51:30 -07:00
Tim Lai
2eaa6c10e4 feat(build): es2015 bundle artifact (#6291)
* es2015 bundle with dependencies via npm script build:es:bundle
* es2015 bundle without dependencies via npm script build:es:bundle
* jest dependency for test:artifact
* migrate babel.config.json to babel.config.js and maintain env support for commonjs and es2015
* remove polyfill
* fix es syntax: replace module.exports with export
* fix es syntax: remove .jsx extension inside import
2020-08-13 17:21:55 -07:00
Tim Lai
22668ee8d3 fix(OAS3): servers component update on definition change (#6280)
* fix(OAS3): servers component should use nextProps

* test(OAS3): cypress tests for selecting multiple servers

* test(OAS3): multiple server test with definition change
2020-07-31 16:22:17 -07:00
Tim Lai
abcc3837e9 fix(requestInterceptor): use async/await to support return new Promise (#6279)
ref: #4778
2020-07-31 10:07:52 -07:00
Tim Lai
2fd1e4037c feat(RequestBody): validation support for required fields (#6223)
fixes #5181

* application/json
* application/xml
* application/x-www-form-urlencoded

* Set requestBodyValue values to be an immutable Map, as "value". Previously stored as a normal String.
* This enables adding "errors" to the Map, for validation use

* note: getOAS3RequiredRequestBodyContentType requires state.spec,
* which is not available to state.oas3
2020-07-16 17:53:28 -07:00
Tim Lai
b68942c043 feat(RequestBody): set default true for 'send empty value' (#6228) 2020-07-16 17:01:18 -07:00
Tim Lai
eacc7b92d1 Revert "revert: feat: Allow to skip submitting empty values in form data (#5830)" (#6227)
This reverts commit 1b6cb7d1bf.
2020-07-15 16:07:32 -07:00
Vladimir Gorej
1b6cb7d1bf revert: feat: Allow to skip submitting empty values in form data (#5830)
This reverts commit b9b32c9c93.

Refs #6203 #5830
2020-07-07 16:17:36 +02:00
Vladimir Gorej
e3b3bf03d4 build(bundle): use ES6 to import swagger-client symbols (#6208)
swagger-client in versions =3.10.9 exports it's build artifacts in multiple ways.
One artifact is exposed as ES5 compatible code with ES6 imports.
We use this fact to utilize webpack tree shaking algorithm.
This commit also updates swagger-client to v3.10.0
and decreases bundle size for around 10%.
2020-07-06 14:19:09 +02:00
Vladimir Gorej
95c3da19cc refactor(swagger-client): fix import of helpers (#6190)
Import of helpers from swagger-client worked because of the fact
that commonjs exports are basically an objects that can be destructured.
Whenever swagger-client switches to ES6 imports as primary mechanism
of webpack consuptions imports like that will fail. This change makes
sure that import mechanism is both compatible with ES6 and commonjs
import systems.

Along with that rename default import of swagger-client
to more appropriate SwaggerClient.
2020-07-04 13:50:36 +02:00
geraldglynn
e1e4d5bf83 fix: render Common Extensions propertly in React 16 (#5930)
Avoid mapping Immutable.Map as React children.

Co-authored-by: Vladimir Gorej <vladimir.gorej@gmail.com>

Ref https://github.com/immutable-js/immutable-js/issues/667
2020-06-22 18:08:03 +02:00
geraldglynn
93020e2803 fix: avoid mapping Immutable.Map as React children (#6165)
Ref https://github.com/immutable-js/immutable-js/issues/667
2020-06-22 17:57:00 +02:00
blacktemplar
f8dd4e68ec feat(model view): hide applicable readOnly and writeOnly properties (#5832) 2020-06-15 13:47:26 -07:00
Vladimir Gorej
a616cb471d fix(Markdown): render markdown in more secure way
This commit changes markdown sanitization behaviour in following way:

class, style and data-* attributes are removed by default. These attributes
open possible vulnerability vectors to attackers.

The original behavior of sanitizer (before this commit) can be enabled by *useUnsafeMarkdown* configuration option.
Use this configuration option with caution and only in cases when you know
what you're doing.
2020-06-11 21:51:15 +02:00
tomdegoede
fc3ed30f3d improvement: Move inline styles to SCSS instead (#5578)
* fix: convert propStyle to propClass
2020-06-10 16:39:48 -07:00
John
21f51494a2 fix: support variables in auth urls (#5913) 2020-06-10 14:45:02 -07:00
Tim Lai
7a1b627d0b housekeeping: remarkable (#6073)
Refs: #6050
2020-06-03 15:04:00 -07:00
Tim Lai
a371ba1ca9 fix: bugs/4641 flaky test (#6047)
* fix: flaky bugs/4641 test

* fix: apply isFunc check for security.getIn
2020-06-01 14:23:51 -07:00
abcang
b9b32c9c93 feat: Allow to skip submitting empty values in form data (#5830) 2020-05-29 15:46:08 -07:00
Tim Lai
5eb23cdd48 ft: JsonSchema components are now ImmutableJS compliant (#5952)
bug: JsonSchema components should validate schema properties exists
  - schema
  - type
  - format
  - enum
bug: fix a debounce error in JsonSchema_string if value is null
ft: new simplified JsonSchemaArrayItemText component
test: use immutableJS for `json-schema-form` test
test: add dev scripts to run `cypress open`
test: new cypress `schema-form` tests
2020-05-06 13:57:58 -07:00
Timothy Lai
0426eb2344 housekeeping: prevent log warning for missing getComponent in production
This is a force-pushed squash of two PR merges (#5919, #5940) that were
formerly present on master as individual commits.

Co-Authored-By: kyle shockey <kyleshockey@gmail.com>
2020-04-04 18:52:25 -04:00
Simran
95e72e7c70 improvement: do not require basic password in UI (#5812)
* Fix basic-auth.jsx: do not require password in UI

password is not PropTypes.string.isRequired, but the markup wrongly makes it mandatory

* Do not require password input in http-auth.jsx

This is used by the Authorize modal. Not sure when the similar code from basic-auth.jsx is used.

Co-authored-by: kyle shockey <kyle.shockey1@gmail.com>
2020-03-22 19:53:04 -04:00
Tim Lai
10b08af5ec Fix: #5669 online validator badge (#5909)
* fix: enable online validator badge

since online validator badge now can handle OAS3 specs
2020-03-11 09:59:00 -07:00
geraldglynn
54f82df3c3 improvement: add isShownKey prop to Operation to allow overriding (#5196)
* Added optional isShownKey prop to Componenent to allow overriding

* Removed unneccasry  before is isShwonKey

* Added PropTypes to isShownKey

* Added isShownKey to <OperationWrapper/> and removed it from <Operation />

* Removed isShwonKey prop it from <Operation />

* revert package-lock.json

Co-authored-by: kyle shockey <kyleshockey@gmail.com>
2020-03-08 21:59:15 -04:00
poveilleux
139592e353 feat: add PKCE support for OAuth2 Authorization Code flows (#5361)
* Add PKCE support.

* Fix tests

* Update oauth2.md

* Rename usePkce

* Fix the BrokenComponent error

* Update oauth2.md

* Remove isCode variable. Remove uuid4 dependency.

* Remove utils functions

* Import crypto

* Fix tests

* Fix the tests

* Cleanup

* Fix code_challenge generation

* Move code challenge and verifier to utils for mocks. Update tests.

* Mock the PKCE methods in the utils file properly.

* Add missing expect

* use target-method spies

* Add comments to explain test values.

* Get rid of jsrsasign.
2019-10-07 17:24:43 -07:00
kyle
c9c3b2338e feature: support for Parameter.content (#5571)
* add `getParameterSchema` OAS helper

* use `Parameter.content.[firstKey].schema` as schema value when present

* `newValue` -> `initialValue`

* make `paramWithMeta` a const

* add trailing comma to `swagger2SchemaKeys`

* refactor `helpers` to a folder

* deprecate `src/core/utils.js` in favor of `src/core/helpers/`

* support `Parameter.content.[mediaType].schema` in validateParam

* reject `null` as an OAS3 object value

* expose Fetch errors in the browser console

* generate ParameterRow default values based on `content` values

* add tests for `getParameterSchema`

* remove debugger statement

* remove debugger statement

* don't apply `generatedSampleValue`s to parameters with `examples`

* remove extra semi

* disable JSON check in parameter runtime validation

* stringify JsonSchema_object textarea values

* add Cypress tests

* swagger-client@3.9.4
2019-08-31 16:37:43 -07:00
thierrydallacroce
0b3489b52d fix: remove .col class that causes collision with Bootstrap (via #5541)
* improvement: address Bootstrap conflict by removing our .col class (#4574)

* use `.parameters-col_description` selector in Cypress tests
2019-08-20 19:51:45 -07:00
kyle
2af696dcc1 housekeeping: @kyleshockey/js-yaml -> js-yaml (via #5511)
* `@kyleshockey/js-yaml` -> `js-yaml`

* externalize `esprima`
2019-07-31 14:45:18 -07:00
kyle
e895fb544f fix: use null as a notSetValue for examplesForMediaType (via #5503)
* fix: use null as a notSetValue for examplesForMediaType

fixes #5455

* tests!
2019-07-29 21:44:14 -05:00
kyle
9935ea3328 housekeeping: upgrade to babel@7 (via #5450)
* Babel 7

* preserve module output; straighten out ES/CJS syntax

* add webpack TODOs

* remove unused Babel modules

* Update index.js

* install @babel/register
2019-07-09 23:25:34 -05:00
kyle
23d7260f92 feat: Multiple Examples for OpenAPI 3 Parameters, Request Bodies, and Responses (via #5427)
* add opt-in Prettier config

* remove legacy `examples` implementation

* create ExamplesSelect

* support `Response.examples` in OpenAPI 3

* create response controls group

* prettier reformat

* prepare to break up Parameters

* reunify Parameters and OAS3 Parameters

* Parameter Examples

* Example component

* handle parameter value stringification correctly

* FOR REVIEW: add prop for controlling Select

* use regular header for param examples in Try-It-Out

* manage active examples member via Redux

* Request Body Try-It-Out examples

* remove special Response description styling

* omit Example value display in Try-It-Out

* support disabled text inputs in JsonSchemaForm

* Example.omitValue => Example.showValue

* ExamplesSelectValueRetainer

* styling for disabled inputs

* remove console.log

* support "Modified Values" in ExamplesSelect

* remove Examples component
(wasn't used anywhere)

* use ParameterRow.getParamKey for active examples member keying

* split-rendering of examples in ParameterRow

* send disabled prop to JsonSchemaForm

* use content type to key request body active examples members

* remove debugger

* rewire RequestBodyEditor to be a controlled component

REVIEW: does this have perf implications?

* trigger synthetic onSelect events in ExamplesSelect

* prettier updates

* remove outdated Examples usage in RequestBody

* don't handle examples changes in ESVR

* make RequestBodyEditor semi-controlled

* don't default to an empty Map for request bodies

* add namespaceKey to ESVR for state mgmt

* don't key RequestBody activeExampleKeys on media type

* tweak ESVR isModifiedValueSelected calculation

* add trace class to ExamplesSelect

* remove usage of ESVR.currentNamespace

* reset to first example if currentExampleKey is invalid

* add default values to RequestBody rendering

* stringify things in ESVR

* avoid null select value (silences React warning)

* detect user inputs that match any examples member's value

* add trace class for json-schema-array

* shallowly convert namespace state, to preserve Immutable stucts in state

* stringify RBE values; don't trim JSON in editor

* match user input to an example when non-primitives are expressed in state as strings

* update Cypress

* don't apply sample values in JsonSchema_Object

* support disabling all JsonSchemaForm subcomponents

* Core tests

* style changes to accomodate Examples

* fix version-checking error in Response

* disable SCU for Responses

* don't stringify Select values

* ModelExample: default to Model tab if no example is available; provide a default no example message

* don't trim JSON ParamBody inputs

* read directly from 2.0 Response.schema instead of inferring a value

* show current Example information in RequestBody

* show label for Examples dropdown by default

* rework Response content ordering

* style disabled textareas like other read-only blocks

* meta: fix sourcemaps

* refactor ESVR setNameForNamespace

* protect second half of ternary expession

* cypress: `select.examples-select` => `.examples-select > select`

* clarify ModelExample.componentWillReceiveProps

* add gates/defaults to prevent issues in very bare-boned documents

* fix test block organization problem

* simplify RequestBodyEditor interface

* linter fixes

* prettier updates

* use plugin system for new components

* move ME Cypress helpers to other file
2019-06-29 19:52:51 +01:00
kyle
1dd87ce26e fix: refuse to render non-string Markdown field values (via #5295) 2019-04-10 16:04:33 -07:00
Segev Finer
be72c292ca feature: add withCredentials configuration key (via #5149)
* Add the withCredentials configuration key

It enables passing credentials in CORS requests. e.g. Cookies and
Authorization headers.

* Improve withCredentials documentation

* Add unit tests for the withCredentials config

* Update configuration.md

* Update configuration.md

* only set `withCredentials` Fetch flag if the config value is truthy

there are some workarounds in the wild today that involve setting `withCredentials` on `system.fn.fetch` directly. 

this approach avoids mangling those existing workarounds!

* add more test cases

* Update configs-wrap-actions.js

* Update index.js
2019-03-20 12:36:08 -07:00
Brian Johnson
65e8abde55 improvement: support GFM table syntax in OpenAPI 3.0 (via #5224) 2019-03-14 17:58:02 -07:00
kyle
e95588bd1f improvement: gracefully render malformed and empty requestBodies (via #5208) 2019-02-28 19:54:21 -08:00
kyle
0990aa82f2 improve: subtree resolver batch handling (via #5193)
* fix: prevent subtree paths from being queued more than once in a batch

* fix: clear subtree resolver errors by current path

* drop `List` import
2019-02-25 14:33:10 -08:00
dalbrx-forcam
937c8f6208 improvement: set X-Requested-With to prevent browser authentication dialog (via #4934) 2019-02-14 17:20:06 -06:00
kyle
373da3bee3 fix: provide JSON editor for x-www-form-urlencoded bodies lacking properties (via #5180) 2019-02-13 18:47:01 -06:00
kyle
3434312cf7 housekeeping: corresponding changes for swagger-api/swagger-editor#1935 (via #5170)
* `schema` -> `structural`

* drop strip-instance transformer
2019-02-08 17:16:18 -06:00
kyle
d3c2e2777f fix: coerce multipart initial property values to string (via #5166)
* coerce multipart initial property values to string

* add tests
2019-02-07 15:35:22 -06:00