rails/activesupport/test/security_utils_test.rb
Tietew 92b8cda4c9
secure_compare: Check byte size instead of length
Match fixed_length_secure_compare's guard clause.

References #39142.
2021-04-02 12:45:29 -04:00

27 lines
956 B
Ruby

# frozen_string_literal: true
require_relative "abstract_unit"
require "active_support/security_utils"
class SecurityUtilsTest < ActiveSupport::TestCase
def test_secure_compare_should_perform_string_comparison
assert ActiveSupport::SecurityUtils.secure_compare("a", "a")
assert_not ActiveSupport::SecurityUtils.secure_compare("a", "b")
end
def test_secure_compare_return_false_on_bytesize_mismatch
assert_not ActiveSupport::SecurityUtils.secure_compare("a", "\u{ff41}")
end
def test_fixed_length_secure_compare_should_perform_string_comparison
assert ActiveSupport::SecurityUtils.fixed_length_secure_compare("a", "a")
assert_not ActiveSupport::SecurityUtils.fixed_length_secure_compare("a", "b")
end
def test_fixed_length_secure_compare_raise_on_length_mismatch
assert_raises(ArgumentError, "string length mismatch.") do
ActiveSupport::SecurityUtils.fixed_length_secure_compare("a", "ab")
end
end
end