oas-toolkit 0.5.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components.js +12 -1
- package/components.test.js +60 -0
- package/package.json +1 -1
package/components.js
CHANGED
|
@@ -24,12 +24,23 @@ function removeSpecifiedComponents(oas, unused) {
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
function getReferencedComponents(oas) {
|
|
27
|
-
|
|
27
|
+
const components = traverse(oas).reduce(function (acc, x) {
|
|
28
28
|
if (this.isLeaf && this.key == "$ref") {
|
|
29
29
|
acc.push(x.replace("#/", "").replace(/\//g, "."));
|
|
30
30
|
}
|
|
31
31
|
return acc;
|
|
32
32
|
}, []);
|
|
33
|
+
|
|
34
|
+
// Add security schemes
|
|
35
|
+
if (oas.security){
|
|
36
|
+
for (let item of oas.security){
|
|
37
|
+
for (let key of Object.keys(item)){
|
|
38
|
+
components.push(`components.securitySchemes.${key}`)
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return components;
|
|
33
44
|
}
|
|
34
45
|
|
|
35
46
|
function getDefinedComponents(oas) {
|
package/components.test.js
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
const c = require("./components");
|
|
2
2
|
|
|
3
3
|
const components = {
|
|
4
|
+
securitySchemes: {
|
|
5
|
+
personalAccessToken: {
|
|
6
|
+
type: "http",
|
|
7
|
+
scheme: "bearer",
|
|
8
|
+
},
|
|
9
|
+
},
|
|
4
10
|
schemas: {
|
|
5
11
|
Foo: {
|
|
6
12
|
type: "object",
|
|
@@ -34,6 +40,7 @@ const components = {
|
|
|
34
40
|
|
|
35
41
|
const oas = {
|
|
36
42
|
info: { title: "One" },
|
|
43
|
+
security: [{ personalAccessToken: {} }],
|
|
37
44
|
paths: {
|
|
38
45
|
"/foo": {
|
|
39
46
|
post: {
|
|
@@ -62,6 +69,7 @@ describe("#components", () => {
|
|
|
62
69
|
expect(c.getReferencedComponents(oas)).toEqual([
|
|
63
70
|
"components.requestBodies.CreateFoo",
|
|
64
71
|
"components.schemas.Foo",
|
|
72
|
+
"components.securitySchemes.personalAccessToken",
|
|
65
73
|
]);
|
|
66
74
|
});
|
|
67
75
|
|
|
@@ -85,6 +93,7 @@ describe("#components", () => {
|
|
|
85
93
|
|
|
86
94
|
it("returns all defined components)", () => {
|
|
87
95
|
expect(c.getDefinedComponents(oas)).toEqual([
|
|
96
|
+
"components.securitySchemes.personalAccessToken",
|
|
88
97
|
"components.schemas.Foo",
|
|
89
98
|
"components.schemas.Baz",
|
|
90
99
|
"components.requestBodies.CreateFoo",
|
|
@@ -98,6 +107,12 @@ describe("#components", () => {
|
|
|
98
107
|
])
|
|
99
108
|
).toEqual({
|
|
100
109
|
components: {
|
|
110
|
+
securitySchemes: {
|
|
111
|
+
personalAccessToken: {
|
|
112
|
+
type: "http",
|
|
113
|
+
scheme: "bearer",
|
|
114
|
+
},
|
|
115
|
+
},
|
|
101
116
|
schemas: {
|
|
102
117
|
Foo: {
|
|
103
118
|
properties: {
|
|
@@ -122,6 +137,12 @@ describe("#components", () => {
|
|
|
122
137
|
c.removeSpecifiedComponents({ components }, ["components.schemas.Foo"])
|
|
123
138
|
).toEqual({
|
|
124
139
|
components: {
|
|
140
|
+
securitySchemes: {
|
|
141
|
+
personalAccessToken: {
|
|
142
|
+
type: "http",
|
|
143
|
+
scheme: "bearer",
|
|
144
|
+
},
|
|
145
|
+
},
|
|
125
146
|
schemas: {
|
|
126
147
|
Baz: {
|
|
127
148
|
type: "object",
|
|
@@ -151,6 +172,7 @@ describe("#components", () => {
|
|
|
151
172
|
it("autodiscovers and removes unused components", () => {
|
|
152
173
|
expect(c.removeUnusedComponents(oas)).toEqual({
|
|
153
174
|
info: { title: "One" },
|
|
175
|
+
security: [{ personalAccessToken: {} }],
|
|
154
176
|
paths: {
|
|
155
177
|
"/foo": {
|
|
156
178
|
post: {
|
|
@@ -181,6 +203,12 @@ describe("#components", () => {
|
|
|
181
203
|
},
|
|
182
204
|
},
|
|
183
205
|
},
|
|
206
|
+
securitySchemes: {
|
|
207
|
+
personalAccessToken: {
|
|
208
|
+
type: "http",
|
|
209
|
+
scheme: "bearer",
|
|
210
|
+
},
|
|
211
|
+
},
|
|
184
212
|
requestBodies: {
|
|
185
213
|
CreateFoo: {
|
|
186
214
|
content: {
|
|
@@ -198,4 +226,36 @@ describe("#components", () => {
|
|
|
198
226
|
},
|
|
199
227
|
});
|
|
200
228
|
});
|
|
229
|
+
|
|
230
|
+
it("removes unused security schemes", () => {
|
|
231
|
+
const securityOas = {
|
|
232
|
+
info: { title: "One" },
|
|
233
|
+
security: [{ personalAccessToken: {} }],
|
|
234
|
+
components: {
|
|
235
|
+
securitySchemes: {
|
|
236
|
+
personalAccessToken: {
|
|
237
|
+
type: "http",
|
|
238
|
+
scheme: "bearer",
|
|
239
|
+
},
|
|
240
|
+
systemAccessToken: {
|
|
241
|
+
type: "http",
|
|
242
|
+
scheme: "bearer",
|
|
243
|
+
},
|
|
244
|
+
},
|
|
245
|
+
},
|
|
246
|
+
};
|
|
247
|
+
|
|
248
|
+
expect(c.removeUnusedComponents(securityOas)).toEqual({
|
|
249
|
+
info: { title: "One" },
|
|
250
|
+
security: [{ personalAccessToken: {} }],
|
|
251
|
+
components: {
|
|
252
|
+
securitySchemes: {
|
|
253
|
+
personalAccessToken: {
|
|
254
|
+
type: "http",
|
|
255
|
+
scheme: "bearer",
|
|
256
|
+
},
|
|
257
|
+
},
|
|
258
|
+
},
|
|
259
|
+
});
|
|
260
|
+
});
|
|
201
261
|
});
|