应客户的要求,每当应用程序检测到来自不同IP地址的同一用户的两个活动会话时,我必须实施通知电子邮件。你如何测试这个?如何在Rails中测试多个IP地址的登录
回答
创建集成测试的测试/集成/ 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 "https://stackoverflow.com/users/john", path
reset!
@@default_ip = "200.1.1.1"
post_via_redirect login_path,
:user => {:username => "john", :password => "test"}
assert_equal "https://stackoverflow.com/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!
是开始新会话所必需的。
有关集成测试的介绍,请在测试中检查Rails Guides,但不幸的是,他们没有提及reset!
方法。
我不能得到这个解决方案(或任何我试过的排列)工作。我没有得到任何错误,但是当我运行测试时,它不显示正确的IP。 (我试图编写一个测试来验证Devise为其“可跟踪”功能记录正确的远程IP)。 – 2015-03-17 15:45:54
也许Devise正在从不同的地方获取IP地址? ActionDispatch实现'request.remote_ip'和'request.ip'。这[SO问题](http://stackoverflow.com/questions/10997005/whats-the-difference-between-request-remote-ip-and-request-ip-in-rails)解释了这种差异。我会检查Devise的源代码,他们甚至可能会绕过这两种方法。 – 2015-04-11 19:15:46
假设你使用的是一些框架,在这样的记录作为色器件,以下命令将获得一台机器的IP远程访问你的应用程序:
request.remote_ip
您需要将自己使用过的IP地址存储在模型那么你应该很容易知道他们是否使用不同的IP访问。
迈克尔G.
- 1. 如何登录wso2esb ip地址
- 2. 使用Devise登录时记录用户的IP地址(Rails 3.2)
- 3. Selenium/NUnit在多个IP地址上运行一个测试
- 4. 停止NGINX登录我的IP地址
- 5. 加特林测试多个独特的IP地址
- 6. 检测登录用户的IP地址更改
- 7. 如何在Windows登录前为服务器分配IP地址
- 8. 模拟多个IP地址进行测试
- 9. 如何在JBoss上记录IP地址
- 10. 在C中模拟多个IP地址#
- 11. 本地测试“Facebook登录”
- 12. 获取多个IP地址
- 13. Log4Net记录多个线程中单个会话的IP地址
- 14. jmeter远程测试-IP地址
- 15. IP摄像机测试地址
- 16. 从iPhone测试IP地址可达性
- 17. 春季安全从相同的IP地址登录几个
- 18. 如何用页面中的IP地址替换IP地址中的IP地址(例如“国家,地区,城市”)
- 19. 如何将IP地址解析为Haskell中的IP地址?
- 20. 如何检测IP地址更改?
- 21. 单个容器的多个IP地址
- 22. 一个主机的多个IP地址
- 23. 从登录日志中获取最新的IP地址
- 24. 通过moodle中的ip地址限制登录次数
- 25. 在WCF服务中记录IP地址
- 26. 如何从目录中的文件名保存多个IP地址?
- 27. Shiro中的多个登录网址
- 28. IP地址欺骗/更改为在本地机器上测试
- 29. 如何从IP地址列表中查找IP地址范围
- 30. 在同一台机器上调试多个Socket IP地址
+1我没有这方面的实际用途,但我真的很感兴趣的答案:) – 2012-08-13 23:36:16