Sha256: 1ae8108f218ab6428fc46a26ed51f024b396285e327c54fbd3e00e764729bdcf

Contents?: true

Size: 1.35 KB

Versions: 6

Compression:

Stored size: 1.35 KB

Contents

require File.dirname(__FILE__) + '/test_helper.rb'

class RandomTest < ActiveSupport::TestCase
  def test_random_tokens_are_indeed_random
    # this might fail if you are *really* unlucky :)
    with_any_random do
      assert_not_equal Authlogic::Random.hex_token,       Authlogic::Random.hex_token
      assert_not_equal Authlogic::Random.friendly_token,  Authlogic::Random.friendly_token
    end
  end

  private
    def with_any_random(&block)
      [true, false].each {|val| with_secure_random_enabled(val, &block)}
    end

    def with_secure_random_enabled(enabled = true)
      # can't really test SecureRandom if we don't have an implementation
      return if enabled && !Authlogic::Random::SecureRandom
    
      current_sec_rand = Authlogic::Random::SecureRandom
      reload_authlogic_with_sec_random!(current_sec_rand, enabled)
  
      yield
    ensure
      reload_authlogic_with_sec_random!(current_sec_rand)
    end

    def reload_authlogic_with_sec_random!(secure_random, enabled = true)
      silence_warnings do
        secure_random.parent.const_set(secure_random.name.sub("#{secure_random.parent}::", ''), enabled ? secure_random : nil)
        load(File.dirname(__FILE__) + '/../lib/authlogic/random.rb')
      end
    end

    def silence_warnings
      old_verbose, $VERBOSE = $VERBOSE, nil
      yield
    ensure
      $VERBOSE = old_verbose
    end
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
authlogic-2.1.11 test/random_test.rb
authlogic-2.1.10 test/random_test.rb
authlogic-2.1.8 test/random_test.rb
authlogic-2.1.7 test/random_test.rb
expertiza-authlogic-2.1.6.1 test/random_test.rb
authlogic-2.1.6 test/random_test.rb