diff --git a/CHANGELOG.md b/CHANGELOG.md index 51502e52..31681869 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ # Changelog ## HEAD +* Fix provider instantiation for plural provider names (eg. okta) [#305](https://github.com/Sorcery/sorcery/pull/305) + ## 0.16.2 * Inline core migration index definition [#281](https://github.com/Sorcery/sorcery/pull/281) diff --git a/lib/sorcery/controller/submodules/external.rb b/lib/sorcery/controller/submodules/external.rb index 07114572..4818344a 100644 --- a/lib/sorcery/controller/submodules/external.rb +++ b/lib/sorcery/controller/submodules/external.rb @@ -40,7 +40,7 @@ def external_providers=(providers) providers.each do |name| class_eval <<-RUBY, __FILE__, __LINE__ + 1 def self.#{name} - @#{name} ||= Sorcery::Providers.const_get('#{name}'.to_s.classify).new + @#{name} ||= Sorcery::Providers.const_get('#{name}'.to_s.camelcase).new end RUBY end diff --git a/spec/providers/examples_spec.rb b/spec/providers/examples_spec.rb new file mode 100644 index 00000000..1f2d5e83 --- /dev/null +++ b/spec/providers/examples_spec.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +require 'spec_helper' +require 'sorcery/providers/base' + +describe Sorcery::Providers::Examples do + before(:all) do + sorcery_reload!([:external]) + sorcery_controller_property_set(:external_providers, [:examples]) + end + + context 'fetching a plural custom provider' do + it 'returns the provider' do + expect(Sorcery::Controller::Config.examples).to be_a(Sorcery::Providers::Examples) + end + end +end diff --git a/spec/support/providers/examples.rb b/spec/support/providers/examples.rb new file mode 100644 index 00000000..650f3d26 --- /dev/null +++ b/spec/support/providers/examples.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +require 'sorcery/providers/base' + +module Sorcery + module Providers + class Examples < Base + include Protocols::Oauth2 + end + end +end