Sha256: a48154d6e53745ecdea8e482fd3d48336545534081d0c60b5db7889bf6db30f8

Contents?: true

Size: 1.4 KB

Versions: 19

Compression:

Stored size: 1.4 KB

Contents

# frozen_string_literal: true

shared_examples "an accessible token" do
  describe :accessible? do
    it "is accessible if token is not expired" do
      allow(subject).to receive(:expired?).and_return(false)
      should be_accessible
    end

    it "is not accessible if token is expired" do
      allow(subject).to receive(:expired?).and_return(true)
      should_not be_accessible
    end
  end
end

shared_examples "a revocable token" do
  describe :accessible? do
    before { subject.save! }

    it "is accessible if token is not revoked" do
      expect(subject).to be_accessible
    end

    it "is not accessible if token is revoked" do
      subject.revoke
      expect(subject).not_to be_accessible
    end
  end
end

shared_examples "a unique token" do
  describe :token do
    it "is generated before validation" do
      expect { subject.valid? }.to change { subject.token }.from(nil)
    end

    it "is not valid if token exists" do
      token1 = FactoryBot.create factory_name
      token2 = FactoryBot.create factory_name
      token2.token = token1.token
      expect(token2).not_to be_valid
    end

    it "expects database to throw an error when tokens are the same" do
      token1 = FactoryBot.create factory_name
      token2 = FactoryBot.create factory_name
      token2.token = token1.token
      expect do
        token2.save!(validate: false)
      end.to raise_error(uniqueness_error)
    end
  end
end

Version data entries

19 entries across 19 versions & 2 rubygems

Version Path
doorkeeper-5.1.2 spec/support/shared/models_shared_examples.rb
doorkeeper-5.2.6 spec/support/shared/models_shared_examples.rb
doorkeeper-5.3.3 spec/support/shared/models_shared_examples.rb
doorkeeper-5.1.1 spec/support/shared/models_shared_examples.rb
doorkeeper-5.2.5 spec/support/shared/models_shared_examples.rb
doorkeeper-5.3.2 spec/support/shared/models_shared_examples.rb
doorkeeper-sequel-2.2.0 spec/support/shared/models_shared_examples.rb
doorkeeper-5.2.4 spec/support/shared/models_shared_examples.rb
doorkeeper-5.3.1 spec/support/shared/models_shared_examples.rb
doorkeeper-5.3.0 spec/support/shared/models_shared_examples.rb
doorkeeper-5.2.3 spec/support/shared/models_shared_examples.rb
doorkeeper-5.2.2 spec/support/shared/models_shared_examples.rb
doorkeeper-sequel-2.1.0 spec/support/shared/models_shared_examples.rb
doorkeeper-5.2.1 spec/support/shared/models_shared_examples.rb
doorkeeper-5.2.0 spec/support/shared/models_shared_examples.rb
doorkeeper-5.2.0.rc3 spec/support/shared/models_shared_examples.rb
doorkeeper-5.2.0.rc2 spec/support/shared/models_shared_examples.rb
doorkeeper-5.2.0.rc1 spec/support/shared/models_shared_examples.rb
doorkeeper-5.1.0 spec/support/shared/models_shared_examples.rb