Page Menu
Home
GRNET
Search
Configure Global Search
Log In
Files
F324404
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Mon, Nov 25, 7:58 PM
Size
2 KB
Mime Type
text/x-diff
Expires
Wed, Nov 27, 7:58 PM (1 d, 21 h)
Engine
blob
Format
Raw Data
Handle
156165
Attached To
rWEBDNS WebDNS (edet4)
View Options
diff --git a/app/models/ptr.rb b/app/models/ptr.rb
index a61dda3..5817b89 100644
--- a/app/models/ptr.rb
+++ b/app/models/ptr.rb
@@ -1,6 +1,15 @@
class PTR < Record
validates :content, presence: true, hostname: true
+ validate :no_trailing_dot
before_validation :remove_terminating_dot
+
+ def no_trailing_dot
+ # Do not allow PTR record names that end with a dot
+ return if !short.end_with?(".")
+
+ errors.add(:name, "PTR record name should not end with a dot")
+ end
+
end
diff --git a/test/models/ptr_test.rb b/test/models/ptr_test.rb
index 82ddf84..26cf87e 100644
--- a/test/models/ptr_test.rb
+++ b/test/models/ptr_test.rb
@@ -1,50 +1,62 @@
require 'test_helper'
class PTRTest < ActiveSupport::TestCase
class V4PTRTest < ActiveSupport::TestCase
setup do
@record = build(:v4_ptr)
end
test 'save' do
@record.save
assert_empty @record.errors
end
test 'guess record' do
@record.name = @record.domain.name.split(".")[0..-3].reverse.join(".") + ".1"
assert @record.save
assert_equal @record.name, "1." + @record.domain.name
end
test 'chop terminating dot' do
@record.content = 'with-dot.example.com.'
@record.save!
@record.reload
assert_equal 'with-dot.example.com', @record.content
end
+
+ test "name invalid" do
+ rec = build(:v4_ptr, name: "195.")
+ rec.valid?
+ assert_not_empty rec.errors[:name], "name '195.' should be invalid"
+ end
+
+ test "name valid" do
+ rec = build(:v4_ptr, name: "195")
+ rec.valid?
+ assert_empty rec.errors[:name], "name '195' should be valid"
+ end
end
class V6PTRTest < ActiveSupport::TestCase
setup do
@record = build(:v6_ptr)
end
test 'save' do
@record.save
assert_empty @record.errors
end
test 'guess record' do
@record.name = '2001:db' + @record.domain.name.split(".")[0] + '::2'
assert @record.save
assert_equal '2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.' + @record.domain.name,
@record.name
end
end
end
diff --git a/test/models/record_test.rb b/test/models/record_test.rb
index 1559023..e31dc90 100644
--- a/test/models/record_test.rb
+++ b/test/models/record_test.rb
@@ -1,19 +1,20 @@
require 'test_helper'
class RecordTest < ActiveSupport::TestCase
['text', -1, 0, 2_147_483_647 + 1].each { |ttl|
test "ttl invalid #{ttl}" do
rec = build(:a, ttl: ttl)
rec.valid?
assert_not_empty rec.errors[:ttl], "ttl #{ttl} should be invalid!"
end
}
['', 1, 2_147_483_647].each { |ttl|
test "ttl valid #{ttl}" do
rec = build(:a, ttl: ttl)
rec.valid?
assert_empty rec.errors[:ttl], "ttl #{ttl} should be valid!"
end
}
+
end
Event Timeline
Log In to Comment