debian-mirror-gitlab/doorkeeper/spec/lib/doorkeeper_spec.rb
2020-01-04 02:51:38 +05:30

150 lines
4.2 KiB
Ruby

require 'spec_helper_integration'
describe Doorkeeper do
describe "#authenticate" do
let(:request) { double }
it "calls OAuth::Token#authenticate" do
token_strategies = Doorkeeper.configuration.access_token_methods
expect(Doorkeeper::OAuth::Token).to receive(:authenticate).
with(request, *token_strategies)
Doorkeeper.authenticate(request)
end
it "accepts custom token strategies" do
token_strategies = [:first_way, :second_way]
expect(Doorkeeper::OAuth::Token).to receive(:authenticate).
with(request, *token_strategies)
Doorkeeper.authenticate(request, token_strategies)
end
end
describe "#configured?" do
after do
Doorkeeper.remove_instance_variable(:@config)
end
context "@config is set" do
it "returns true" do
Doorkeeper.instance_variable_set(:@config, "hi")
expect(Doorkeeper.configured?).to eq(true)
end
end
context "@config is not set" do
it "returns false" do
Doorkeeper.instance_variable_set(:@config, nil)
expect(Doorkeeper.configured?).to eq(false)
end
end
it "is deprecated" do
expect(ActiveSupport::Deprecation).to receive(:warn).
with("Method `Doorkeeper#configured?` has been deprecated without replacement.")
Doorkeeper.configured?
end
end
describe "#database_installed?" do
before do
["AccessToken", "AccessGrant", "Application"].each do |klass|
@original_classes ||= {}
@original_classes[klass] = Doorkeeper.const_get(klass)
Doorkeeper.send(:remove_const, klass)
end
end
after do
["AccessToken", "AccessGrant", "Application"].each do |klass|
Doorkeeper.send(:remove_const, klass)
Doorkeeper.const_set(klass, @original_classes[klass])
end
end
context "all tables exist" do
before do
klass = double table_exists?: true
Doorkeeper.const_set(:AccessToken, klass)
Doorkeeper.const_set(:AccessGrant, klass)
Doorkeeper.const_set(:Application, klass)
end
it "returns true" do
expect(Doorkeeper.database_installed?).to eq(true)
end
it "is deprecated" do
expect(ActiveSupport::Deprecation).to receive(:warn).
with("Method `Doorkeeper#database_installed?` has been deprecated without replacement.")
Doorkeeper.database_installed?
end
end
context "all tables do not exist" do
before do
klass = double table_exists?: false
Doorkeeper.const_set(:AccessToken, klass)
Doorkeeper.const_set(:AccessGrant, klass)
Doorkeeper.const_set(:Application, klass)
end
it "returns false" do
expect(Doorkeeper.database_installed?).to eq(false)
end
it "is deprecated" do
expect(ActiveSupport::Deprecation).to receive(:warn).
with("Method `Doorkeeper#database_installed?` has been deprecated without replacement.")
Doorkeeper.database_installed?
end
end
end
describe "#installed?" do
context "methods return true" do
before do
allow(Doorkeeper).to receive(:configured?).and_return(true).once
allow(Doorkeeper).to receive(:database_installed?).and_return(true).once
end
it "returns true" do
expect(Doorkeeper.installed?).to eq(true)
end
end
context "methods return false" do
before do
allow(Doorkeeper).to receive(:configured?).and_return(false).once
allow(Doorkeeper).to receive(:database_installed?).and_return(false).once
end
it "returns false" do
expect(Doorkeeper.installed?).to eq(false)
end
end
it "is deprecated" do
expect(ActiveSupport::Deprecation).to receive(:warn).
with("Method `Doorkeeper#configured?` has been deprecated without replacement.")
expect(ActiveSupport::Deprecation).to receive(:warn).
with("Method `Doorkeeper#database_installed?` has been deprecated without replacement.")
expect(ActiveSupport::Deprecation).to receive(:warn).
with("Method `Doorkeeper#installed?` has been deprecated without replacement.")
Doorkeeper.installed?
end
end
end