Создание пользователя с защищенным паролем для использования AuthEmail вместо Auth.Dummy - PullRequest
1 голос
/ 29 мая 2019

Я пытаюсь заменить 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
...