import Test.Hspec import qualified Crypto as Cr import qualified Utils as Ut main :: IO () main = hspec $ do describe "Crypto" $ do it "should encrypt and decrypt a message correctly" $ do let originalMessage = "Hello, World!" masterPassword = "mysecretpassword" encryptedMessage = Cr.encrypt' masterPassword originalMessage decryptedMessage = Cr.decrypt' masterPassword encryptedMessage decryptedMessage `shouldBe` originalMessage describe "Utils Valid password" $ do it "should result in Valid for master password validation with valid input" $ do let password1 = "mysecretpassword" password2 = "mysecretpassword" result = Ut.validate_password password1 password2 result `shouldBe` Ut.Valid password1 describe "Utils DoNotMatch password" $ do it "should result in DoNotMatch for master password validation with non-matching input" $ do let password1 = "mysecretpassword" password2 = "nonmatchingpassword" result = Ut.validate_password password1 password2 result `shouldBe` Ut.DoNotMatch describe "Utils Empty password" $ do it "should result in Empty for master password validation with empty input" $ do let password1 = "" password2 = "" result = Ut.validate_password password1 password2 result `shouldBe` Ut.Empty describe "Utils TooShort password" $ do it "should result in TooShort for master password validation with too short input" $ do let password1 = "short" password2 = "short" result = Ut.validate_password password1 password2 result `shouldBe` Ut.TooShort