Commit Graph

53 Commits

Author SHA1 Message Date
Jack Kavanagh
d0240e38cb
fix: inso dereferencing/flattening $refs (#6080)
* wip

* manually revert 4872 disabling request validator circular refs

* clean up

* clean up
2023-07-03 14:21:25 +00:00
Filipe Freire
1b87404649
INS-2639: add kong 3.x support for inso generate k8s config (#5977)
* INS-2639: add kong 3.x support for inso generate k8s config

* Update packages/openapi-2-kong/src/kubernetes/generate.test.ts

Co-authored-by: Michael Heap <m@michaelheap.com>

* test

---------

Co-authored-by: Michael Heap <m@michaelheap.com>
2023-05-22 13:15:06 +00:00
Thijs Schreijer
480f9c0a36
update test to expose bug in regex generation (#5974)
* update test to expose bug in regex generation

sanitizing the path-variable name is not done correctly, as it sanitizes the entire path. So it also makes unintended changes.

* fix failing test, add +1 test

---------

Co-authored-by: Filipe Freire <livrofubia@gmail.com>
2023-05-17 11:25:58 +00:00
Filipe Freire
96b36d9c28
INS-2627: sanitize path-variable name regex capture for kong 3.x (#5958)
* INS-2627: sanitize path-variable name regex capture for kong 3.x

* add slugify, and extract function

* sanitize path param in plugins.ts
2023-05-15 13:57:39 +00:00
Zhizhen He
9f64e6de65
fix typos (#5896)
Signed-off-by: Zhizhen He <hezhizhen.yi@gmail.com>
2023-04-21 10:32:30 +00:00
Filipe Freire
97a4d10048
INS-2434: basic Kong 3.x support on Inso CLI (#5827)
* INS-2434: Kong 3.x support on Inso CLI

* fix test

* Add basic support for kong 3.0 on Insomnia UI
2023-03-14 15:17:28 +00:00
Jack Tysoe
46bb161134
Enable automated security plugins at the service (root spec) level (#5378)
* feat(plugins): enable support for service-level security definition plugins

* feat(plugins): add tests for service-level security plugins

* fix(syntax): match regexes to last commit

* fix lint

Co-authored-by: Filipe Freire <livrofubia@gmail.com>
2022-12-14 15:30:56 +00:00
James Gatz
7988137f2c
upgrade vite to v3 (#5417)
* update type-fest imports

* move main css to html

* update electron imports

* update nunjucks imports

* use swagger ui dist

* remove commonjs-externals and add electron node require plugin

* update package

* fix misc.ts imports

* remove buffer from builtins since we use a package for it

* plugin docs

* Update packages/insomnia/src/main/window-utils.ts

Co-authored-by: Filipe Freire <livrofubia@gmail.com>
2022-11-17 13:37:53 +01:00
Antoine Jacquemin
d102de2850
Fix how path variables are escaped for Swagger (#5246)
* path escapte fix 

paths in swagger are not correctly escaped and won't be correct. You can try with following swagger:

openapi: 3.0.0
info:
 title: SampleAPI
 version: "1.0"
tags:
  - description: Sample API
    name: Sample Echo API
paths:
  /healthcheck/$echo:
    get:
      parameters:
        - in: query
          name: message
          required: true
          schema:
            type: string
          description: The echo message
      responses:
        "200":
          description: An echo message.
      summary: Return a echo message.
      operationId: getEcho
      tags:
        - Generate echo message
  /batchs(Material='{Material}',Batch='{Batch}'):
    get:
      parameters:
        - in: path
          name: Material
          required: true
          schema:
            type: string
          description: The echo message
        - in: path
          name: Batch
          required: true
          schema:
            type: string
          description: The echo message
      responses:
        "200":
          description: An echo message.
      summary: Return a echo message.
      operationId: getBatch
      tags:
        - Generate echo message
servers:
  - url: https://httpbin.org/anything

* Update test for new regex fix

* Update common.test.ts

* Update common.ts

* Update common.test.ts

* Update common.ts

* Update common.test.ts

* Update common.ts

* Patch-Regex-Text

* Update services.test.ts

* Update httpbin.expected.json

* Update link-example.expected.json

* Update petstore-expanded.expected.json

* Update petstore.expected.json

* Update request-validator-plugin.expected.json

* Update uspto.expected.json

* Update generate.js

* Update generate.js
2022-10-24 16:00:34 -04:00
Jack Kavanagh
49a792b4a4
o2k: removed partial support for oauth2 (#5260)
* o2k: removed partial support for oauth2

* Fix fixtures

Co-authored-by: Filipe Freire <livrofubia@gmail.com>
2022-10-12 17:39:23 +02:00
Mark Kim
2a315a5242
fix(openapi2kong): removing unused component reference (#4911)
* add removing logic

* add recursion

* add comments

* add circular ref yaml and its expected mock

* change the $refs.get to the check method

* add path buildilng

* add for loop

* simplifies circular test

* add feedback

* add comments

* add clean up and doc

* adds response to circular-requestBody.yaml so that it's valid & lints

* inlines helpers (and catches null cases it missed)

Co-authored-by: Dimitri Mitropoulos <dimitrimitropoulos@gmail.com>
2022-07-07 15:41:12 -04:00
Mark Kim
4f5ef73f7e
fix: adding a fix to the openapi2kong circular deps issue (#4872)
* commit progress

* save changes

* add components and $schema

* add components and $schema

* adding a doc

* add typings

* fix unit tests

* fix unit tests

* add fix and verified with kong cli

* fix unit tests

* Improve types and parameter/body resolution

Co-authored-by: Mark Kim <marckong@users.noreply.github.com>

* fix circular "components" issue

Co-authored-by: gatzjames <jamesgatzos@gmail.com>
Co-authored-by: Mark Kim <marckong@users.noreply.github.com>
2022-06-24 19:48:45 +00:00
Dimitri Mitropoulos
52393eccc0
chore(deps): upgrades jest to 28 (#4783) 2022-05-17 08:18:06 -04:00
Filipe Freire
7e209fa20a
Fix FTI-3278, missing null type for kong request-validator plugin on nullable true. (#4675) 2022-04-19 20:53:20 +00:00
Filipe Freire
cc63a1ccec
Chore: Update extensions/v1beta1 to networking.k8s.io/v1 on OpenAPI-2-Kong (#4667)
* Update extensions/v1beta1 to  networking.k8s.io/v1

This is follow the deprecation guide of past k8s version 1.22

https://kubernetes.io/docs/reference/using-api/deprecation-guide/#ingress-v122

* Fix other deprecated k8s ingress interfaces.

* Fix typo in url.
2022-04-19 18:00:23 +00:00
Filipe Freire
e8c19f44e5
Reproduce and Fix #4432 (#4657)
* Add failing fixtures that repro #4432

* Add test for generateSlug

* Fix #4432. Pin slugify to 1.6.5.
2022-03-30 13:31:15 +00:00
James Gatz
65203b89b0
update swagger-parser and support oas 3.0.3 (#4654)
Co-authored-by: Dimitri Mitropoulos <dimitropoulos@users.noreply.github.com>
2022-03-29 18:13:28 +02:00
Dane Mortimer
17f0a43f62
Concating x-kong-security-openid-connect config with security schemas… (#4607)
* Concating x-kong-security-openid-connect config with security schemas config

* Removing enabled as it is enabled by default

* Small improvement + add tests


Co-authored-by: Dimitri Mitropoulos <dimitrimitropoulos@gmail.com>

Co-authored-by: Filipe Freire <livrofubia@gmail.com>
Co-authored-by: Dimitri Mitropoulos <dimitrimitropoulos@gmail.com>
2022-03-29 12:44:25 +00:00
Jack Tysoe
0ae0dd4944
Allow overriding "coreAnnotations" on Kubernetes Ingress objects (#4349) 2022-01-10 17:07:56 -05:00
Opender Singh
be1757e27e
Append upstream name using a utility (#4135) 2021-11-08 11:11:15 +00:00
Jack Kavanagh
3e7a7d7cea
only add upstreams when needed (#4105) 2021-10-24 19:10:02 +00:00
Jack Kavanagh
7856524a96
distinguish upstreams name in declarative config (#4099) 2021-10-13 17:52:40 +00:00
James Gatz
bc35b48f40
Fix/o2k allow whitespace in route paths (#4029)
* Update path param regex to allow for whitespace characters in paths

* Update fixtures for the route path regex
2021-09-20 12:43:39 +02:00
Opender Singh
7ffc391428
add eslint rules for semi colons (#3989)
* add rules for semi colons

* run lint fix

* remove invalid eslint disable
2021-09-01 10:50:26 -04:00
Dimitri Mitropoulos
0178533e52
Feat/eslint import order (#3782) 2021-07-23 11:04:56 +12:00
Dimitri Mitropoulos
3ba7b880b6
[o2k] all Kong entities have should tags (#3428) 2021-06-02 08:55:31 -04:00
Opender Singh
d7b630f17b
Add formatting ESLint rules (#3425)
* add rules

* run lint:fix

* quick manual fix for lint errors

* indent fix

* add jsx prop multiline

Co-authored-by: Dimitri Mitropoulos <dimitrimitropoulos@gmail.com>
2021-05-27 14:00:32 -04:00
Dimitri Mitropoulos
2bf4586dc7
[o2k] copy plugin objects as is (and respect enabled flag) (#3419)
* clears all errors in tests, enables overrides for spec generators

* removes copy/pasta in tests, uses spec generator, removes useless async

continuing from the last commit, but separated out for easier review

* consolidates openapi x-kong extension to one place, uses consistently

these were used for some things, not used for others, exported in some places, not exported in others.  now it's uniform and we can look up references for each type.

* adds failing test for ticket

* only adds `enabled` where it was specified

* allows adding passing top-level properties to config

now, the line that was there specifically for `config` is redundant.

* adds tags to test result per review feedback

* removes unnecessary generic

for some reason, this didn't error before, but now it is.

* removes unnecessary argument

this failed on the CI with:

openapi-2-kong: FAIL src/generate.test.ts
openapi-2-kong:   ● Test suite failed to run
openapi-2-kong:     src/generate.test.ts:90:58 - error TS2769: No overload matches this call.
openapi-2-kong:       Overload 1 of 2, '(src: string, options?: (ParseOptions & DocumentOptions & SchemaOptions & ToJSOptions) | undefined): any', gave the following error.
openapi-2-kong:         Argument of type '"utf8"' is not assignable to parameter of type '(ParseOptions & DocumentOptions & SchemaOptions & ToJSOptions) | undefined'.
openapi-2-kong:       Overload 2 of 2, '(src: string, reviver: Reviver, options?: (ParseOptions & DocumentOptions & SchemaOptions & ToJSOptions) | undefined): any', gave the following error.
openapi-2-kong:         Argument of type 'string' is not assignable to parameter of type 'Reviver'.
openapi-2-kong:     90       const parsedSpec = YAML.parse(dcFixtureFileString, 'utf8');
openapi-2-kong:                                                                 ~~~~~~
openapi-2-kong:     src/generate.test.ts💯59 - error TS2769: No overload matches this call.
openapi-2-kong:       Overload 1 of 2, '(src: string, options?: (ParseOptions & DocumentOptions & SchemaOptions & ToJSOptions) | undefined): any', gave the following error.
openapi-2-kong:         Argument of type '"utf8"' is not assignable to parameter of type '(ParseOptions & DocumentOptions & SchemaOptions & ToJSOptions) | undefined'.
openapi-2-kong:       Overload 2 of 2, '(src: string, reviver: Reviver, options?: (ParseOptions & DocumentOptions & SchemaOptions & ToJSOptions) | undefined): any', gave the following error.
openapi-2-kong:         Argument of type 'string' is not assignable to parameter of type 'Reviver'.
openapi-2-kong:     100       const parsedSpec = YAML.parse(k8sFixtureFileString, 'utf8');
2021-05-25 16:05:52 -04:00
Josh Soref
9006babd38
fix spelling (#2976) 2021-05-25 12:16:43 -04:00
Dimitri Mitropoulos
5cd52b2bc9
Fix: o2k optional tags signatures (#3416)
* removes unnecessary plugin indirection

there is no reason to have functions that literally call other functions with the same argument.  well... maybe not _no_ reason, but the one valid reason I can think of (to satisfy an abstraction's constraints) is not met here.  This serves no documentational value either because it creates indirection rather than showing what it's really doing (which is, to generate a plugin).

* reworks generatePlugins and generatePlugin signatures

adds Entry, removes optional `tags`, curries

* use option parameter syntax for generateRequestValidatorPlugin

also, many errors were occurring for OA3Operation.responses not being passed over and over again, leading me to believe it's valid to do so.

* ensures `generateOperationPlugins` has tags, uses option parameter

* removes flowtype comments

* updates readme examples along with readme function signatures

parseSpec and generate were `async` but never awaited

Co-authored-by: Opender Singh <opender.singh@konghq.com>
2021-05-25 08:26:42 -04:00
Dimitri Mitropoulos
8fb789f14d
[o2k] fix: kubernetes TLS implementation is (very) wrong (#3410)
* updates Kubernetes types to actually match Kuberenetes Ingress/v1beta1 API

* checks type of result in tests

among other cosmetic changes

* enables strict mode in o2k (but leaves bug it uncovered that this PR fixes)

I really do need this to complete the task at hand.  For example, there was an existing error in `ingressDocWithOverride`:

```
Type 'string | null | undefined' is not assignable to type 'string | undefined'.
  Type 'null' is not assignable to type 'string | undefined'.ts(2322)
kubernetes-config.ts(36, 3): The expected type comes from property 'path' which is declared here on type 'K8sHTTPIngressPath'
```

That is caught only by strict mode.  This is literally what I am fixing in this PR, so it seems like as good a time as any.  Thankfully, only took me ~30 minutes to do because it was already super close.

* fixtures for `kong-for-kubernetes`

* index exporters for actual exports

when I made these files, I didn't understand that the lower-level helpers are not actually exported by the library, therefore there's no reason to have these index.ts files.

Furthermore, the types file could use it's own for the same reason, because those types _are_ actually exported.

* fixes bug: TLS is now an array and a child of K8sIngress.spec

* updates 'yaml'

for some reason I cannot explain, suddenly the CI is failing constantly because of this package.  https://github.com/Kong/insomnia/runs/2639615988

The only `yaml` exports we use in`o2k` are `parse` and `stringify` and we don't re-export it in any way.  Therefore, we should be safe to update it (many other projects in the monorepo are on different versions anyway).  This recent version is written purely in TypeScript, so we don't need the types packages anymore.

* adds a few more docs
2021-05-24 08:23:51 -04:00
Dimitri Mitropoulos
3605bc17cc
Feat/o2k improvements (#3396)
* makes this `yaml` import match all others

for better or for worse, until we upgrade `YAML` (it's now written in TypeScript) we should probably aim for consistency.

* adds overloads so that types of package exports

it would be FAR preferable to use an object with the arguments instead because then we don't have to fall into all the traps that come with overloads, but I am avoiding changing the actual call signature of these function.

* fixes and updates types

* corrects mispelling

* removes shim types and exports actual types from openapi-2-kong

we had everything in place for the rest of the build pipeline to consume these types, but were missing the main exports at the root index.ts file

* use actual openapi-2-kong types now that they're available

* use existing variable for filePath

* extracts o2k-specific helper data to live in o2k

evidently, this data is useful for the usage of o2k, therefore o2k should be the thing exporting it.

* use KubernetesManifest for name of kubernetes manifest union

when first naming this, I didn't have much more context than the property name (documents), so after taking a look,  it's clear that these are kubernetes manifests

* removes attempt at correctly typing overloads

I will return to this, and so I'm leaving it here in a commit rather than squashing it out, but I can't see a way to get it to work without changing the signature in a big way.

* fixes error (now that there are yaml types)

* makes `K8s` vs `Kubernetes` type terminology consistent

part of the motivation for this is that there are significant things in common between the two kinds of configs, making them closer in form is therefore ideal.

* updates mistake in name per review feedback
2021-05-19 22:49:50 -04:00
Dimitri Mitropoulos
5f4c19da35
[TypeScript] Phase 1 & 2 (#3370)
Co-authored-by: Opender Singh <opender.singh@konghq.com>
2021-05-12 18:35:00 +12:00
Opender Singh
69d7514095
Tags for all of the plugins! (#3328)
* feat: add tags to regular plugins

* feat: plugin support for request validator plugins

* feat: add tags to security plugins

* feat: security plugins detecting the expected property

* chore: don't force publish and bump version

* publish npm packages lib@2.2.35-beta.4
2021-04-28 08:14:49 +12:00
Thijs Schreijer
28db994bb7
[o2k] fix parameter default styles (#3327)
Co-authored-by: Opender Singh <opender.singh@konghq.com>
2021-04-27 13:18:04 +12:00
Thijs Schreijer
a5f67bbb35
[o2k] fix name generation (#3318)
Co-authored-by: Opender Singh <opender.singh@konghq.com>
2021-04-27 13:00:08 +12:00
Thijs Schreijer
84e47da5f2
[o2k] fix targets not getting tags (#3320) 2021-04-27 11:57:09 +12:00
Dimitri Mitropoulos
cde2516a8b
strip_path explicit support, and x-kong-route-defaults support (#3273)
* x-kong-{route, upstream, service}-defaults, strip_path

supports selecting but not merging defaults

Co-authored-by: Thijs Schreijer <thijs@thijsschreijer.nl>
2021-04-26 12:17:02 -04:00
Thijs Schreijer
e4c7ed2629
split url into components on a service (#3314)
* split url into components on a `service`

also fixes a bug to use the upstream name in a service instead
of an actual hostname from the 'servers' block

* fix parseUrl to not return 'null:null'

* do not add targets if there is no hostname

previously a server with just a path; '/some/path' would generate
a target 'null:null'.

* Update packages/openapi-2-kong/src/declarative-config/services.js

* Update packages/openapi-2-kong/src/declarative-config/services.js

Co-authored-by: Opender Singh <opender.singh@konghq.com>
2021-04-23 14:41:27 +12:00
Mike Ellan
70738103d7
Custom & default tagging for plugins (#3286)
Co-authored-by: Opender Singh <opender.singh@konghq.com>
2021-04-21 12:34:39 +12:00
Opender Singh
60a3faaa34
Respect request validator plugin defined at the document root and hierarchy of plugin definitions (#3293) 2021-04-20 13:30:17 +12:00
Opender Singh
874f6c9b27
Request validator plugin respects existing properties and generates required ones (#3283) 2021-04-20 13:04:22 +12:00
Thijs Schreijer
40deacb718
fix(o2k) update path param regex to match 1 segment only (#3298)
existing regex '\S+' is equivalent to '[^\s]+' by adding the
'/' character as not allowed, we limit the regex to match only 1 path
segment

This path: "/tracks/{hello}/world/{there}”
Would create: “/tracks/(?<hello>\S+)/world/(?<there>\S+)$”

This path works as expected:
/tracks/xxx/world/yyy
With captures:
  hello: xxx
  there: yyy

This path also works, unexpected:
/tracks/xxx/zzz/world/yyy/andthensome
With captures:
  hello: xxx/zzz
  there: yyy/andthensome

The last one should have matched only a single path segment, but
actually matches multiple.
2021-04-19 19:50:46 +12:00
Mike Ellan
81e16a1c97
parameter style fix (#3256)
Setting parameter style to form if not provided.
2021-04-09 14:56:49 -04:00
Mike Ellan
da9ef1a009
Inject custom vars in target servers (#3237) 2021-03-25 09:23:54 -04:00
Dimitri Mitropoulos
eb4ae99f84
use operationId where possible in o2k generation (#3072)
* use `operationId` if it exists for route name
* adds precedence for x-kong-name usages
2021-02-16 16:34:34 -05:00
Dimitri Mitropoulos
770be1b924
makes all route paths regexes in o2k (with ending markers) (#3066)
* adds jest to openapi-2-kong so tests can run
* removes special case since everything is a regex
* updates tests now that everything is a regex
2021-02-10 10:38:30 -05:00
Isaac Moore
474da01295
Add required annotation to Kubernetes config (#2709)
Fixes #2706
2020-10-13 10:32:25 +13:00
Opender Singh
dd085bd2d2
k4k8s - ingress document name must be unique (#2164)
* Ensure ingress documents and service have the same name

* Update readme

* ignore markdown during format...

* Address comments

* Update readme
2020-05-15 11:15:31 +12:00
Opender Singh
443d6df08d
Initial pass to combine eslint and prettier (#2166) 2020-05-15 10:54:07 +12:00