r18455 reverted.
[ruby-svn.git] / test / drb / test_acl.rb
blobd8955e0e75e55c085adfa301c395e15b58ecc48c
1 # acltest.rb - ACL unit test
2 # Copyright (c) 2000 Masatoshi SEKI
4 # acltest.rb is copyrighted free software by Masatoshi SEKI.
5 # You can redistribute it and/or modify it under the same terms as Ruby.
7 require 'test/unit'
8 require 'drb/acl'
10 class SampleHosts
11   def initialize
12     list = %w(127.0.0.1 localhost
13               192.168.1.1 x68k.linux.or.jp
14               192.168.1.2 lc630.macos.or.jp
15               192.168.1.3 lib30.win32.or.jp
16               192.168.1.4 ns00.linux.or.jp
17               192.168.1.5 yum.macos.or.jp
18               ::ffff:192.168.1.5 ipv6.macos.or.jp
19               ::192.168.1.5 too.yumipv6.macos.or.jp
20               192.168.1.254 comstarz.foo.or.jp)
22     @hostlist = Array.new(list.size / 2)
23     @hostlist.each_index do |idx|
24       @hostlist[idx] = ["AF_INET", 10000, list[idx * 2 + 1], list[idx * 2]]
25     end
27     @hosts = Hash.new
28     @hostlist.each do |h|
29       @hosts[h[2].split('.')[0]] = h
30     end
31   end
32   attr_reader(:hostlist, :hosts)
33 end
36 class ACLEntryTest < Test::Unit::TestCase
37   HOSTS = SampleHosts.new
39   def setup
40     @hostlist = HOSTS.hostlist
41     @hosts = HOSTS.hosts
42   end
44   def test_all
45     a = ACL::ACLEntry.new("*")
46     b = ACL::ACLEntry.new("all")
47     @hostlist.each do |h|
48       assert(a.match(h))
49       assert(b.match(h))
50     end
51   end
53   def test_ip_v6
54     a = ACL::ACLEntry.new('::ffff:192.0.0.0/104')
55     assert(! a.match(@hosts['localhost']))
56     assert(a.match(@hosts['yum']))
57     assert(a.match(@hosts['ipv6']))
58     assert(! a.match(@hosts['too']))
59   end
61   def test_ip
62     a = ACL::ACLEntry.new('192.0.0.0/8')
63     assert(! a.match(@hosts['localhost']))
64     assert(a.match(@hosts['yum']))
66     a = ACL::ACLEntry.new('192.168.0.1/255.255.0.255')
67     assert(! a.match(@hosts['localhost']))
68     assert(! a.match(@hosts['yum']))
69     assert(a.match(@hosts['x68k']))
71     a = ACL::ACLEntry.new('192.168.1.0/24')
72     assert(! a.match(@hosts['localhost']))
73     assert(a.match(@hosts['yum']))
74     assert(a.match(@hosts['x68k']))
76     a = ACL::ACLEntry.new('92.0.0.0/8')
77     assert(! a.match(@hosts['localhost']))
78     assert(! a.match(@hosts['yum']))
79     assert(! a.match(@hosts['x68k']))
81     a = ACL::ACLEntry.new('127.0.0.1/255.0.0.255')
82     assert(a.match(@hosts['localhost']))
83     assert(! a.match(@hosts['yum']))
84     assert(! a.match(@hosts['x68k']))
85   end
87   def test_name
88     a = ACL::ACLEntry.new('*.jp')
89     assert(! a.match(@hosts['localhost']))
90     assert(a.match(@hosts['yum']))
92     a = ACL::ACLEntry.new('yum.*.jp')
93     assert(a.match(@hosts['yum']))
94     assert(! a.match(@hosts['lc630']))
96     a = ACL::ACLEntry.new('*.macos.or.jp')
97     assert(a.match(@hosts['yum']))
98     assert(a.match(@hosts['lc630']))
99     assert(! a.match(@hosts['lib30']))
100   end
103 class ACLListTest < Test::Unit::TestCase
104   HOSTS = SampleHosts.new
106   def setup
107     @hostlist = HOSTS.hostlist
108     @hosts = HOSTS.hosts
109   end
111   private
112   def build(list)
113     acl= ACL::ACLList.new
114     list.each do |s|
115       acl.add s
116     end
117     acl
118   end
120   public
121   def test_all_1
122     a = build(%w(all))
123     @hostlist.each do |h|
124       assert(a.match(h))
125     end
126   end
128   def test_all_2
129     a = build(%w(localhost 127.0.0.0/8 yum.* *))
130     @hostlist.each do |h|
131       assert(a.match(h))
132     end
133   end
135   def test_1
136     a = build(%w(192.0.0.1/255.0.0.255 yum.*.jp))
137     assert(a.match(@hosts['yum']))
138     assert(a.match(@hosts['x68k']))
139     assert(! a.match(@hosts['lc630']))
140   end
142   def test_2
143     a = build(%w(*.linux.or.jp))
144     assert(!a.match(@hosts['yum']))
145     assert(a.match(@hosts['x68k']))
146     assert(!a.match(@hosts['lc630']))
147   end
150 class ACLTest < Test::Unit::TestCase
151   HOSTS = SampleHosts.new
153   def setup
154     @hostlist = HOSTS.hostlist
155     @hosts = HOSTS.hosts
156   end
158   def test_0
159     a = ACL.new
160     @hostlist.each do |h|
161       assert(a.allow_addr?(h))
162     end
163   end
165   def test_not_0
166     a = ACL.new([], ACL::ALLOW_DENY)
167     @hostlist.each do |h|
168       assert(! a.allow_addr?(h))
169     end
170   end
172   def test_1
173     data = %w(deny all
174               allow localhost
175               allow x68k.*)
177     a = ACL.new(data)
178     assert(a.allow_addr?(@hosts['x68k']))
179     assert(a.allow_addr?(@hosts['localhost']))
180     assert(! a.allow_addr?(@hosts['lc630']))
181   end
183   def test_not_1
184     data = %w(deny 192.0.0.0/8
185               allow localhost
186               allow x68k.*)
188     a = ACL.new(data, ACL::ALLOW_DENY)
189     assert(!a.allow_addr?(@hosts['x68k']))
190     assert(a.allow_addr?(@hosts['localhost']))
191     assert(! a.allow_addr?(@hosts['lc630']))
192   end
195