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