From 6998dfe03e48cdfccee2195f2348d770588a211a Mon Sep 17 00:00:00 2001 From: Jonathan Lamothe Date: Mon, 24 Dec 2018 12:22:54 -0500 Subject: [PATCH] implemented pwGetService --- src/Password.hs | 2 +- test/Spec.hs | 2 ++ test/Spec/PWGetService.hs | 57 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 test/Spec/PWGetService.hs diff --git a/src/Password.hs b/src/Password.hs index 9ce30ea..6e30491 100644 --- a/src/Password.hs +++ b/src/Password.hs @@ -236,7 +236,7 @@ pwGetService -> Maybe PWData -- ^ the service's password data, or @"Nothing"@ if the service is -- not found -pwGetService = undefined +pwGetService = M.lookup isSpecial :: Char -> Bool isSpecial x = not $ isUpper x || isLower x || isDigit x diff --git a/test/Spec.hs b/test/Spec.hs index e9103de..d2e1f89 100644 --- a/test/Spec.hs +++ b/test/Spec.hs @@ -31,6 +31,7 @@ import qualified Spec.NewPWDatabase as NewPWDatabase import qualified Spec.NewPWPolicy as NewPWPolicy import qualified Spec.NewPWSalt as NewPWSalt import qualified Spec.PWGenerate as PWGenerate +import qualified Spec.PWGetService as PWGetService import qualified Spec.PWHasService as PWHasService import qualified Spec.PWSetService as PWSetService import qualified Spec.ValidatePWData as ValidatePWData @@ -53,6 +54,7 @@ tests = TestList , PWGenerate.tests , PWHasService.tests , PWSetService.tests + , PWGetService.tests ] --jl diff --git a/test/Spec/PWGetService.hs b/test/Spec/PWGetService.hs new file mode 100644 index 0000000..f19ee0c --- /dev/null +++ b/test/Spec/PWGetService.hs @@ -0,0 +1,57 @@ +{- + +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.PWGetService (tests) where + +import qualified Data.Map as M +import System.Random (mkStdGen) +import Test.HUnit (Test (..), (~?=)) + +import Password + +tests = TestLabel "pwGetService" $ TestList + [ empty, found, notFound ] + +empty = TestLabel "empty database" $ + pwGetService "foo" newPWDatabase ~?= Nothing + +found = TestLabel "service found" $ + pwGetService "foo" db ~?= Just foo + +notFound = TestLabel "service not found" $ + pwGetService "quux" db ~?= Nothing + +db = M.fromList + [ ( "foo", foo ) + , ( "bar", bar ) + , ( "baz", baz ) + ] + +(foo, g') = newPWData g + +(bar, g'') = newPWData g' + +(baz, _) = newPWData g'' + +g = mkStdGen 1 + +--jl