bind-zone-parser 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/bind-zone-parser.gemspec +1 -1
- data/lib/bind/zone.rb +23 -0
- data/test/test_zone.rb +31 -0
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
data/bind-zone-parser.gemspec
CHANGED
data/lib/bind/zone.rb
CHANGED
@@ -12,6 +12,16 @@ module Bind
|
|
12
12
|
@origin = @parser.origin
|
13
13
|
update_blank_owners
|
14
14
|
end
|
15
|
+
def origin=(v)
|
16
|
+
@origin = v
|
17
|
+
@origin << '.' unless @origin[-1,1] == '.'
|
18
|
+
end
|
19
|
+
def qualified_records
|
20
|
+
raise "Please set origin before calling this function" if @origin.nil?
|
21
|
+
@records.map do |record|
|
22
|
+
qualify_record(record.dup)
|
23
|
+
end
|
24
|
+
end
|
15
25
|
protected
|
16
26
|
def update_blank_owners
|
17
27
|
last_owner = nil
|
@@ -20,5 +30,18 @@ module Bind
|
|
20
30
|
last_owner = record[:owner]
|
21
31
|
end
|
22
32
|
end
|
33
|
+
def qualify_record(record)
|
34
|
+
[:owner, :target, :mbox, :domain].each do |key|
|
35
|
+
if record.has_key?(key)
|
36
|
+
record[key] = qualify_name(record[key])
|
37
|
+
end
|
38
|
+
end
|
39
|
+
record
|
40
|
+
end
|
41
|
+
def qualify_name(dname)
|
42
|
+
return if dname.nil?
|
43
|
+
return @origin if dname == '@'
|
44
|
+
"#{dname}.#{@origin}" if dname[-1,1] != '.'
|
45
|
+
end
|
23
46
|
end
|
24
47
|
end
|
data/test/test_zone.rb
CHANGED
@@ -16,6 +16,16 @@ class TestBindZone < Test::Unit::TestCase
|
|
16
16
|
assert_equal "example.com.", @zone.origin
|
17
17
|
end
|
18
18
|
end
|
19
|
+
context "#origin=" do
|
20
|
+
should "append . if unqualified" do
|
21
|
+
@zone.origin = "example.com"
|
22
|
+
assert_equal "example.com.", @zone.origin
|
23
|
+
end
|
24
|
+
should "not append . if qualified" do
|
25
|
+
@zone.origin = "example.com."
|
26
|
+
assert_equal "example.com.", @zone.origin
|
27
|
+
end
|
28
|
+
end
|
19
29
|
context "#records" do
|
20
30
|
setup do
|
21
31
|
@records = @zone.records
|
@@ -27,5 +37,26 @@ class TestBindZone < Test::Unit::TestCase
|
|
27
37
|
assert @records.all? { |r| r[:owner] != "" }
|
28
38
|
end
|
29
39
|
end
|
40
|
+
context "#qualified_records" do
|
41
|
+
setup do
|
42
|
+
@records = @zone.qualified_records
|
43
|
+
@olen = @zone.origin.length
|
44
|
+
end
|
45
|
+
should "expand all @ origins" do
|
46
|
+
assert @records.all? { |r| r[:owner] != "@" }
|
47
|
+
end
|
48
|
+
should "qualify all owner fields" do
|
49
|
+
assert @records.all? { |r| if r[:owner] then r[:owner][-@olen, @olen] == @zone.origin else true end }
|
50
|
+
end
|
51
|
+
should "qualify all target fields" do
|
52
|
+
assert @records.all? { |r| if r[:target] then r[:target][-@olen, @olen] == @zone.origin else true end }
|
53
|
+
end
|
54
|
+
should "qualify all mbox fields" do
|
55
|
+
assert @records.all? { |r| if r[:mbox] then r[:mbox][-@olen, @olen] == @zone.origin else true end }
|
56
|
+
end
|
57
|
+
should "qualify all domain fields" do
|
58
|
+
assert @records.all? { |r| if r[:domain] then r[:domain][-@olen, @olen] == @zone.origin else true end }
|
59
|
+
end
|
60
|
+
end
|
30
61
|
end
|
31
62
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bind-zone-parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Geoff Garside
|