implemented pwRemoveService

This commit is contained in:
Jonathan Lamothe 2018-12-31 14:09:13 -05:00
parent 82c53ce446
commit b52380a10b
3 changed files with 80 additions and 1 deletions

View File

@ -44,7 +44,7 @@ module Password (
-- ** Password Checkers
pwCountUpper, pwCountLower, pwCountDigits, pwCountSpecial, pwCount,
-- ** Database Functions
pwHasService, pwSetService, pwGetService, pwSearch
pwHasService, pwSetService, pwGetService, pwRemoveService, pwSearch
) where
import Control.Lens (makeLenses, over, set, (^.))
@ -297,6 +297,16 @@ pwGetService
-- not found
pwGetService = M.lookup
-- | removes a service from the database
pwRemoveService
:: String
-- ^ the service being removed
-> PWDatabase
-- ^ the database the service is being removed from
-> PWDatabase
-- ^ the resulting database
pwRemoveService = M.delete
-- | searches for a service
pwSearch
:: String

View File

@ -34,6 +34,7 @@ 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.PWRemoveService as PWRemoveService
import qualified Spec.PWSearch as PWSearch
import qualified Spec.PWSetService as PWSetService
import qualified Spec.ValidatePWData as ValidatePWData
@ -58,6 +59,7 @@ tests = TestList
, PWSetService.tests
, PWGetService.tests
, PWSearch.tests
, PWRemoveService.tests
, JSON.tests
]

View File

@ -0,0 +1,67 @@
{-
passman
Copyright (C) 2018 Jonathan Lamothe
<jlamothe1980@gmail.com>
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
<https://www.gnu.org/licenses/>.
-}
module Spec.PWRemoveService (tests) where
import qualified Data.Map.Lazy as M
import System.Random (mkStdGen)
import Test.HUnit (Test (..), assertBool, (~?=))
import Password
tests = TestLabel "pwRemoveService" $ TestList
[ emptyDB
, existingService
, missingService
]
emptyDB = TestLabel "empty database" $
pwRemoveService "foo" newPWDatabase ~?= newPWDatabase
existingService = TestLabel "existing service" $
test' "foo" ["bar", "baz"]
missingService = TestLabel "missing service" $
test' "quux" ["foo", "bar", "baz"]
test' serv keys = let db' = pwRemoveService serv db in
TestList $
(TestLabel "key count" $ length keys ~?= length (M.keys db')) :
map
(\x -> TestLabel x $ TestCase $ assertBool "service missing" $ pwHasService x db')
keys
db = M.fromList
[ ( "foo", foo )
, ( "bar", bar )
, ( "baz", baz )
]
(foo, g') = newPWData g
(bar, g'') = newPWData g'
(baz, _) = newPWData g''
g = mkStdGen 1
--jl