ruby 设置集成测试Rails的会话

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby 设置集成测试Rails的会话相关的知识,希望对你有一定的参考价值。

class RackSessionTestMiddleware   


  class << self     
      
    def session_data
      @@session_data||={}
    end
    
    def session_data=(value)
      @@session_data = value 
    end
    
  end
    
  def initialize(app, session_keys)
    @app = app
    @session_keys = session_keys
  end
 
  def call(env)
   

      rack_session =   ::Rack::Request.new(env).session
      
      if self.class.session_data.present? && self.class.session_data.is_a?(Hash) && self.class.session_data[:bypass].blank? 
      
        self.class.session_data.each { |k, v|  rack_session[k] = v }

      elsif self.class.session_data.present? && self.class.session_data.is_a?(Hash) && self.class.session_data[:bypass].present?

        # do nothing with the session ( this in for cases when you really need to do the whole login process) 

      else
        @session_keys.each{|key|   rack_session.delete(key.to_s)  } #avoiding clearing the flash
      end
    
        
    @app.call(env)
  end
 
  
end



 
Rails.configuration.middleware.use RackSessionTestMiddleware, ["user"] if Rails.env.test?

以上是关于ruby 设置集成测试Rails的会话的主要内容,如果未能解决你的问题,请参考以下文章

ruby 用于检查rails_admin实现中的自定义操作的集成测试

Ruby on Rails 中的会话如何工作?

ruby 在Rails 3中解码会话Cookie

ruby 一个简单的脚本来解码Rails 4会话cookie

ruby 一个简单的脚本来解码Rails 4会话cookie

Rails Guides - Ruby on Rails 安全指南