diff --git a/lib/whois/answer/parser/whois.jprs.jp.rb b/lib/whois/answer/parser/whois.jprs.jp.rb index 48eb7be05..a620c0b68 100644 --- a/lib/whois/answer/parser/whois.jprs.jp.rb +++ b/lib/whois/answer/parser/whois.jprs.jp.rb @@ -35,7 +35,7 @@ class Parser class WhoisJprsJp < Base property_supported :status do - @status ||= if content_for_scanner =~ /\[Status\]\s+(.*)\n/ + @status ||= if content_for_scanner =~ /\[Stat(?:us|e)\]\s+(.*)\n/ $1 end end @@ -51,14 +51,14 @@ class WhoisJprsJp < Base # TODO: timezone ('Asia/Tokyo') property_supported :created_on do - @created_on ||= if content_for_scanner =~ /\[Created on\]\s+(.*)\n/ + @created_on ||= if content_for_scanner =~ /\[(?:Created on|Registered Date)\]\s+(.*)\n/ Time.parse($1) end end # TODO: timezone ('Asia/Tokyo') property_supported :updated_on do - @updated_on ||= if content_for_scanner =~ /\[Last Updated\]\s+(.*)\n/ + @updated_on ||= if content_for_scanner =~ /\[Last Updated?\]\s+(.*)\n/m Time.parse($1) end end diff --git a/test/testcases/responses/whois.jprs.jp/available.txt b/test/testcases/responses/whois.jprs.jp/available.txt deleted file mode 100644 index b718824a3..000000000 --- a/test/testcases/responses/whois.jprs.jp/available.txt +++ /dev/null @@ -1,8 +0,0 @@ -[ JPRS database provides information on network administration. Its use is ] -[ restricted to network administration purposes. For further information, ] -[ use 'whois -h whois.jprs.jp help'. To suppress Japanese output, add'/e' ] -[ at the end of command, e.g. 'whois -h whois.jprs.jp xxx/e'. ] - -No match!! - - diff --git a/test/testcases/responses/whois.jprs.jp/jp/available.txt b/test/testcases/responses/whois.jprs.jp/jp/available.txt new file mode 100644 index 000000000..3757790aa --- /dev/null +++ b/test/testcases/responses/whois.jprs.jp/jp/available.txt @@ -0,0 +1,17 @@ +[ JPRS database provides information on network administration. Its use is ] +[ restricted to network administration purposes. For further information, ] +[ use 'whois -h whois.jprs.jp help'. To suppress Japanese output, add'/e' ] +[ at the end of command, e.g. 'whois -h whois.jprs.jp xxx/e'. ] + +No match!! + +With JP WHOIS, you can query JP domain name information. +Detail: http://jprs.jp/info/jp-whois/ + +For IP address information, please refer to the following WHOIS servers: + - JPNIC WHOIS (whois.nic.ad.jp) + - APNIC WHOIS (whois.apnic.net) + - ARIN WHOIS (whois.arin.net) + - RIPE WHOIS (whois.ripe.net) + - LACNIC WHOIS (whois.lacnic.net) + - AfriNIC WHOIS (whois.afrinic.net) diff --git a/test/testcases/responses/whois.jprs.jp/registered.txt b/test/testcases/responses/whois.jprs.jp/jp/registered.txt similarity index 100% rename from test/testcases/responses/whois.jprs.jp/registered.txt rename to test/testcases/responses/whois.jprs.jp/jp/registered.txt diff --git a/test/testcases/responses/whois.jprs.jp/ne.jp/available.txt b/test/testcases/responses/whois.jprs.jp/ne.jp/available.txt new file mode 100644 index 000000000..3757790aa --- /dev/null +++ b/test/testcases/responses/whois.jprs.jp/ne.jp/available.txt @@ -0,0 +1,17 @@ +[ JPRS database provides information on network administration. Its use is ] +[ restricted to network administration purposes. For further information, ] +[ use 'whois -h whois.jprs.jp help'. To suppress Japanese output, add'/e' ] +[ at the end of command, e.g. 'whois -h whois.jprs.jp xxx/e'. ] + +No match!! + +With JP WHOIS, you can query JP domain name information. +Detail: http://jprs.jp/info/jp-whois/ + +For IP address information, please refer to the following WHOIS servers: + - JPNIC WHOIS (whois.nic.ad.jp) + - APNIC WHOIS (whois.apnic.net) + - ARIN WHOIS (whois.arin.net) + - RIPE WHOIS (whois.ripe.net) + - LACNIC WHOIS (whois.lacnic.net) + - AfriNIC WHOIS (whois.afrinic.net) diff --git a/test/testcases/responses/whois.jprs.jp/ne.jp/registered.txt b/test/testcases/responses/whois.jprs.jp/ne.jp/registered.txt new file mode 100644 index 000000000..fe22532e6 --- /dev/null +++ b/test/testcases/responses/whois.jprs.jp/ne.jp/registered.txt @@ -0,0 +1,19 @@ +[ JPRS database provides information on network administration. Its use is ] +[ restricted to network administration purposes. For further information, ] +[ use 'whois -h whois.jprs.jp help'. To suppress Japanese output, add'/e' ] +[ at the end of command, e.g. 'whois -h whois.jprs.jp xxx/e'. ] + +Domain Information: +a. [Domain Name] GOOGLE.NE.JP +d. [Network Service Name] Google Inc. +l. [Organization Type] Network Service +m. [Administrative Contact] HR058JP +n. [Technical Contact] TW38378JP +p. [Name Server] ns1.google.com +p. [Name Server] ns2.google.com +p. [Name Server] ns3.google.com +p. [Name Server] ns4.google.com +[State] Connected (2010/09/30) +[Registered Date] 2003/09/11 +[Connected Date] 2003/09/11 +[Last Update] 2009/10/23 19:22:08 (JST) diff --git a/test/whois/answer/parser/whois.jprs.jp_test.rb b/test/whois/answer/parser/whois.jprs.jp_test.rb index ec6713127..1d7ab8357 100644 --- a/test/whois/answer/parser/whois.jprs.jp_test.rb +++ b/test/whois/answer/parser/whois.jprs.jp_test.rb @@ -8,76 +8,155 @@ def setup @host = "whois.jprs.jp" end +end + +class AnswerParserWhoisJprsJpJpTest < AnswerParserWhoisJprsJpTest def test_status - parser = @klass.new(load_part('/registered.txt')) + parser = @klass.new(load_part('/jp/registered.txt')) expected = "Active" assert_equal expected, parser.status assert_equal expected, parser.instance_eval { @status } - parser = @klass.new(load_part('/available.txt')) + parser = @klass.new(load_part('/jp/available.txt')) expected = nil assert_equal expected, parser.status assert_equal expected, parser.instance_eval { @status } end def test_available? - assert !@klass.new(load_part('/registered.txt')).available? - assert @klass.new(load_part('/available.txt')).available? + assert !@klass.new(load_part('/jp/registered.txt')).available? + assert @klass.new(load_part('/jp/available.txt')).available? end def test_registered? - assert @klass.new(load_part('/registered.txt')).registered? - assert !@klass.new(load_part('/available.txt')).registered? + assert @klass.new(load_part('/jp/registered.txt')).registered? + assert !@klass.new(load_part('/jp/available.txt')).registered? end def test_created_on - parser = @klass.new(load_part('/registered.txt')) + parser = @klass.new(load_part('/jp/registered.txt')) expected = Time.parse("2005-05-30") assert_equal expected, parser.created_on assert_equal expected, parser.instance_eval { @created_on } - parser = @klass.new(load_part('/available.txt')) + parser = @klass.new(load_part('/jp/available.txt')) expected = nil assert_equal expected, parser.created_on assert_equal expected, parser.instance_eval { @created_on } end def test_updated_on - parser = @klass.new(load_part('/registered.txt')) + parser = @klass.new(load_part('/jp/registered.txt')) # TODO: timezone # JST timezone is ignored by Time.parse expected = Time.parse("2009-06-01 01:05:04 JST") assert_equal expected, parser.updated_on assert_equal expected, parser.instance_eval { @updated_on } - parser = @klass.new(load_part('/available.txt')) + parser = @klass.new(load_part('/jp/available.txt')) expected = nil assert_equal expected, parser.updated_on assert_equal expected, parser.instance_eval { @updated_on } end def test_expires_on - parser = @klass.new(load_part('/registered.txt')) + parser = @klass.new(load_part('/jp/registered.txt')) expected = Time.parse("2010-05-31") assert_equal expected, parser.expires_on assert_equal expected, parser.instance_eval { @expires_on } - parser = @klass.new(load_part('/available.txt')) + parser = @klass.new(load_part('/jp/available.txt')) expected = nil assert_equal expected, parser.expires_on assert_equal expected, parser.instance_eval { @expires_on } end + def test_nameservers + parser = @klass.new(load_part('/jp/registered.txt')) + expected = %w( ns1.google.com ns2.google.com ns3.google.com ns4.google.com ) + assert_equal expected, parser.nameservers + assert_equal expected, parser.instance_eval { @nameservers } + + parser = @klass.new(load_part('/jp/available.txt')) + expected = %w() + assert_equal expected, parser.nameservers + assert_equal expected, parser.instance_eval { @nameservers } + end + +end + +class AnswerParserWhoisJprsJpNeJpTest < AnswerParserWhoisJprsJpTest + + def test_status + parser = @klass.new(load_part('/ne.jp/registered.txt')) + expected = "Connected (2010/09/30)" + assert_equal expected, parser.status + assert_equal expected, parser.instance_eval { @status } + + parser = @klass.new(load_part('/ne.jp/available.txt')) + expected = nil + assert_equal expected, parser.status + assert_equal expected, parser.instance_eval { @status } + end + + def test_available? + assert !@klass.new(load_part('/ne.jp/registered.txt')).available? + assert @klass.new(load_part('/ne.jp/available.txt')).available? + end + + def test_registered? + assert @klass.new(load_part('/ne.jp/registered.txt')).registered? + assert !@klass.new(load_part('/ne.jp/available.txt')).registered? + end + + + def test_created_on + parser = @klass.new(load_part('/ne.jp/registered.txt')) + expected = Time.parse("2003-09-11") + assert_equal expected, parser.created_on + assert_equal expected, parser.instance_eval { @created_on } + + parser = @klass.new(load_part('/ne.jp/available.txt')) + expected = nil + assert_equal expected, parser.created_on + assert_equal expected, parser.instance_eval { @created_on } + end + + def test_updated_on + parser = @klass.new(load_part('/ne.jp/registered.txt')) + # TODO: timezone + # JST timezone is ignored by Time.parse + expected = Time.parse("2009-10-23 19:22:08 JST") + assert_equal expected, parser.updated_on + assert_equal expected, parser.instance_eval { @updated_on } + + parser = @klass.new(load_part('/ne.jp/available.txt')) + expected = nil + assert_equal expected, parser.updated_on + assert_equal expected, parser.instance_eval { @updated_on } + end + + def test_expires_on + parser = @klass.new(load_part('/ne.jp/registered.txt')) + expected = nil + assert_equal expected, parser.expires_on + assert_equal expected, parser.instance_eval { @expires_on } + + parser = @klass.new(load_part('/ne.jp/available.txt')) + expected = nil + assert_equal expected, parser.expires_on + assert_equal expected, parser.instance_eval { @expires_on } + end def test_nameservers - parser = @klass.new(load_part('/registered.txt')) + parser = @klass.new(load_part('/ne.jp/registered.txt')) expected = %w( ns1.google.com ns2.google.com ns3.google.com ns4.google.com ) assert_equal expected, parser.nameservers assert_equal expected, parser.instance_eval { @nameservers } - parser = @klass.new(load_part('/available.txt')) + parser = @klass.new(load_part('/ne.jp/available.txt')) expected = %w() assert_equal expected, parser.nameservers assert_equal expected, parser.instance_eval { @nameservers }