Skip to content
This repository was archived by the owner on Nov 8, 2024. It is now read-only.

Commit cfbb335

Browse files
committed
fix(oas3): warn for unsupported scheme
1 parent bfe6894 commit cfbb335

File tree

3 files changed

+34
-1
lines changed

3 files changed

+34
-1
lines changed

packages/fury-adapter-oas3-parser/CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# Fury OAS3 Parser Changelog
22

3+
## TBD
4+
5+
### Bug Fixes
6+
7+
- Prevents the parser from throwing an error when encountering an unsupported
8+
scheme in a http Security Scheme Object.
9+
310
## 0.10.0 (2019-12-06)
411

512
### Enhancements

packages/fury-adapter-oas3-parser/lib/parser/oas/parseSecuritySchemeObject.js

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,20 @@ function validateApiKeyScheme(context, securityScheme) {
5757
function validateHttpScheme(context, securityScheme) {
5858
const { namespace } = context;
5959

60+
const schemes = ['bearer', 'basic'];
61+
const isValidScheme = R.anyPass(R.map(hasValue, schemes));
62+
const createInvalidSchemeWarning = scheme => createWarning(
63+
namespace,
64+
`'${name}' 'http' contains unsupported scheme '${scheme.value.toValue()}', supported schemes ${schemes.join(', ')}`,
65+
scheme.value
66+
);
67+
68+
const parseScheme = pipeParseResult(namespace,
69+
parseString(context, name, false),
70+
R.unless(isValidScheme, createInvalidSchemeWarning));
71+
6072
const parseMember = R.cond([
61-
[hasKey('scheme'), parseString(context, name, false)],
73+
[hasKey('scheme'), parseScheme],
6274

6375
[innerPassThrough, e => e],
6476
[isUnsupportedKey, e => e],

packages/fury-adapter-oas3-parser/test/unit/parser/oas/parseSecuritySchemeObject-test.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,20 @@ describe('Security Scheme Object', () => {
413413
expect(parseResult.length).to.equal(2);
414414
expect(parseResult).to.contain.warning("'Security Scheme Object' 'http' contains invalid key 'flows'");
415415
});
416+
417+
it('provides warning for invalid scheme', () => {
418+
const securityScheme = new namespace.elements.Object({
419+
type: 'http',
420+
scheme: 'basic[',
421+
});
422+
423+
const parseResult = parse(context, securityScheme);
424+
425+
expect(parseResult.length).to.equal(1);
426+
expect(parseResult).to.contain.warning(
427+
"'Security Scheme Object' 'http' contains unsupported scheme 'basic[', supported schemes bearer, basic"
428+
);
429+
});
416430
});
417431

418432
describe('warnings for unsupported properties', () => {

0 commit comments

Comments
 (0)