packages feed

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
      }
    ]