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 CHANGED
@@ -24,12 +24,23 @@ function removeSpecifiedComponents(oas, unused) {
24
24
  }
25
25
 
26
26
  function getReferencedComponents(oas) {
27
- return traverse(oas).reduce(function (acc, x) {
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) {
@@ -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
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oas-toolkit",
3
- "version": "0.5.1",
3
+ "version": "0.5.2",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "bin": {