http2-0.6.0: test/HTTP2/FrameSpec.hs
{-# LANGUAGE OverloadedStrings #-}
module HTTP2.FrameSpec where
import Test.Hspec
import Data.ByteString.Char8 ()
import Network.HTTP2.Decode
import Network.HTTP2.Encode
import Network.HTTP2.Types
spec :: Spec
spec = do
describe "encodeFrameHeader & decodeFrameHeader" $ do
it "encode/decodes frames properly" $ do
let header = FrameHeader {
payloadLength = 500
, flags = defaultFlags
, streamId = StreamIdentifier 10
}
ftyp = fromFrameTypeId FramePriority
wire = encodeFrameHeader ftyp header
Right fibHeader = decodeFrameHeader defaultSettings wire
fibHeader `shouldBe` (ftyp, header)
describe "encodeFrame & decodeFrame" $ do
it "encode/decodes frames properly" $ do
let einfo = EncodeInfo {
encodeFlags = defaultFlags
, encodeStreamId = StreamIdentifier 2
, encodePadding = Nothing
}
payload = DataFrame "Hello, world!"
wire = encodeFrame einfo payload
Right (frame,_) = decodeFrame defaultSettings wire
payload' = framePayload frame
payload' `shouldBe` payload
it "encode/decodes padded frames properly" $ do
let einfo = EncodeInfo {
encodeFlags = defaultFlags
, encodeStreamId = StreamIdentifier 2
, encodePadding = Just "padding!"
}
payload = DataFrame "Hello, world!"
wire = encodeFrame einfo payload
Right (frame,_) = decodeFrame defaultSettings wire
payload' = framePayload frame
payload' `shouldBe` payload