From 824f52b108dca9cd5269e1b5af3e8ec33c197285 Mon Sep 17 00:00:00 2001
From: Jonathan Lamothe <jlamothe1980@gmail.com>
Date: Mon, 24 Dec 2018 10:53:52 -0500
Subject: [PATCH] implemented pwHasService

---
 src/Password.hs           |  2 +-
 test/Spec.hs              |  2 ++
 test/Spec/PWHasService.hs | 54 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 57 insertions(+), 1 deletion(-)
 create mode 100644 test/Spec/PWHasService.hs

diff --git a/src/Password.hs b/src/Password.hs
index 4f1cb90..3582cda 100644
--- a/src/Password.hs
+++ b/src/Password.hs
@@ -213,7 +213,7 @@ pwHasService
   -- ^ the database to check
   -> Bool
   -- ^ returns @"True"@ if found; @"False"@ otherwise
-pwHasService = undefined
+pwHasService x db = elem x $ M.keys db
 
 -- | adds a service to the database, or overwrites an existing one
 pwSetService
diff --git a/test/Spec.hs b/test/Spec.hs
index 94b3c17..3c5af05 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.PWHasService as PWHasService
 import qualified Spec.ValidatePWData as ValidatePWData
 import qualified Spec.ValidatePWDatabase as ValidatePWDatabase
 import qualified Spec.ValidatePWPolicy as ValidatePWPolicy
@@ -49,6 +50,7 @@ tests = TestList
   , ValidatePWData.tests
   , ValidatePWPolicy.tests
   , PWGenerate.tests
+  , PWHasService.tests
   ]
 
 --jl
diff --git a/test/Spec/PWHasService.hs b/test/Spec/PWHasService.hs
new file mode 100644
index 0000000..2743480
--- /dev/null
+++ b/test/Spec/PWHasService.hs
@@ -0,0 +1,54 @@
+{-
+
+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.PWHasService (tests) where
+
+import qualified Data.Map as M
+import System.Random (mkStdGen)
+import Test.HUnit (Test (..), (~?=))
+
+import Password
+
+tests = TestLabel "pwHasService" $ TestList $ map test'
+  [ ( "empty database", "foo",  newPWDatabase, False )
+  , ( "in database",    "foo",  db,            True  )
+  , ( "not found",      "quux", db,            False )
+  ]
+
+test' (label, x, db, expect) = TestLabel label $
+  pwHasService x db ~?= expect
+
+db = M.fromList
+  [ ( "foo", foo )
+  , ( "bar", bar )
+  , ( "baz", baz )
+  ]
+
+(foo, g') = newPWData g
+
+(bar, g'') = newPWData g'
+
+(baz, _) = newPWData g''
+
+g = mkStdGen 1
+
+--jl