Mobile on Ralsで キャリアIPの更新を Test::Unit でテストする
ちゃんと過不足のIPも表示してくれる、いつ使えなくなるかはわからないけど。
require 'open-uri' class CarierIpTest < ActiveSupport::TestCase # Replace this with your real tests. @@SOFTBANK_URL = 'http://developers.softbankmobile.co.jp/dp/tech_svc/web/ip.php' @@DOCOMO_URL = 'http://www.nttdocomo.co.jp/service/imode/make/content/ip/' @@AU_URL = 'http://www.au.kddi.com/ezfactory/tec/spec/ezsava_ip.html' def diff_ip url, ips html = open(url).read.split(/\s*<[^>]+>\s*/).join(',').strip # fix me p = html.scan(/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\,*\/[0-9][0-9]/).collect!{|c| c.tr(',', '')} d1, d2 = p - ips, ips - p msg = d1.empty? ? '' : " +(#{d1.join(' ')})" msg.concat(" -(#{d2.join(' ')})") unless d2.empty? msg end def test_au msg = diff_ip @@AU_URL, ::ActionController::Mobile::AU::IP_ADDRESS assert_equal(msg, '') end def test_docomo msg = diff_ip @@DOCOMO_URL, ::ActionController::Mobile::DoCoMo::IP_ADDRESS assert_equal(msg, '') end def test_softbank msg = diff_ip @@SOFTBANK_URL, ::ActionController::Mobile::SoftBank::IP_ADDRESS assert_equal(msg, '') end end
出力
Loaded suite ./test/unit/test_carrier_ip Started FFF Finished in 0.575298 seconds. 1) Failure: test_au(CarierIpTest) [./test/unit/test_carrier_ip.rb:20:in `test_au' /usr/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/active_support/testing/default.rb:7:in `run']: <" +(210.230.128.0/24 222.7.56.0/24 219.125.151.128/25 219.125.145.0/25 121.111.231.0/25 121.111.231.160/27 121.111.227.0/25) -(210.230.128.0/26)"> expected but was <"">. 2) Failure: test_docomo(CarierIpTest) [./test/unit/test_carrier_ip.rb:24:in `test_docomo' /usr/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/active_support/testing/default.rb:7:in `run']: <" +(203.138.203.0/24 203.138.203.0/24)"> expected but was <"">. 3) Failure: test_softbank(CarierIpTest) [./test/unit/test_carrier_ip.rb:28:in `test_softbank' /usr/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/active_support/testing/default.rb:7:in `run']: <" +(123.108.236.0/24 123.108.237.0/27 202.253.96.224/27 210.169.130.112/28) -(202.253.96.248/29 210.169.130.112/29 210.169.130.120/29 210.169.176.0/24)"> expected but was <"">. 3 tests, 3 assertions, 3 failures, 0 errors