Я использую Rails 6 в режиме API и последнюю версию devise.
Я создал rspe c тест для sign_in и sign_up, и он работает правильно, они принимают json ответ и отвечают в json
Когда я пытаюсь протестировать мой API с почтальоном, он работает для sign_up, но не для sign_in.
С почтальоном я получаю следующее возвращение
{
"sucess": false,
"message": "fail myapp_failure_app"
}
Так что я попробуйте выкопать в devise gem
проблему, и я наконец-то обнаружил, что проблема здесь
def create
self.resource = warden.authenticate!(auth_options)
...
end
А в warden gem
проблема возникла при методе _run_callbacks(*args)
def _run_callbacks(*args) #:nodoc:
self.class._run_callbacks(*args)
end
Устаревшие аргументы к этому методу:
[:after_set_user, #<User id: 4, nickname: "max", email: "test@test", birth_at: nil, created_at: "2020-01-12 22:44:19", updated_at: "2020-01-13 21:44:57">, Warden::Proxy:70223361236700 @config={:default_scope=>:user, :scope_defaults=>{}, :default_strategies=>{:user=>[:jwt, :rememberable, :database_authenticatable]}, :intercept_401=>false, :failure_app=>MyappFailureApp}, {:scope=>:user, :recall=>"sessions#new", :store=>true, :event=>:authentication}]
Если я изменю метод на этот
def _run_callbacks(*args) #:nodoc:
return
self.class._run_callbacks(*args)
end
Он работает хорошо.
Я ожидал найти решение я сам копаю драгоценный камень и сравниваю свои результаты с моим spe c, но я, честно говоря, не понимаю, что на самом деле делают эти методы и почему это отличается от моего spe c.