module Signet.Unstable.Type.SecretTest where import qualified Data.ByteArray as ByteArray import qualified Data.ByteString.Char8 as Ascii import qualified Signet.Unstable.Exception.InvalidSecret as InvalidSecret import qualified Signet.Unstable.Extra.Tasty as Tasty import qualified Signet.Unstable.Type.Secret as Secret import Test.Tasty.HUnit ((@?=)) spec :: Tasty.Spec spec :: Spec spec = TestName -> Spec -> Spec Tasty.describe TestName "Signet.Unstable.Type.Secret" (Spec -> Spec) -> Spec -> Spec forall a b. (a -> b) -> a -> b $ do TestName -> Spec -> Spec Tasty.describe TestName "parse" (Spec -> Spec) -> Spec -> Spec forall a b. (a -> b) -> a -> b $ do TestName -> Assertion -> Spec Tasty.it TestName "fails with invalid prefix" (Assertion -> Spec) -> Assertion -> Spec forall a b. (a -> b) -> a -> b $ do let byteString :: ByteString byteString = TestName -> ByteString Ascii.pack TestName "invalid" let result :: Either InvalidSecret Secret result = ByteString -> Either InvalidSecret Secret Secret.parse ByteString byteString Either InvalidSecret Secret result Either InvalidSecret Secret -> Either InvalidSecret Secret -> Assertion forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion @?= InvalidSecret -> Either InvalidSecret Secret forall a b. a -> Either a b Left (ByteString -> InvalidSecret InvalidSecret.MkInvalidSecret ByteString byteString) TestName -> Assertion -> Spec Tasty.it TestName "fails with invalid input" (Assertion -> Spec) -> Assertion -> Spec forall a b. (a -> b) -> a -> b $ do let byteString :: ByteString byteString = TestName -> ByteString Ascii.pack TestName "whsec_invalid" let result :: Either InvalidSecret Secret result = ByteString -> Either InvalidSecret Secret Secret.parse ByteString byteString Either InvalidSecret Secret result Either InvalidSecret Secret -> Either InvalidSecret Secret -> Assertion forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion @?= InvalidSecret -> Either InvalidSecret Secret forall a b. a -> Either a b Left (ByteString -> InvalidSecret InvalidSecret.MkInvalidSecret ByteString byteString) TestName -> Assertion -> Spec Tasty.it TestName "succeeds with valid input" (Assertion -> Spec) -> Assertion -> Spec forall a b. (a -> b) -> a -> b $ do let result :: Either InvalidSecret Secret result = ByteString -> Either InvalidSecret Secret Secret.parse (ByteString -> Either InvalidSecret Secret) -> ByteString -> Either InvalidSecret Secret forall a b. (a -> b) -> a -> b $ TestName -> ByteString Ascii.pack TestName "whsec_MDEyMzQ1Njc4OQ==" let secret :: Secret secret = ScrubbedBytes -> Secret Secret.MkSecret (ScrubbedBytes -> Secret) -> (ByteString -> ScrubbedBytes) -> ByteString -> Secret forall b c a. (b -> c) -> (a -> b) -> a -> c . ByteString -> ScrubbedBytes forall bin bout. (ByteArrayAccess bin, ByteArray bout) => bin -> bout ByteArray.convert (ByteString -> Secret) -> ByteString -> Secret forall a b. (a -> b) -> a -> b $ TestName -> ByteString Ascii.pack TestName "0123456789" Either InvalidSecret Secret result Either InvalidSecret Secret -> Either InvalidSecret Secret -> Assertion forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion @?= Secret -> Either InvalidSecret Secret forall a b. b -> Either a b Right Secret secret TestName -> Spec -> Spec Tasty.describe TestName "render" (Spec -> Spec) -> Spec -> Spec forall a b. (a -> b) -> a -> b $ do TestName -> Assertion -> Spec Tasty.it TestName "works" (Assertion -> Spec) -> Assertion -> Spec forall a b. (a -> b) -> a -> b $ do let secret :: Secret secret = ScrubbedBytes -> Secret Secret.MkSecret (ScrubbedBytes -> Secret) -> (ByteString -> ScrubbedBytes) -> ByteString -> Secret forall b c a. (b -> c) -> (a -> b) -> a -> c . ByteString -> ScrubbedBytes forall bin bout. (ByteArrayAccess bin, ByteArray bout) => bin -> bout ByteArray.convert (ByteString -> Secret) -> ByteString -> Secret forall a b. (a -> b) -> a -> b $ TestName -> ByteString Ascii.pack TestName "0123456789" Secret -> ByteString Secret.render Secret secret ByteString -> ByteString -> Assertion forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion @?= TestName -> ByteString Ascii.pack TestName "whsec_MDEyMzQ1Njc4OQ=="