«Токен подтверждения недействителен» при тестировании с Cucumber - PullRequest
2 голосов
/ 26 сентября 2011

Я пытаюсь получить регистрационную форму, работающую с Devise; Я проверяю это с огурцом.

Когда пользователь регистрируется, я отправляю подтверждение по электронной почте. Что-то идет не так при выполнении моего теста.

Это мой сценарий:

  Scenario: Signing in via confirmation
    Given there are the following users:
      | email             | password | unconfirmed |
      | user@ticketee.com | password | true        |
    And "user@ticketee.com" opens the email with subject "Confirmation instructions"
    And they click the first link in the email
    Then I should see "Your account was successfully confirmed."
    And I should see "Signed in as user@ticketee.com"

Однако я получаю следующую ошибку:

 expected there to be content "Your account was successfully confirmed. You are now signed in." in "\n      Ticketee\n  \n\nTicketee\nSign up\n    Sign in\nResend confirmation instructions\n\n\n      \n      1 error prohibited this user from being saved:\n      Confirmation token is invalid\n\n\n  Email\n\n  \n\n  Sign inSign upForgot your password?" (RSpec::Expectations::ExpectationNotMetError)

Я думаю, что важная часть здесь:

1 error prohibited this user from being saved:\n Confirmation token is invalid

Я проверил это вручную (пошел, чтобы зарегистрироваться и щелкнул ссылку подтверждения в электронном письме), и это работает нормально. Только когда я проверяю через Cucumber, я получаю сообщение «Маркер подтверждения недействителен». Кто-нибудь знает, как я могу это исправить? Я хотел бы, чтобы мои тесты прошли ..

Большое спасибо.

РЕДАКТИРОВАТЬ: Шаги просят в комментариях:

When /^(?:I|they|"([^"]*?)") opens? the email with subject "([^"]*?)"$/ do |address, subject|
  open_email(address, :with_subject => subject)
end

Нажатие на ссылку:

When /^(?:I|they) click the first link in the email$/ do
  click_first_link_in_email
end

Я только что посмотрел полученное письмо с подтверждением, и мой адрес электронной почты анализируется как ссылка mailto:; Я изменил первый шаг ссылки на это:

And they follow "Confirm my account" in the email

но это тоже не сработало .. Я все еще получаю сообщение об ошибке неверного токена.

1 Ответ

3 голосов
/ 26 сентября 2011

Итак .. Я потратил на это два часа.У меня была опечатка.

У меня следующая строка:

unconfirmed = attributes.delete("unconfirmed") == "true"

Я забыл поставить кавычки вокруг true.Без кавычек тест проходит ..

Боже.

Спасибо всем, кто уделил мне немного времени:)

...