Sha256: fa3ef2ca32fe87cc05cb4998b7c24eeaae486138aeef0713ac4dd993d59aa5fa

Contents?: true

Size: 1.85 KB

Versions: 71

Compression:

Stored size: 1.85 KB

Contents

module Facebooker
  module Rails
    module TestHelpers
      def assert_facebook_redirect_to(url)
        assert_response :success
        assert_not_nil facebook_redirect_url
        assert_equal url, facebook_redirect_url
      end

      def follow_facebook_redirect!
        facebook_post facebook_redirect_url
      end
      
      def facebook_get(path,params={})
        facebook_verb(:get,path,params)
      end
      
      def facebook_post(path,params={})
        facebook_verb(:post,path,params)
      end
      
      def facebook_put(path,params={})
        facebook_verb(:put,path,params)
      end
      
      def facebook_delete(path,params={})
        facebook_verb(:delete,path,params)
      end
      
      def facebook_verb(verb,path, params={})
        send verb, path, facebook_params(params).reverse_merge(:canvas => true)
      end
      
      def facebook_params(params = {})
        params = default_facebook_parameters.with_indifferent_access.merge(params || {})
        sig = generate_signature params
        params.merge(:fb_sig => sig)
      end

    private

      def default_facebook_parameters
        {
          :fb_sig_added => "1", 
          :fb_sig_session_key => "facebook_session_key", 
          :fb_sig_user => "1234", 
          :fb_sig_expires => "0",
          :fb_sig_in_canvas => "1",
          :fb_sig_time => Time.now.to_f
        }
      end

      def facebook_redirect_url
        match = @response.body.match(/<fb:redirect url="([^"]+)"/)
        match.nil? ? nil : match.captures[0]
      end

      def generate_signature(params)
        facebook_params = params.select { |param,_| param =~ /^fb_sig_/ }.map do |param, value|
          [param.sub(/^fb_sig_/, ''), value].join('=')
        end
        Digest::MD5.hexdigest([facebook_params.sort.join, Facebooker::Session.secret_key].join)
      end
      
    end
  end
end
        

Version data entries

71 entries across 71 versions & 14 rubygems

Version Path
corey-facebooker-1.0.28.1 lib/facebooker/rails/test_helpers.rb
fs-facebooker-1.0.37 lib/facebooker/rails/test_helpers.rb
mborromeo-facebooker-1.0.28 lib/facebooker/rails/test_helpers.rb
mborromeo-facebooker-1.0.29 lib/facebooker/rails/test_helpers.rb
mborromeo-facebooker-1.0.30 lib/facebooker/rails/test_helpers.rb
mborromeo-facebooker-1.0.31 lib/facebooker/rails/test_helpers.rb
micahwedemeyer-facebooker-1.0.50 lib/facebooker/rails/test_helpers.rb
micahwedemeyer-facebooker-1.0.51 lib/facebooker/rails/test_helpers.rb
mmangino-facebooker-1.0.16 lib/facebooker/rails/test_helpers.rb
mmangino-facebooker-1.0.19 lib/facebooker/rails/test_helpers.rb
mmangino-facebooker-1.0.20 lib/facebooker/rails/test_helpers.rb
mmangino-facebooker-1.0.21 lib/facebooker/rails/test_helpers.rb
mmangino-facebooker-1.0.22 lib/facebooker/rails/test_helpers.rb
mmangino-facebooker-1.0.23 lib/facebooker/rails/test_helpers.rb
mmangino-facebooker-1.0.24 lib/facebooker/rails/test_helpers.rb
mmangino-facebooker-1.0.25 lib/facebooker/rails/test_helpers.rb
mmangino-facebooker-1.0.26 lib/facebooker/rails/test_helpers.rb
mmangino-facebooker-1.0.27 lib/facebooker/rails/test_helpers.rb
mmangino-facebooker-1.0.28 lib/facebooker/rails/test_helpers.rb
mmangino-facebooker-1.0.29 lib/facebooker/rails/test_helpers.rb