Я пытаюсь заменить Auth.Dummy на Auth.Email в наборе тестов на скаффолдинговом сайте yesod (postgres), однако мне не удается заполучить пароль при создании пользователя.
Я установил Auth.Email на Foundation.hs, и он работает нормально. Я также установил функцию authenticateAs для аутентификации через вход в Auth.Email. Но при запуске теста аутентификация не удалась. Я считаю, что это потому, что сохраненный пароль не засолен. Как я могу посолить пароль?
TestImport.hs
authenticateAs :: Entity User -> YesodExample App ()
authenticateAs (Entity _ u) = do
request $ do
setMethod "POST"
addPostParam "email" $ userEmail u
addPostParam "password" "secret"
setUrl $ AuthR $ PluginR "email" ["login"]
createUser :: Text -> YesodExample App (Entity User)
createUser ident = runDB $ do
user <- insertEntity User
{ userEmail = ident
, userPassword = Just "secret"
, userVerkey = Nothing
, userVerified = True
}
return user
в тесте / Обработчик / Profile.hs
it "asserts access to my-account for authenticated users" $ do
userEntity <- createUser "foo"
authenticateAs userEntity
get ProfileR
statusIs 200
Как мне создать пользователя с посоленным паролем?
Это сообщение об ошибке, которое я получаюÇ:
asserts access to my-account for authenticated users FAILED [1]
2.0.0.0 - - [29/May/2019:13:39:35 +0900] "POST /auth/page/email/login HTTP/1.1" 303 0 "" ""
2.0.0.0 - - [29/May/2019:13:39:35 +0900] "GET /profile HTTP/1.1" 403 3105 "" ""
Failures:
test/Handler/ProfileSpec.hs:20:13:
1) Handler.Profile, Profile page, asserts access to my-account for authenticated users
Expected status was 200 but received status was 403