diff --git a/CHANGELOG.md b/CHANGELOG.md index a9d96e3..82cd63e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ ## [Unreleased] +## [0.7.3] - 2025-09-12 + +- Fix hostname coercion + ## [0.7.1] - 2025-09-07 - Add password rule diff --git a/lib/mini_defender/rules/hostname.rb b/lib/mini_defender/rules/hostname.rb index 5a6c7c2..18265b9 100644 --- a/lib/mini_defender/rules/hostname.rb +++ b/lib/mini_defender/rules/hostname.rb @@ -11,7 +11,7 @@ def coerce(value) value.to_s .downcase .strip - .gsub(/.\z/, '') + .gsub(/\.\z/, '') end def passes?(attribute, value, validator) diff --git a/lib/mini_defender/version.rb b/lib/mini_defender/version.rb index ef6f2c6..cfc26d9 100644 --- a/lib/mini_defender/version.rb +++ b/lib/mini_defender/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module MiniDefender - VERSION = "0.7.2" + VERSION = "0.7.3" end diff --git a/test/rules/hostname_test.rb b/test/rules/hostname_test.rb index b52e6e8..3657f9e 100644 --- a/test/rules/hostname_test.rb +++ b/test/rules/hostname_test.rb @@ -2,7 +2,7 @@ require 'test_helper' -class PasswordTest < Minitest::Test +class HostnameTest < Minitest::Test def setup @rule = MiniDefender::Rules::Hostname.new end @@ -15,8 +15,13 @@ def test_pass_for_trailing_dot assert(@rule.passes?('hostname', 'www.example.com.', nil)) end - def test_must_remove_trailing_dot - assert(@rule.coerce('www.example.com')) + def test_must_coerce_valid_host + host = 'www.example.com' + assert_equal(@rule.coerce(host), host) + end + + def test_must_coerce_remove_trailing_dot + assert_equal(@rule.coerce('www.example.com.'), 'www.example.com') end def test_fail_for_non_ascii