Skip to content

Commit

Permalink
Support .ne.jp
Browse files Browse the repository at this point in the history
  • Loading branch information
milk1000cc committed Jul 6, 2010
1 parent dd7fc7c commit b274707
Show file tree
Hide file tree
Showing 7 changed files with 149 additions and 25 deletions.
6 changes: 3 additions & 3 deletions lib/whois/answer/parser/whois.jprs.jp.rb
Expand Up @@ -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
Expand All @@ -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
Expand Down
8 changes: 0 additions & 8 deletions test/testcases/responses/whois.jprs.jp/available.txt

This file was deleted.

17 changes: 17 additions & 0 deletions 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)
17 changes: 17 additions & 0 deletions 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)
19 changes: 19 additions & 0 deletions 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)
107 changes: 93 additions & 14 deletions test/whois/answer/parser/whois.jprs.jp_test.rb
Expand Up @@ -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 }
Expand Down

0 comments on commit b274707

Please sign in to comment.