Commit Graph

71 Commits

Author SHA1 Message Date
Dave Shanley
3544ed0303 Churning through v3 models now.
mutations everywhere, for everyone!
2023-03-26 06:10:31 -04:00
Dave Shanley
cb5f2da4d3 Fixed race conditions in index #91
Different race conditions popped up at different times, depending on how complex the nesting of indexes was. After running tests with `-race` I've knocked out all the concurrency issues being reported and now there are no race conditions reported by the tests. This should knock out all known race conditions with some targeted mutex locks.

Non breaking change.
2023-03-08 09:26:10 -05:00
Dave Shanley
1ac5fbe9fc Bumped coverage on utility methods
fallen slightly, bumpy bump.
2023-03-06 13:18:28 -05:00
Dave Shanley
581423016f Added another test to validate #88
Code is behaving correctly, according to the design.
2023-03-06 13:18:28 -05:00
Dave Shanley
b72c1fce40 Cleaned up a few lines
review looked a bit gappy.
2023-03-06 13:18:28 -05:00
Dave Shanley
0f2ac08567 Fixed async isues with index #91
The index runs async everywhere, it's kinda impossible to know which path with resolve first, so testing is hard. Sometimes a race condition is hit, well, it was. Now that map has a mutex on it.

Also fully fixed handling files with relative links. A basepath property has been added to the index configuration to allow a local root to be set when resolving files.

Added a full checkout test for digital ocean so that full remote and full local testing is performed.
2023-03-06 13:18:28 -05:00
Dave Shanley
0850ceb272 added null check for paramRef when scanning operation params.
this issue was discovered in https://github.com/daveshanley/vacuum/issues/240, this provides a resolution to the problem.
2023-02-27 11:05:18 -05:00
Dave Shanley
4901813e88 Updated test to reflect new inline schema count
Looks like we were missing a ton!
2023-02-27 11:05:18 -05:00
Dave Shanley
6d384b2732 updated: a fix for #50
properties are now checked as part of the inline schemas. paths updated also to ensure correctness.
2023-02-27 11:05:18 -05:00
Dave Shanley
4a378de02e Fix: bug in index with description handling.
Issue for description being incorrectly picked up, is because index was collecting all descriptions, even if they were labels on schemas as reported in https://github.com/daveshanley/vacuum/issues/239
2023-02-27 11:05:18 -05:00
Dave Shanley
bc1d8c5454 fix: Issue #82
The index can now accept multiple parameters with the same name, as long as they have different `in` types.
2023-02-22 09:14:27 -05:00
Dave Shanley
5481353994 removed error check on unescape. nothing to be done. 2023-02-22 09:14:27 -05:00
Dave Shanley
d8a7b6c21d Ensure encoded paths are handled in lookup. #84
This partially resolves a whacky path ref lookup in the index mentioned in #84, but it's not a full fix, that requires the build out of a resolved spec. The design needs thought and care.
2023-02-22 09:14:27 -05:00
Dave Shanley
fa59b5d21d Aligned CheckForCircularErrors and Resolve
the two methods were doing different things, now they are not.
2023-02-22 09:14:27 -05:00
Dave Shanley
c5e9dbc360 Bumping coverage on 0.6.0 2023-02-22 09:14:27 -05:00
Dave Shanley
e6626fe22e Support for relative links now in place #73
Tests all passing, runs super fast, pulls in every single DigitalOcean spec and parses it. There may be some issues deeper down in the models, but for now high level tests all pass.
2023-02-22 09:14:27 -05:00
Dave Shanley
e19b7d2bf1 Working through fix #73
Quite a bit of surgery required.
2023-02-22 09:14:27 -05:00
Dave Shanley
1df5f44e6f Working through fix-73 and v0.6.0 2023-02-22 09:14:27 -05:00
Dave Shanley
545dbc88c4 fix: panic when schema used as non-label #76
a small oversight in 0.5.0 means that using a `schema` anywhere other than a label, caused the index to get upset. This has now been resolved.
2023-02-02 05:22:56 -05:00
Dave Shanley
6d77716c9a feat: add index for getting all "schema" objects #50
There is new code that looks for inline `schema` definitions and collects them, as well as a futher subset of references that are specifically `object` or `array` types. This is a breaking change because the `index.GetAllSchemas()` method now returns a slice of *Reference pointers, rather than a map of them. The original behavior of `GetAllSchemas()` has been replaced with `GetAllComponentSchemas()` which retains the signature.

Two new additional methods `GetAllInlineSchemas()` and `GetAllInlineSchemaObjects()`. The former will return everything in the spec marked with `schema` that is not a reference. The latter will return everything the former does, except filtered down by `object` or `array` types.

Also the index is now bubbled up through the document model. There isn't a simple way to get access to it, small non breaking change that attaches a reference to the index, returned by `DocumentModel`
2023-01-28 14:09:11 -05:00
Benjamin Nolan (TwoWholeWorms)
cd63f66efe fix: Check for direct reference in IsPropertyNodeRequired 2023-01-11 05:47:06 -05:00
Benjamin Nolan (TwoWholeWorms)
1f2709fef3 fix: Handle direct reference loops as required 2023-01-11 05:47:06 -05:00
Benjamin Nolan (TwoWholeWorms)
7338a614d0 refactor: FindKeyNode -> FindKeyNodeTop 2023-01-11 05:47:06 -05:00
Benjamin Nolan (TwoWholeWorms)
ee504c543a feat: Allow circular references when the properties are not marked as required 2023-01-11 05:47:06 -05:00
Dave Shanley
6b28e414bd fix: Index incorrectly handling file references on the local file system.
This was reported in https://github.com/daveshanley/vacuum/issues/225, it's a continuation of the issue found in https://github.com/pb33f/libopenapi/issues/37. This fix allows the full import of the file (not just a path/component) to be imported.

Signed-off-by: Dave Shanley <dave@quobix.com>
2023-01-04 06:47:48 -05:00
Tristan Cartledge
8581c7fb45 fix: add test 2022-12-20 16:43:43 -05:00
Tristan Cartledge
36f5999d66 feat: add an index for object schemas with properties and add additional info to enum reference 2022-12-20 16:43:43 -05:00
Tristan Cartledge
c75a1bfaf4 fix: add paths/parent nodes to schemas as well 2022-12-16 16:09:59 -05:00
Tristan Cartledge
53789cbc1b feat: add parent nodes and paths to server index references 2022-12-16 16:09:59 -05:00
Dave Shanley
27001e083b Small glitches for vacuum.
A couple of slight bugs were causing big issues in vacuum.
2022-12-16 13:40:18 -05:00
Dave Shanley
8dff96ad90 Cleaning up some coverage and a few bits. 2022-12-15 16:31:32 -05:00
Dave Shanley
635877da1d Small cleanup on some commented code. 2022-12-15 16:31:32 -05:00
Dave Shanley
aaa7174f93 Updated test based on new cleaner path generation code. 2022-12-15 16:31:32 -05:00
Dave Shanley
32f48385f2 (enhancement): Improved resolving/lookup code for #45 2022-12-15 16:31:32 -05:00
Tristan Cartledge
48467b60d7 fix: didn't remove setting map before checking 2022-12-15 15:11:28 -05:00
Tristan Cartledge
09fcf334b6 fix: call out duplicate reference in parameters list 2022-12-15 15:11:28 -05:00
Tristan Cartledge
d7b9ded8bb feat: add path to references and parameters 2022-12-15 15:11:28 -05:00
Dave Shanley
05eb4ffec9 (patch): Some crazy references are causing panics. #48 #45
This patch bumps up support for creating valid JSON paths from references. It addresses #48 and makes invalid specs, valid! This addresses issues #48 and #45 that report references cannot be found. Now `libopenapi` can support much more funky lookups.
2022-12-15 09:47:23 -05:00
Dave Shanley
9ccd3bc8b7 (fix): Remote references with no components now supported by index #37
If a remote reference is used that does not contain a component ID (http://something.com/somefile.json#/components/something). The index would throw an error. This is not the correct behavior as the raw file can be the root, thus no componentID is required.

The bulk of the code is expecting that componentID, so this fix will prepare any component-less remote reference, to be treated properly.

Signed-off-by: Dave Shanley <dave@quobix.com>
2022-12-05 09:18:44 -05:00
Dave Shanley
fa12f244b8 Fixing borked test with index checking.
This looks like it needs a deeper look, reverting change for now.

Signed-off-by: Dave Shanley <dshanley@splunk.com>
2022-11-11 13:11:25 -05:00
Dave Shanley
44b219a023 Fixed resolving bug with polymorphic schemas.
Multiple polymorphic, deeply embedded schemas cause resolving issues as a channel waits forever due to a counting issue.

This has been resolved.

Signed-off-by: Dave Shanley <dshanley@splunk.com>
2022-11-11 13:07:38 -05:00
Dave Shanley
1c98ae170a fix: panic thrown when paths is wrapped in an array #4
When paths are wrapped in an array, the index throws an error because it's expecting them to be supplied as a map. Now paths can be wrapped or unwrapped, the index won't care.
2022-11-07 08:09:22 -05:00
Dave Shanley
0d4e8bf3f8 Added securityRequirement reference tracking to index.
Swagger docs define securityDefinitions, however they are not tracked by the index, and vacuum needs to know about them, so now the index collects these references.
2022-10-21 17:38:39 -04:00
Dave Shanley
8533ea9bdc Fixed a small couple of glitches that appeared during load testing. 2022-09-26 14:22:48 -04:00
Dave Shanley
57622b26e5 Docs, examples and new logo! 2022-09-26 10:52:09 -04:00
Dave Shanley
5c93f3e28b Low level support for 3.1 model updates
Webhooks and dialect are now added and working.
2022-09-15 06:28:56 -04:00
Dave Shanley
d57b9ca482 Fixed borked index test 2022-09-05 13:23:12 -04:00
Dave Shanley
0de0c16c0c 99.9 % coverage & full OpenAPI v3 support
A single line that tries to read an HTTP response body and fails is very hard to test without mocking, and the mock does not add value to a single line of code to check for an error that can rarely ever be triggered. Going to settle for 99.9% for now.
2022-08-31 10:04:39 -04:00
Dave Shanley
62a7c88631 Bumping coverage on spec index.
cleaning up the left-over untested code from recent development.
2022-08-30 10:05:48 -04:00
Dave Shanley
2398f051b8 building out tests for extraction functions.
Same functions will power every other model. Found some opprotunities to add control over circular references, when and how to fire errors and what not. All in all, some robust code additions will improve the library significantly.
2022-08-28 13:21:57 -04:00