class MessageVerifierTest

Public Instance Methods

setup() click to toggle source
# File activesupport/test/message_verifier_test.rb, line 20
def setup
  @verifier = ActiveSupport::MessageVerifier.new("Hey, I'm a secret!")
  @data = { some: "data", now: Time.utc(2010) }
end
test_alternative_serialization_method() click to toggle source
# File activesupport/test/message_verifier_test.rb, line 51
def test_alternative_serialization_method
  prev = ActiveSupport.use_standard_json_time_format
  ActiveSupport.use_standard_json_time_format = true
  verifier = ActiveSupport::MessageVerifier.new("Hey, I'm a secret!", serializer: JSONSerializer.new)
  message = verifier.generate(:foo => 123, "bar" => Time.utc(2010))
  exp = { "foo" => 123, "bar" => "2010-01-01T00:00:00.000Z" }
  assert_equal exp, verifier.verified(message)
  assert_equal exp, verifier.verify(message)
ensure
  ActiveSupport.use_standard_json_time_format = prev
end
test_backward_compatibility_messages_signed_without_metadata() click to toggle source
# File activesupport/test/message_verifier_test.rb, line 89
def test_backward_compatibility_messages_signed_without_metadata
  signed_message = "BAh7BzoJc29tZUkiCWRhdGEGOgZFVDoIbm93SXU6CVRpbWUNIIAbgAAAAAAHOgtvZmZzZXRpADoJem9uZUkiCFVUQwY7BkY=--d03c52c91dfe4ccc5159417c660461bcce005e96"
  assert_equal @data, @verifier.verify(signed_message)
end
test_raise_error_when_argument_class_is_not_loaded() click to toggle source
# File activesupport/test/message_verifier_test.rb, line 63
def test_raise_error_when_argument_class_is_not_loaded
  # To generate the valid message below:
  #
  #   AutoloadClass = Struct.new(:foo)
  #   valid_message = @verifier.generate(foo: AutoloadClass.new('foo'))
  #
  valid_message = "BAh7BjoIZm9vbzonTWVzc2FnZVZlcmlmaWVyVGVzdDo6QXV0b2xvYWRDbGFzcwY6CUBmb29JIghmb28GOgZFVA==--f3ef39a5241c365083770566dc7a9eb5d6ace914"
  exception = assert_raise(ArgumentError, NameError) do
    @verifier.verified(valid_message)
  end
  assert_includes ["uninitialized constant MessageVerifierTest::AutoloadClass",
                  "undefined class/module MessageVerifierTest::AutoloadClass"], exception.message
  exception = assert_raise(ArgumentError, NameError) do
    @verifier.verify(valid_message)
  end
  assert_includes ["uninitialized constant MessageVerifierTest::AutoloadClass",
                  "undefined class/module MessageVerifierTest::AutoloadClass"], exception.message
end
test_raise_error_when_secret_is_nil() click to toggle source
# File activesupport/test/message_verifier_test.rb, line 82
def test_raise_error_when_secret_is_nil
  exception = assert_raise(ArgumentError) do
    ActiveSupport::MessageVerifier.new(nil)
  end
  assert_equal "Secret should not be nil.", exception.message
end
test_simple_round_tripping() click to toggle source
# File activesupport/test/message_verifier_test.rb, line 35
def test_simple_round_tripping
  message = @verifier.generate(@data)
  assert_equal @data, @verifier.verified(message)
  assert_equal @data, @verifier.verify(message)
end
test_valid_message() click to toggle source
# File activesupport/test/message_verifier_test.rb, line 25
def test_valid_message
  data, hash = @verifier.generate(@data).split("--")
  assert !@verifier.valid_message?(nil)
  assert !@verifier.valid_message?("")
  assert !@verifier.valid_message?("\xff") # invalid encoding
  assert !@verifier.valid_message?("#{data.reverse}--#{hash}")
  assert !@verifier.valid_message?("#{data}--#{hash.reverse}")
  assert !@verifier.valid_message?("purejunk")
end
test_verified_returns_false_on_invalid_message() click to toggle source
# File activesupport/test/message_verifier_test.rb, line 41
def test_verified_returns_false_on_invalid_message
  assert !@verifier.verified("purejunk")
end
test_verify_exception_on_invalid_message() click to toggle source
# File activesupport/test/message_verifier_test.rb, line 45
def test_verify_exception_on_invalid_message
  assert_raise(ActiveSupport::MessageVerifier::InvalidSignature) do
    @verifier.verify("purejunk")
  end
end