{-# LANGUAGE OverloadedStrings #-} module Instana.SDK.IntegrationTest.ExtraHttpHeaders ( shouldApplyExtraHeadersFromCommonTracerConfig , shouldApplyExtraHeadersFromLegacyConfig ) where import Data.Aeson ((.=)) import qualified Data.Aeson as Aeson import Instana.SDK.AgentStub.TraceRequest (Span) import qualified Instana.SDK.AgentStub.TraceRequest as TraceRequest import Instana.SDK.IntegrationTest.HUnitExtra (applyLabel) import Instana.SDK.IntegrationTest.HttpTracing (runHttpTest) import Test.HUnit shouldApplyExtraHeadersFromCommonTracerConfig :: String -> IO Test shouldApplyExtraHeadersFromCommonTracerConfig pid = applyLabel "shouldApplyExtraHeadersFromCommonTracerConfig" $ runHttpTest pid "http/bracket/api" [("X-Request-Header-On-Entry", "request header on entry value")] entrySpanDataAsserts exitSpanDataAsserts shouldApplyExtraHeadersFromLegacyConfig :: String -> IO Test shouldApplyExtraHeadersFromLegacyConfig pid = applyLabel "shouldApplyExtraHeadersFromLegacyConfig" $ runHttpTest pid "http/bracket/api" [("X-Request-Header-On-Entry", "request header on entry value")] entrySpanDataAsserts exitSpanDataAsserts entrySpanDataAsserts :: Span -> [Assertion] entrySpanDataAsserts entrySpan = [ assertEqual "entry data" ( Aeson.object [ "http" .= (Aeson.object [ "method" .= ("GET" :: String) , "host" .= ("127.0.0.1:1207" :: String) , "url" .= ("/http/bracket/api" :: String) , "status" .= (200 :: Int) , "header" .= ( [ ("X-Response-Header-On-Entry", "response header on entry value") , ("X-Request-Header-On-Entry", "request header on entry value") ] :: [(String, String)]) ] ) ] ) (TraceRequest.spanData entrySpan) ] exitSpanDataAsserts :: Span -> [Assertion] exitSpanDataAsserts exitSpan = [ assertEqual "exit data" ( Aeson.object [ "http" .= (Aeson.object [ "method" .= ("GET" :: String) , "url" .= ("http://127.0.0.1:1208/echo" :: String) , "status" .= (200 :: Int) , "params" .= ("some=query¶meters=2&pass=" :: String) , "header" .= ( [ ("X-Request-Header-On-Exit", "request header on exit value") , ("X-Response-Header-On-Exit", "response header on exit value") ] :: [(String, String)]) ] ) ] ) (TraceRequest.spanData exitSpan) ]