packages feed

launchdarkly-server-sdk-3.1.0: test/Spec/Config.hs

module Spec.Config (allTests) where
import Test.HUnit
import LaunchDarkly.Server (makeApplicationInfo)
import LaunchDarkly.Server.Config.Internal (makeApplicationInfo, withApplicationValue, getApplicationInfoHeader)
import Control.Lens ((&))

testEmptyApplicationInfoGeneratesNoHeader :: Test
testEmptyApplicationInfoGeneratesNoHeader = TestCase $ do
    assertEqual "" Nothing $ getApplicationInfoHeader $ makeApplicationInfo

testEmptyApplicationInfoIgnoresInvalidKeys :: Test
testEmptyApplicationInfoIgnoresInvalidKeys = TestCase $ do
    assertEqual "" emptyInfo modified

    where

    emptyInfo = makeApplicationInfo
    modified = withApplicationValue "invalid-key" "value" emptyInfo
        & withApplicationValue "another-invalid-key" "value"

testEmptyApplicationInfoIgnoresInvalidValues :: Test
testEmptyApplicationInfoIgnoresInvalidValues = TestCase $ do
    assertEqual "" emptyInfo modified

    where

    emptyInfo = makeApplicationInfo
    modified = withApplicationValue "id" " " emptyInfo
        & withApplicationValue "id" "&"
        & withApplicationValue "id" "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789._-a"

testCorrectlyGeneratesHeaderText :: Test
testCorrectlyGeneratesHeaderText = TestCase $ do
    assertEqual "" (Just "application-id/my-id application-version/my-version") value
    assertEqual "" (Just "application-id/my-id application-version/my-version") ignoreError

    where

    info = makeApplicationInfo
        & withApplicationValue "id" "my-id"
        & withApplicationValue "version" "my-version"
    value = getApplicationInfoHeader info
    ignoreError = withApplicationValue "version" "should-ignore-@me" info & getApplicationInfoHeader

allTests :: Test
allTests = TestList
    [ testEmptyApplicationInfoGeneratesNoHeader
    , testEmptyApplicationInfoIgnoresInvalidKeys
    , testEmptyApplicationInfoIgnoresInvalidValues
    , testCorrectlyGeneratesHeaderText
    ]