bugsnag-types-1.1.0.0: test/Data/Bugsnag/Types/PayloadSpec.hs
module Data.Bugsnag.Types.PayloadSpec
( spec
)
where
import Data.Bugsnag.Types.Prelude
import Data.Aeson
import Data.Bugsnag.Types.Payload
import Test.Hspec
spec :: Spec
spec = do
describe "ToJSON" $ do
it "renders" $ do
encode examplePayload
`shouldBe` mconcat
[ "{\"apiKey\":\"YOUR-NOTIFIER-API-KEY\""
, ",\"payloadVersion\":\"5\""
, ",\"notifier\":{\"name\":\"Bugsnag Ruby\""
, ",\"version\":\"1.0.11\""
, ",\"url\":\"https://github.com/bugsnag/bugsnag-ruby\""
, ",\"dependencies\":[{\"name\":\"Bugsnag Android\""
, ",\"version\":\"2.1.10\""
, ",\"url\":\"https://github.com/bugsnag/bugsnag-android\"}]}"
, ",\"events\":[{\"exceptions\":[{\"errorClass\":\"NoMethodError\""
, ",\"message\":\"Unable to connect to database\""
, ",\"stacktrace\":[{\"file\":\"controllers/auth/session_controller.rb\""
, ",\"lineNumber\":1234"
, ",\"columnNumber\":123"
, ",\"method\":\"create\""
, ",\"inProject\":true"
, ",\"code\":{}"
, ",\"frameAddress\":\"0x000000010d131040\""
, ",\"loadAddress\":\"0x000000010d12e000\""
, ",\"isLR\":false"
, ",\"isPC\":true"
, ",\"symbolAddress\":\"0x000000010d130fe6\""
, ",\"machoFile\":\"/System/Library/Frameworks/Foundation.framework/Foundation\""
, ",\"machoLoadAddress\":\"0x000000010d12e000\""
, ",\"machoUUID\":\"B3196052-BAF1-3EA5-AD28-F9E6ECCF0B03\""
, ",\"machoVMAddress\":\"0x0000000100000000\""
, ",\"codeIdentifier\":\"b6b529d5e58421a0fba0fa2c5c2c5f3e\"}]"
, ",\"type\":\"android\"}]"
, ",\"breadcrumbs\":[{\"timestamp\":\"2016-07-19T12:17:27-0700\""
, ",\"name\":\"Open menu\""
, ",\"type\":\"navigation\""
, ",\"metaData\":{}}]"
, ",\"request\":{\"clientIp\":\"192.168.44.0\""
, ",\"headers\":{}"
, ",\"httpMethod\":\"PUT\""
, ",\"url\":\"http://example.com/users/19/settings\""
, ",\"referer\":\"http://example.com?q=awesome\"}"
, ",\"threads\":[{\"id\":\"thread_id\""
, ",\"name\":\"thread_name\""
, ",\"errorReportingThread\":true"
, ",\"stacktrace\":[{\"file\":\"controllers/auth/session_controller.rb\""
, ",\"lineNumber\":1234"
, ",\"columnNumber\":123"
, ",\"method\":\"create\""
, ",\"inProject\":true"
, ",\"code\":{}"
, ",\"frameAddress\":\"0x000000010d131040\""
, ",\"loadAddress\":\"0x000000010d12e000\""
, ",\"isLR\":false"
, ",\"isPC\":true"
, ",\"symbolAddress\":\"0x000000010d130fe6\""
, ",\"machoFile\":\"/System/Library/Frameworks/Foundation.framework/Foundation\""
, ",\"machoLoadAddress\":\"0x000000010d12e000\""
, ",\"machoUUID\":\"B3196052-BAF1-3EA5-AD28-F9E6ECCF0B03\""
, ",\"machoVMAddress\":\"0x0000000100000000\""
, ",\"codeIdentifier\":\"b6b529d5e58421a0fba0fa2c5c2c5f3e\"}]"
, ",\"state\":\"WAITING\""
, ",\"type\":\"android\"}]"
, ",\"context\":\"auth/session#create\""
, ",\"groupingHash\":\"buggy_file.rb\""
, ",\"unhandled\":true"
, ",\"severity\":\"error\""
, ",\"severityReason\":{\"type\":\"unhandledexception\""
, ",\"attributes\":{\"errorType\":\"E_ERROR\""
, ",\"level\":\"Error\""
, ",\"signalType\":\"SIGSEGV\""
, ",\"violationType\":\"NetworkOnMainThread\""
, ",\"errorClass\":\"ActiveRecord::RecordNotFound\""
, ",\"framework\":\"Rack\""
, ",\"exceptionClass\":\"TypeMismatchException\"}"
, ",\"unhandledOverridden\":false}"
, ",\"projectPackages\":[\"com.example.package1\"]"
, ",\"user\":{\"id\":\"19\""
, ",\"name\":\"Robert Hawkins\""
, ",\"email\":\"bob@example.com\"}"
, ",\"app\":{\"id\":\"com.bugsnag.android.example.debug\""
, ",\"version\":\"1.1.3\""
, ",\"versionCode\":12"
, ",\"bundleVersion\":\"1.0.2\""
, ",\"codeBundleId\":\"1.0-1234\""
, ",\"buildUUID\":\"BE5BA3D0-971C-4418-9ECF-E2D1ABCB66BE\""
, ",\"releaseStage\":\"staging\""
, ",\"type\":\"rails\""
, ",\"dsymUUIDs\":[\"e6173678256785afd940392abee\"]"
, ",\"duration\":1275"
, ",\"durationInForeground\":983"
, ",\"inForeground\":true"
, ",\"isLaunching\":true"
, ",\"binaryArch\":\"x86\""
, ",\"runningOnRosetta\":true}"
, ",\"device\":{\"hostname\":\"web1.internal\""
, ",\"id\":\"fd124e87760c4281aef\""
, ",\"manufacturer\":\"LGE\""
, ",\"model\":\"Nexus 6P\""
, ",\"modelNumber\":\"600\""
, ",\"osName\":\"android\""
, ",\"osVersion\":\"8.0.1\""
, ",\"freeMemory\":183879616"
, ",\"totalMemory\":201326592"
, ",\"freeDisk\":13478064128"
, ",\"browserName\":\"Chrome\""
, ",\"browserVersion\":\"61.0.3163.100\""
, ",\"jailbroken\":false"
, ",\"orientation\":\"portrait\""
, ",\"time\":\"2018-08-07T10:16:34.564Z\""
, ",\"cpuAbi\":[\"x86_64\"]"
, ",\"runtimeVersions\":{\"androidApiLevel\":\"28\""
, ",\"bottle\":\"0.12.8\""
, ",\"celery\":\"4.2.0\""
, ",\"clangVersion\":\"7.0.1\""
, ",\"cocos2dx\":\"3.17.2\""
, ",\"delayedJob\":\"4.1.8\""
, ",\"django\":\"2.1.7\""
, ",\"dotnet\":\".NET Framework 4.7.3416.0\""
, ",\"dotnetApiCompatibility\":\".NET 2.0 Subset\""
, ",\"dotnetClr\":\"4.0.30319.17379\""
, ",\"dotnetScriptingRuntime\":\".NET 3.5 equivalent\""
, ",\"electron\":\"11.4.3\""
, ",\"eventMachine\":\"1.2.7\""
, ",\"expoApp\":\"2.10.0.105125\""
, ",\"expoSdk\":\"32.0.0\""
, ",\"flask\":\"1.0.2\""
, ",\"gin\":\"1.3.0\""
, ",\"go\":\"1.11.2\""
, ",\"javaType\":\"Java(TM) SE Runtime Environment\""
, ",\"javaVersion\":\"1.8.0_131-b11\""
, ",\"jruby\":\"9.2.5.0\""
, ",\"laravel\":\"5.7.22\""
, ",\"lumen\":\"5.7\""
, ",\"magento\":\"2.3.0\""
, ",\"mailman\":\"0.8.0\""
, ",\"martini\":\"1.0\""
, ",\"negroni\":\"1.0.0\""
, ",\"node\":\"10.14.1\""
, ",\"osBuild\":\"16D57\""
, ",\"php\":\"7.2.12\""
, ",\"python\":\"3.7.1\""
, ",\"que\":\"0.14.3\""
, ",\"rack\":\"2.0.6\""
, ",\"rails\":\"5.2.2\""
, ",\"rake\":\"12.3.2\""
, ",\"reactNative\":\"0.57.5\""
, ",\"reactNativeJsEngine\":\"hermes\""
, ",\"resque\":\"2.0.0\""
, ",\"revel\":\"0.21.0\""
, ",\"ruby\":\"2.5.3\""
, ",\"shoryoken\":\"5.0.1\""
, ",\"sidekiq\":\"5.1.3\""
, ",\"silex\":\"2.1.0\""
, ",\"sinatra\":\"2.0.3\""
, ",\"springBoot\":\"1.5.13.RELEASE\""
, ",\"springFramework\":\"4.2.13.RELEASE\""
, ",\"swift\":\"4.2\""
, ",\"symfony\":\"4.2.11\""
, ",\"tornado\":\"5.1.1\""
, ",\"unity\":\"2018.2.17\""
, ",\"unityScriptingBackend\":\"Mono\""
, ",\"wordpress\":\"5.1\"}"
, ",\"macCatalystiOSVersion\":\"14.0\"}"
, ",\"session\":{\"id\":\"9f65c975-8155-456f-91e5-c4c4b3db0555\""
, ",\"startedAt\":\"2017-01-01T14:30:00.000Z\""
, ",\"events\":{\"handled\":1"
, ",\"unhandled\":1}}"
, ",\"featureFlags\":[{\"featureFlag\":\"share_ios_photo_sharing_button\""
, ",\"variant\":\"blue_button\"}]"
, ",\"metaData\":{}}]}"
]
it "round-trips" $ do
eitherDecode (encode examplePayload) `shouldBe` Right examplePayload