Sha256: c60cff49f5839f0e676bec2906c4acb681b53dee6e5f47c3491c7220b768bdcb

Contents?: true

Size: 1.69 KB

Versions: 31

Compression:

Stored size: 1.69 KB

Contents

require 'spec_helper'

describe GoogleAuthenticatorRails::Session::Base do
  describe 'ClassMethods' do
    context 'thread safety' do
      let(:thread_count) { 100 }
      let(:controllers)  { thread_count.times.map { MockController.new } }
      let(:threads) do
        controllers.map do |controller|
          Thread.new do
            GoogleAuthenticatorRails::Session::Base.controller = controller
            Thread.current[:test_case_controller] = GoogleAuthenticatorRails::Session::Base.controller
          end
        end
      end

      before do
        GoogleAuthenticatorRails::Session::Base.controller = nil
        sleep(0.01) while threads.any?(&:status)
      end

      specify { GoogleAuthenticatorRails::Session::Base.controller.should be_nil }
      specify { threads.map { |thread| thread[:test_case_controller].object_id }.should eq controllers.map(&:object_id) }
    end

    describe '::activated?' do
      subject { GoogleAuthenticatorRails::Session::Base.activated? }
      before  { GoogleAuthenticatorRails::Session::Base.controller = controller }

      context 'controller present' do
        let(:controller) { MockController.new }
        it { should be true }
      end

      context 'controller missing' do
        let(:controller) { nil }
        it { should be false }
      end
    end
  end

  describe 'InstanceMethods' do
    describe '#initialize' do
      context 'controller missing' do
        before  { GoogleAuthenticatorRails::Session::Base.controller = nil }
        subject { lambda { GoogleAuthenticatorRails::Session::Base.new(nil) } }
        it      { should raise_error(GoogleAuthenticatorRails::Session::Activation::ControllerMissingError) }
      end
    end
  end
end

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
google-authenticator-rails-3.4.3 spec/session/activation_spec.rb
google-authenticator-rails-3.4.2 spec/session/activation_spec.rb
google-authenticator-rails-3.4.1 spec/session/activation_spec.rb
google-authenticator-rails-3.4.0 spec/session/activation_spec.rb
google-authenticator-rails-3.3.1 spec/session/activation_spec.rb
google-authenticator-rails-3.3.0 spec/session/activation_spec.rb
google-authenticator-rails-3.2.1 spec/session/activation_spec.rb
google-authenticator-rails-3.2.0 spec/session/activation_spec.rb
google-authenticator-rails-3.1.0 spec/session/activation_spec.rb
google-authenticator-rails-3.0.0 spec/session/activation_spec.rb
google-authenticator-rails-1.7.0 spec/session/activation_spec.rb
google-authenticator-rails-2.0.0 spec/session/activation_spec.rb
google-authenticator-rails-1.5.1 spec/session/activation_spec.rb
google-authenticator-rails-1.6.1 spec/session/activation_spec.rb
google-authenticator-rails-1.6.0 spec/session/activation_spec.rb
google-authenticator-rails-1.5.0 spec/session/activation_spec.rb
google-authenticator-rails-1.4.1 spec/session/activation_spec.rb
google-authenticator-rails-1.4.0 spec/session/activation_spec.rb
google-authenticator-rails-1.3.0 spec/session/activation_spec.rb
google-authenticator-rails-1.2.1 spec/session/activation_spec.rb