gpt4 book ai didi

ruby-on-rails - 如何在 Rails 中测试从多个 IP 地址登录

转载 作者:行者123 更新时间:2023-11-28 19:54:09 25 4
gpt4 key购买 nike

应客户的要求,我必须在每次应用程序检测到来自不同 IP 地址的同一用户的两个事件 session 时发送一封通知电子邮件。你如何测试这个?

最佳答案

创建集成测试test/integration/multiple_ip_test.rb

require 'test_helper'

@@default_ip = "127.0.0.1"

class ActionController::Request
def remote_ip
@@default_ip
end
end

class MultipleIpTest < ActionDispatch::IntegrationTest
fixtures :all

test "send email notification if login from different ip address" do
post_via_redirect login_path,
:user => {:username => "john", :password => "test"}
assert_equal "/users/john", path

reset!
@@default_ip = "200.1.1.1"
post_via_redirect login_path,
:user => {:username => "john", :password => "test"}
assert_equal "/users/john", path
assert_equal 1, ActionMailer::Base.deliveries.size
end
end

集成测试看起来很像功能测试,但也有一些不同。您不能使用 @request 更改原始 IP 地址。这就是为什么我必须打开 ActionController::Request 类并重新定义 remote_ip 方法的原因。

因为对 post_via_redirect 的响应总是 200,所以我没有使用 assert_response :redirect,而是使用 URL 来验证用户是否已成功登录。

调用 reset! 是启动新 session 所必需的。

有关集成测试的介绍,请查看 Rails Guides在测试中,不幸的是他们没有提到 reset! 方法。

关于ruby-on-rails - 如何在 Rails 中测试从多个 IP 地址登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11943696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com