From 63105399b8cd9c7917b9de341517db3bd6b633bc Mon Sep 17 00:00:00 2001 From: Jonathan Lamothe Date: Wed, 12 Dec 2018 17:38:10 -0500 Subject: [PATCH] implemented default password policy --- src/Password.hs | 8 +++++++- test/Spec.hs | 4 +++- test/Spec/PWPolicy.hs | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 test/Spec/PWPolicy.hs diff --git a/src/Password.hs b/src/Password.hs index 1a7b34e..ba450b7 100644 --- a/src/Password.hs +++ b/src/Password.hs @@ -29,7 +29,9 @@ module Password ( PWPolicy (..), -- ** Lenses -- $lenses - pwLength, pwUpper, pwLower, pwDigits, pwSpecial + pwLength, pwUpper, pwLower, pwDigits, pwSpecial, + -- ** Default Instances + newPWPolicy ) where import Control.Lens (makeLenses) @@ -56,4 +58,8 @@ data PWPolicy = PWPolicy makeLenses ''PWPolicy +-- | default password policy +newPWPolicy :: PWPolicy +newPWPolicy = PWPolicy 16 0 0 0 (Just 0) + --jl diff --git a/test/Spec.hs b/test/Spec.hs index bb57a0e..1134694 100644 --- a/test/Spec.hs +++ b/test/Spec.hs @@ -26,11 +26,13 @@ import Control.Monad (when) import System.Exit (exitFailure) import Test.HUnit (errors, failures, runTestTT, Test(TestList)) +import qualified Spec.PWPolicy as PWPolicy + main = do counts <- runTestTT tests when (failures counts > 0 || errors counts > 0) exitFailure -tests = TestList [] +tests = TestList [PWPolicy.tests] --jl diff --git a/test/Spec/PWPolicy.hs b/test/Spec/PWPolicy.hs new file mode 100644 index 0000000..7783dec --- /dev/null +++ b/test/Spec/PWPolicy.hs @@ -0,0 +1,40 @@ +{- + +passman +Copyright (C) 2018 Jonathan Lamothe + + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this program. If not, see +. + +-} + +module Spec.PWPolicy (tests) where + +import Control.Lens ((^.)) +import Test.HUnit (Test(..), (~?=)) + +import Password + +tests = TestLabel "PWPolicy" $ TestList $ map test' + [ ( "pwLength", newPWPolicy^.pwLength ~?= 16 ) + , ( "pwUpper", newPWPolicy^.pwUpper ~?= 0 ) + , ( "pwLower", newPWPolicy^.pwLower ~?= 0 ) + , ( "pwDigits", newPWPolicy^.pwDigits ~?= 0 ) + , ( "pwSpecial", newPWPolicy^.pwSpecial ~?= Just 0 ) + ] + +test' (label, x) = TestLabel label x + +--jl