Skip to content

Commit

Permalink
Merge pull request #4 from gotranseo/add-missing-defaulted-source-inf…
Browse files Browse the repository at this point in the history
…o-params

Add missing defaulted source info params
  • Loading branch information
jdmcd authored Apr 26, 2022
2 parents d094bbc + 0e7c162 commit efede2a
Show file tree
Hide file tree
Showing 13 changed files with 80 additions and 104 deletions.
7 changes: 5 additions & 2 deletions Package.swift
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// swift-tools-version:5.2
// swift-tools-version:5.5
import PackageDescription

let package = Package(
Expand All @@ -10,11 +10,14 @@ let package = Package(
.library(name: "Bugsnag", targets: ["Bugsnag"]),
],
dependencies: [
.package(url: "https://github.com/vapor/vapor.git", from: "4.0.0")
.package(url: "https://github.com/vapor/vapor.git", from: "4.0.0"),
],
targets: [
.target(name: "Bugsnag", dependencies: [
.product(name: "Vapor", package: "vapor"),
]),
// .testTarget(name: "BugsnagTests", dependencies: [
// .target(name: "Bugsnag"),
// ]),
]
)
5 changes: 2 additions & 3 deletions Sources/Bugsnag/PayloadTransformer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,10 @@ public protocol PayloadTransformerType {
userEmail: String?,
version: String?,
skipContent: Bool
) throws -> BugsnagPayload
) throws -> BugsnagPayload
}

public struct PayloadTransformer: PayloadTransformerType {

public let environment: Environment
public let apiKey: String

Expand Down Expand Up @@ -79,7 +78,7 @@ public struct PayloadTransformer: PayloadTransformerType {
metaData: metadata,
request: requestContent)

let notifier = BugsnagPayload.Notifier(name: "Bugsnag Vapor", version: "2.0.0", url: "https://github.com/gotranseo/bugsnag")
let notifier = BugsnagPayload.Notifier(name: "Bugsnag Vapor", version: "4.0.4", url: "https://github.com/gotranseo/bugsnag")
let payload = BugsnagPayload(apiKey: apiKey, notifier: notifier, events: [event])

return payload
Expand Down
94 changes: 69 additions & 25 deletions Sources/Bugsnag/Reporter.swift
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
import Vapor

public protocol ReporterType {
func report(error: Error, request: Request, userId: String?, userName: String?, userEmail: String?, skipContent: Bool, lineNumber: Int?, funcName: String?, fileName: String?, version: String?) throws

func report(error: Error, request: Request, skipContent: Bool, lineNumber: Int?, funcName: String?, fileName: String?, version: String?) throws

func report(
error: Error,
request: Request,
Expand All @@ -18,19 +14,71 @@ public protocol ReporterType {
version: String?,
skipContent: Bool,
completion: (() -> ())?
) throws
)
}

extension ReporterType {
@inlinable
public func report(
error: Error,
request: Request,
skipContent: Bool,
lineNumber: Int? = #line,
funcName: String? = #function,
fileName: String? = #fileID,
version: String?
) {
self.report(
error: error,
request: request,
severity: .error,
userId: nil,
userName: nil,
userEmail: nil,
lineNumber: lineNumber,
funcName: funcName,
fileName: fileName,
version: version,
skipContent: skipContent,
completion: nil
)
}

@inlinable
public func report(
error: Error,
request: Request,
userId: String?,
userName: String?,
userEmail: String?,
skipContent: Bool,
lineNumber: Int? = #line,
funcName: String? = #function,
fileName: String? = #fileID,
version: String?
) {
self.report(
error: error,
request: request,
severity: .error,
userId: userId,
userName: userName,
userEmail: userEmail,
lineNumber: lineNumber,
funcName: funcName,
fileName: fileName,
version: version,
skipContent: skipContent,
completion: nil
)
}
}

public enum Severity: String {
case error, warning, info
}

public final class Bugsnag: ReporterType {
public func report(error: Error, request: Request, userId: String?, userName: String?, userEmail: String?, skipContent: Bool, lineNumber: Int?, funcName: String?, fileName: String?, version: String?) throws {
report(error: error, request: request, severity: .error, userId: userId, userName: userName, userEmail: userEmail, lineNumber: lineNumber, funcName: funcName, fileName: fileName, version: version, skipContent: skipContent, completion: nil)
}


let environment: Environment
let notifyReleaseStages: [Environment]?
let connectionManager: ConnectionManager
Expand All @@ -48,26 +96,22 @@ public final class Bugsnag: ReporterType {
self.payloadTransformer = transformer
}

public func report(error: Error, request: Request, skipContent: Bool, lineNumber: Int?, funcName: String?, fileName: String?, version: String?) {
report(error: error, request: request, severity: .error, userId: nil, userName: nil, userEmail: nil, lineNumber: lineNumber, funcName: funcName, fileName: fileName, version: version, skipContent: skipContent, completion: nil)
}

public func report(
error: Error,
request: Request,
severity: Severity = .error,
userId: String?,
userName: String?,
userEmail: String?,
lineNumber: Int?,
funcName: String?,
fileName: String?,
lineNumber: Int? = #line,
funcName: String? = #function,
fileName: String? = #fileID,
version: String?,
skipContent: Bool,
completion complete: (() -> ())?
) {
guard let error = error as? AbortError else {
report(
self.report(
message: "Internal Server Error",
request: request,
severity: severity,
Expand All @@ -85,11 +129,11 @@ public final class Bugsnag: ReporterType {
return
}

guard shouldNotifyForReleaseStage() else {
guard self.shouldNotifyForReleaseStage() else {
return complete?() ?? ()
}

report(
self.report(
message: error.reason,
request: request,
severity: severity,
Expand All @@ -111,17 +155,17 @@ public final class Bugsnag: ReporterType {
message: String,
request: Request,
severity: Severity,
lineNumber: Int? = nil,
funcName: String? = nil,
fileName: String? = nil,
lineNumber: Int?,
funcName: String?,
fileName: String?,
userId: String?,
userName: String?,
userEmail: String?,
version: String?,
skipContent: Bool,
completion complete: (() -> ())? = nil
) {
let payload = try? payloadTransformer.payloadFor(
let payload = try? self.payloadTransformer.payloadFor(
message: message,
request: request,
severity: severity,
Expand All @@ -144,7 +188,7 @@ public final class Bugsnag: ReporterType {

private func shouldNotifyForReleaseStage() -> Bool {
// If a user doesn't explicitly set this, report on all stages
guard let notifyReleaseStages = notifyReleaseStages else {
guard let notifyReleaseStages = self.notifyReleaseStages else {
return true
}

Expand Down
13 changes: 1 addition & 12 deletions Tests/BugsnagTests/ConfigurationTests.swift
Original file line number Diff line number Diff line change
@@ -1,19 +1,8 @@
import XCTest
@testable import Vapor
@testable import Bugsnag
import HTTP

class ConfigurationTests: XCTestCase {
static let allTests = [
("testThatDataExtractedCorrectlyFromConfigFile", testThatDataExtractedCorrectlyFromConfigFile),
("testThatErrorIsThrownWhenApiKeyNotInConfigFile", testThatErrorIsThrownWhenApiKeyNotInConfigFile),
("testThatErrorIsThrownWhenEndpointNotInConfigFile", testThatErrorIsThrownWhenEndpointNotInConfigFile),
("testThatFiltersDefaultsToEmptyListWhenNotInConfigFile", testThatFiltersDefaultsToEmptyListWhenNotInConfigFile),
("testThatErrorIsThrownWhenNoConfigFile", testThatErrorIsThrownWhenNoConfigFile),
("testThatNotifyReleaseStagesAcceptsNilValueInConfig", testThatNotifyReleaseStagesAcceptsNilValueInConfig),
("testThatStackTraceSizeGetsDefaultValueWhenNotInConfig", testThatStackTraceSizeGetsDefaultValueWhenNotInConfig)
]

final class ConfigurationTests: XCTestCase {
func testThatDataExtractedCorrectlyFromConfigFile() {
let conf: Config = Config([
"apiKey": "1337",
Expand Down
11 changes: 1 addition & 10 deletions Tests/BugsnagTests/MiddlewareTests.swift
Original file line number Diff line number Diff line change
@@ -1,20 +1,11 @@
import XCTest
@testable import Vapor
@testable import Bugsnag
import HTTP

class MiddlewareTests: XCTestCase {
final class MiddlewareTests: XCTestCase {
private var middleware: Bugsnag.Middleware!
private var reporter: ReporterMock!

static let allTests = [
("testThatErrorsNotConformingToAbortErrorAreRethrown", testThatErrorsNotConformingToAbortErrorAreRethrown),
("testThatAbortErrorsAreRethrown", testThatAbortErrorsAreRethrown),
("testThatAbortErrorsAreReported", testThatAbortErrorsAreReported),
("testThatErrorsNotConformingToAbortErrorAreReported", testThatErrorsNotConformingToAbortErrorAreReported),
]


override func setUp() {
self.reporter = ReporterMock()
self.middleware = try! Bugsnag.Middleware(reporter: reporter)
Expand Down
1 change: 0 additions & 1 deletion Tests/BugsnagTests/Mocks/ConnectionManagerMock.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import Vapor
import Bugsnag
import HTTP

internal class ConnectionManagerMock: ConnectionManagerType {
var lastPayload: JSON? = nil
Expand Down
1 change: 0 additions & 1 deletion Tests/BugsnagTests/Mocks/ErrorResponderMock.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import Vapor
import Bugsnag
import HTTP

internal class ErrorResponderMock: Responder {
let errorToThrow: Error
Expand Down
2 changes: 0 additions & 2 deletions Tests/BugsnagTests/Mocks/FrameAddressMock.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import Vapor
import Bugsnag
import HTTP
import Stacked

internal class FrameAddressMock: FrameAddressType {
static var lastStackSize: Int? = nil
Expand Down
3 changes: 0 additions & 3 deletions Tests/BugsnagTests/Mocks/PayloadTransformerMock.swift
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
import Vapor
import Bugsnag
import HTTP
import Stacked

internal class PayloadTransformerMock: PayloadTransformerType {

let frameAddress: FrameAddressType.Type = FrameAddressMock.self
let environment: Environment
let apiKey: String
Expand Down
1 change: 0 additions & 1 deletion Tests/BugsnagTests/Mocks/ReporterMock.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import Vapor
import Bugsnag
import HTTP

internal class ReporterMock: ReporterType {
func report(error: Error, request: Request?) throws {
Expand Down
18 changes: 1 addition & 17 deletions Tests/BugsnagTests/PayloadTransformerTests.swift
Original file line number Diff line number Diff line change
@@ -1,27 +1,11 @@
import XCTest
@testable import Vapor
@testable import Bugsnag
import HTTP

class PayloadTransformerTests: XCTestCase {
final class PayloadTransformerTests: XCTestCase {
private var payloadTransformer: PayloadTransformer!
private var payload: JSON!

static let allTests = [
("testThatItUsesApiKeyFromConfig", testThatItUsesApiKeyFromConfig),
("testThatItBuildsErrorPayloadCorrectly", testThatItBuildsErrorPayloadCorrectly),
("testThatItBuildsAppPayloadCorrectly", testThatItBuildsAppPayloadCorrectly),
("testThatSeverityIsCorrect", testThatSeverityIsCorrect),
("testThatItHandlesCustomMetadata", testThatItHandlesCustomMetadata),
("testThatItBuildsNotifierPayloadCorrectly", testThatItBuildsNotifierPayloadCorrectly),
("testThatUrlParametersGetsFiltered", testThatUrlParametersGetsFiltered),
("testThatQueryParametersGetsFiltered", testThatQueryParametersGetsFiltered),
("testThatFormParametersGetsFiltered", testThatFormParametersGetsFiltered),
("testThatJsonParametersGetsFiltered", testThatJsonParametersGetsFiltered),
("testThatStackTraceSizeIsWorking", testThatStackTraceSizeIsWorking),
("testAbortExtensions", testAbortExtensions)
]

override func setUp() {
self.payloadTransformer = PayloadTransformer(
frameAddress: FrameAddressMock.self,
Expand Down
19 changes: 1 addition & 18 deletions Tests/BugsnagTests/ReporterTests.swift
Original file line number Diff line number Diff line change
@@ -1,29 +1,12 @@
import XCTest
@testable import Vapor
@testable import Bugsnag
import HTTP

class ReporterTests: XCTestCase {
final class ReporterTests: XCTestCase {
private var connectionManager: ConnectionManagerMock!
private var payloadTransformer: PayloadTransformerMock!
private var reporter: Reporter!

static let allTests = [
("testErrorNotConformingToAbortErrorWillBeReported", testErrorNotConformingToAbortErrorWillBeReported),
("testBadRequestAbortErrorWillBeReported", testBadRequestAbortErrorWillBeReported),
("testCustomErrorWillBeReported", testCustomErrorWillBeReported),
("testErrorNotReportedWhenExplicitlyToldNotTo", testErrorNotReportedWhenExplicitlyToldNotTo),
("testErrorReportedWhenExplicitlyToldTo", testErrorReportedWhenExplicitlyToldTo),
("testThatThePayloadGetsSubmitted", testThatThePayloadGetsSubmitted),
("testThatFiltersComeFromConfig", testThatFiltersComeFromConfig),
("testSeverityGetsDefaultValue", testSeverityGetsDefaultValue),
("testSeverityGetsGivenValue", testSeverityGetsGivenValue),
("testErrorNotReportedWhenEnvironmentNotInNotifyReleaseStages", testErrorNotReportedWhenEnvironmentNotInNotifyReleaseStages),
("testErrorReportedWhenEnvironmentInNotifyReleaseStages", testErrorReportedWhenEnvironmentInNotifyReleaseStages),
("testErrorNotBeingReportedWhenEmptyReleaseStages", testErrorNotBeingReportedWhenEmptyReleaseStages),
("testStackTraceSizeIsComingFromArguments", testStackTraceSizeIsComingFromArguments),
]

override func setUp() {
self.connectionManager = ConnectionManagerMock()

Expand Down
9 changes: 0 additions & 9 deletions Tests/LinuxMain.swift

This file was deleted.

0 comments on commit efede2a

Please sign in to comment.