serverless-haskell-0.0.0: test/AWSLambda/Events/KinesisEventSpec.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
module AWSLambda.Events.KinesisEventSpec where
import AWSLambda.Events.KinesisEvent
import AWSLambda.Events.Records
import Data.Aeson
import Data.Aeson.QQ
import Data.ByteString (ByteString)
import qualified Network.AWS.Kinesis.Types as Kinesis
import Network.AWS.Types (Region (..))
import Test.Hspec
spec :: Spec
spec =
describe "KinesisEvent" $
it "parses sample event" $
fromJSON sampleKinesisJSON `shouldBe` Success sampleKinesisEvent
sampleKinesisJSON :: Value
sampleKinesisJSON = [aesonQQ|
{
"Records": [
{
"kinesis": {
"partitionKey": "partitionKey-3",
"kinesisSchemaVersion": "1.0",
"data": "SGVsbG8sIHRoaXMgaXMgYSB0ZXN0IDEyMy4=",
"sequenceNumber": "49545115243490985018280067714973144582180062593244200961"
},
"eventSource": "aws:kinesis",
"eventID": "shardId-000000000000:49545115243490985018280067714973144582180062593244200961",
"invokeIdentityArn": "arn:aws:iam::account-id:role/testLEBRole",
"eventVersion": "1.0",
"eventName": "aws:kinesis:record",
"eventSourceARN": "arn:aws:kinesis:us-west-2:35667example:stream/examplestream",
"awsRegion": "us-west-2"
}
]
}
|]
sampleKinesisEvent :: KinesisEvent
sampleKinesisEvent =
RecordsEvent
[ KinesisEventRecord
{ _kerKinesis =
KinesisRecord
{ _krRecord =
Kinesis.record
"49545115243490985018280067714973144582180062593244200961"
"Hello, this is a test 123."
"partitionKey-3"
, _krKinesisSchemaVersion = "1.0"
}
, _kerEventSource = "aws:kinesis"
, _kerEventID =
"shardId-000000000000:49545115243490985018280067714973144582180062593244200961"
, _kerInvokeIdentityArn = "arn:aws:iam::account-id:role/testLEBRole"
, _kerEventVersion = "1.0"
, _kerEventName = "aws:kinesis:record"
, _kerEventSourceARN =
"arn:aws:kinesis:us-west-2:35667example:stream/examplestream"
, _kerAwsRegion = Oregon
}
]