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 ]