diff --git a/Sources/_OpenAPIGeneratorCore/Hooks/FilteredDocument.swift b/Sources/_OpenAPIGeneratorCore/Hooks/FilteredDocument.swift index 613aa26d..66a9b5e1 100644 --- a/Sources/_OpenAPIGeneratorCore/Hooks/FilteredDocument.swift +++ b/Sources/_OpenAPIGeneratorCore/Hooks/FilteredDocument.swift @@ -128,6 +128,9 @@ struct FilteredDocumentBuilder { } } filteredDocument.components = components + // Always remove webhooks, as they may contain references to schemas that were not included. + // Webhooks are not supported for filtering, so whenever a filter is used, all webhooks are excluded. + filteredDocument.webhooks = [:] return filteredDocument } diff --git a/Tests/OpenAPIGeneratorCoreTests/Hooks/Test_FilteredDocument.swift b/Tests/OpenAPIGeneratorCoreTests/Hooks/Test_FilteredDocument.swift index 5e86e060..046ed929 100644 --- a/Tests/OpenAPIGeneratorCoreTests/Hooks/Test_FilteredDocument.swift +++ b/Tests/OpenAPIGeneratorCoreTests/Hooks/Test_FilteredDocument.swift @@ -75,6 +75,13 @@ final class Test_FilteredDocument: XCTestCase { $ref: '#/components/schemas/B' Empty: description: success + webhooks: + my-webhook: + post: + description: Webhook + responses: + '200': + description: OK """ let document = try YAMLDecoder().decode(OpenAPI.Document.self, from: documentYAML) assert(filtering: document, filter: DocumentFilter(), hasPaths: [], hasOperations: [], hasSchemas: []) @@ -192,5 +199,6 @@ final class Test_FilteredDocument: XCTestCase { file: file, line: line ) + XCTAssertUnsortedEqual(filteredDocument.webhooks.keys, [], "Webhooks don't match", file: file, line: line) } }