From 634518133e48d9192381b419f75624880c727440 Mon Sep 17 00:00:00 2001 From: "Brett R. Toomey" Date: Wed, 28 Jun 2017 12:11:42 +0200 Subject: [PATCH 1/4] Added report and doNotReport extensions to Abort. Register configurable middleware in provider --- Sources/Bugsnag/Abort+Report.swift | 30 ++++++++++++++++++++++++++++++ Sources/Bugsnag/Provider.swift | 1 + 2 files changed, 31 insertions(+) create mode 100644 Sources/Bugsnag/Abort+Report.swift diff --git a/Sources/Bugsnag/Abort+Report.swift b/Sources/Bugsnag/Abort+Report.swift new file mode 100644 index 0000000..71bf248 --- /dev/null +++ b/Sources/Bugsnag/Abort+Report.swift @@ -0,0 +1,30 @@ +import Vapor + +extension Abort { + public func report() -> Abort { + return addReportMetadata(true) + } + + public func doNotReport() -> Abort { + return addReportMetadata(false) + } + + func addReportMetadata(_ shouldReport: Bool) -> Abort { + var metadata = self.metadata ?? Node.object([:]) + metadata["report"] = true + + let result = Abort.init( + status, + metadata: metadata, + reason: reason, + identifier: identifier, + possibleCauses: possibleCauses, + suggestedFixes: suggestedFixes, + documentationLinks: documentationLinks, + stackOverflowQuestions: stackOverflowQuestions, + gitHubIssues: gitHubIssues + ) + + return result + } +} diff --git a/Sources/Bugsnag/Provider.swift b/Sources/Bugsnag/Provider.swift index 928076d..465a87a 100644 --- a/Sources/Bugsnag/Provider.swift +++ b/Sources/Bugsnag/Provider.swift @@ -32,6 +32,7 @@ public final class Provider: Vapor.Provider { } self.config = try BugsnagConfig(config) + try config.addConfigurable(middleware: Middleware(config: config), name: "bugsnag") } // is automatically called directly after boot() From 5672a7b2e8fb15b3d6f9115dad5baa133155dec7 Mon Sep 17 00:00:00 2001 From: "Brett R. Toomey" Date: Wed, 28 Jun 2017 12:21:44 +0200 Subject: [PATCH 2/4] Added tests and fixed implementation --- Sources/Bugsnag/Abort+Report.swift | 2 +- Tests/BugsnagTests/PayloadTransformerTests.swift | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Sources/Bugsnag/Abort+Report.swift b/Sources/Bugsnag/Abort+Report.swift index 71bf248..e3f5f63 100644 --- a/Sources/Bugsnag/Abort+Report.swift +++ b/Sources/Bugsnag/Abort+Report.swift @@ -11,7 +11,7 @@ extension Abort { func addReportMetadata(_ shouldReport: Bool) -> Abort { var metadata = self.metadata ?? Node.object([:]) - metadata["report"] = true + try? metadata.set("report", shouldReport) let result = Abort.init( status, diff --git a/Tests/BugsnagTests/PayloadTransformerTests.swift b/Tests/BugsnagTests/PayloadTransformerTests.swift index b6ea16e..3bf8fd0 100644 --- a/Tests/BugsnagTests/PayloadTransformerTests.swift +++ b/Tests/BugsnagTests/PayloadTransformerTests.swift @@ -192,4 +192,19 @@ class PayloadTransformerTests: XCTestCase { XCTAssertEqual(FrameAddressMock.lastStackSize, 99) } + + func testAbortExtensions() { + let errorReported = Abort.serverError.report() + let errorNotReported = Abort.serverError.doNotReport() + + // ensure status code is the same + XCTAssertEqual(errorReported.status, Abort.serverError.status) + XCTAssertEqual(errorNotReported.status, Abort.serverError.status) + + XCTAssertNotNil(errorReported.metadata) + XCTAssertNotNil(errorNotReported.metadata) + + XCTAssertEqual(errorReported.metadata?["report"]?.bool, true) + XCTAssertEqual(errorNotReported.metadata?["report"]?.bool, false) + } } From 0e4999b6db7448f8104164b0fdcb440c64e16abc Mon Sep 17 00:00:00 2001 From: "Brett R. Toomey" Date: Wed, 28 Jun 2017 12:22:36 +0200 Subject: [PATCH 3/4] Added test case for linux tests --- Tests/BugsnagTests/PayloadTransformerTests.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Tests/BugsnagTests/PayloadTransformerTests.swift b/Tests/BugsnagTests/PayloadTransformerTests.swift index 3bf8fd0..338a765 100644 --- a/Tests/BugsnagTests/PayloadTransformerTests.swift +++ b/Tests/BugsnagTests/PayloadTransformerTests.swift @@ -18,7 +18,8 @@ class PayloadTransformerTests: XCTestCase { ("testThatQueryParametersGetsFiltered", testThatQueryParametersGetsFiltered), ("testThatFormParametersGetsFiltered", testThatFormParametersGetsFiltered), ("testThatJsonParametersGetsFiltered", testThatJsonParametersGetsFiltered), - ("testThatStackTraceSizeIsWorking", testThatStackTraceSizeIsWorking) + ("testThatStackTraceSizeIsWorking", testThatStackTraceSizeIsWorking), + ("testAbortExtensions", testAbortExtensions) ] override func setUp() { From 7614e561d20fcf15821aa4ab9a3dd0c31f13293e Mon Sep 17 00:00:00 2001 From: "Brett R. Toomey" Date: Wed, 28 Jun 2017 12:23:56 +0200 Subject: [PATCH 4/4] Fixed Linux tests --- Tests/LinuxMain.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/Tests/LinuxMain.swift b/Tests/LinuxMain.swift index d48e4bf..cc0b526 100644 --- a/Tests/LinuxMain.swift +++ b/Tests/LinuxMain.swift @@ -5,6 +5,5 @@ XCTMain([ testCase(MiddlewareTests.allTests), testCase(PayloadTransformerTests.allTests), testCase(ReporterTests.allTests), - testCase(ConnectionManagerTests.allTests), testCase(ConfigurationTests.allTests) ])