Source

haskellblog / testsuite / Tests / Blog / Model.hs

module Tests.Blog.Model where

import Blog.Model
import Database.HDBC
import Control.Exception (bracket)
import Test.HUnit
import qualified Blog.DB as DB
import qualified Tests.Blog.TestDB as TestDB


withEmptyUsersTable = bracket (do
                                cn <- TestDB.connect
                                _ <- quickQuery' cn "DELETE FROM users;" []
                                commit cn
                                return cn)
                               (\cn -> do
                                    _ <- quickQuery' cn "DELETE FROM users;" []
                                    commit cn
                                    return ())

testSetPassword = withEmptyUsersTable
                  (\cn -> do
                     res1 <- checkPassword cn "testuser" "testpassword"
                     assertBool "Password check should fail with no user." (not res1)

                     DB.doInsert cn "users" [ "username", "password"] [ toSql "testuser", toSql "sha1:foo:bar" ]

                     setPassword cn "testuser" "testpassword"
                     res3 <- checkPassword cn "testuser" "testpassword"
                     assertBool "Password check should succeed" res3

                     res4 <- checkPassword cn "testuser" "somethingelse"
                     assertBool "Password check should fail with wrong password" (not res4)

                  )

tests = test [ "set password" ~: testSetPassword
             ]
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.