Тестирование приложения facebook canvas на рельсах (используя Koala) с огурцом - PullRequest
0 голосов
/ 06 апреля 2011

Как я могу подделать метод current_user, чтобы остановить мои тесты на огурец?

Что-то вроде Given /^I am logged in$/ шага.

class ApplicationController < ActionController::Base
  protect_from_forgery

  helper_method :current_user

  def facebook_cookies
    @facebook_cookies ||= Koala::Facebook::OAuth.new.get_user_info_from_cookie(cookies)
  end

  def current_user
    @graph = Koala::Facebook::GraphAPI.new(facebook_cookies['access_token'])
    @current_user = User.find_by_fbid(@graph.get_object("me")["id"]) || User.create(:fbid => @graph.get_object("me")["id"]) 
  end

end

1 Ответ

1 голос
/ 06 апреля 2011

Я не знаком с Koala, но вот некоторые идеи, которые я успешно использовал с другими средами аутентификации.

  1. Определите current_user, чтобы он вел себя по-другому в тестовом режиме.Это немного уродливо.

    class ApplicationController < ActionController::Base
      ...
      def current_user
        if Rails.env == 'test'
          User.create! :username => 'Tester'
        else
          # do normal stuff
        end
      end
      ..
    end
    
  2. Создайте шаг, который регистрирует пользователя для вас, и просто используйте его в начале каждого сценария

    Given /^I am logged in$/ do
      passwd = 'realgoodpassword'
      user = User.create! :username => 'Tester', :password => passwd
      visit login_path
      fill_in 'Username', :with => user.username
      fill_in 'Password', :with => passwd
      click_button 'Sign in'
    end
    

Предполагается, что вы используете капибару для питания огурца.Вебрат может выглядеть иначе;загляните в features / step_definitions / web_steps.rb, чтобы получить некоторые идеи.

...