diff --git a/test/configuration_test.rb b/test/configuration_test.rb new file mode 100644 index 0000000..51b387d --- /dev/null +++ b/test/configuration_test.rb @@ -0,0 +1,45 @@ +require 'test_helper' + +class ConfigurationHelper + + test "Make sure that all of the Oauth identifier schemes are registered in the appropriate places" do + +=begin + # Devise configuration helper + # ---------------------------------------------------- + if !Devise.nil? + # Check to see what Omniauth providers were registered with Devise + # Compare them to the entries in the DB and adjust the DB records accordingly + defined = IdentifierScheme.where(active: true)#.collect{ |scheme| scheme.name } + registered = Devise.omniauth_providers + + # Deactivate any entries that are not defined in the config/initializers/devise.rb + defined.each do |scheme| + unless registered.include?(scheme.name.to_sym) + Rails.logger.info "Detected an unsupported identifier_scheme, #{scheme.name}, in the DB, deactivating the entry - if this is a mistake add it to your config/initializers/devise.rb" + scheme.update_attributes(active: false) + end + end + + # If an entry was defined in config/initializers/devise.rb but is not in the DB, add it + diff = registered.reject{ |i| defined.collect{ |d| d.name }.include?(i.to_s) } + diff.each do |scheme| + is = IdentifierScheme.find_by(name: scheme.to_s) + + if is.nil? + Rails.logger.info "Detected a new Omniauth provider in config/initializers/devise.rb that is not defined in the DB - adding #{scheme.to_s} to the identifier_schemes table. The new provider will only be available in the user's profile page. To enable it for login, please update the DB accordingly." + IdentifierScheme.create!({name: scheme.to_s, description: '', active: true, use_for_login: false}) + + else + Rails.logger.warn "Detected an Omniauth provider, #{scheme.to_s}, in config/initializers/devise.rb but it is inactive in the identifier_schemes table!" + end + end + + else + Rails.logger.error "Devise was not properly initialized! Please make sure you have defined the config/initializers/devise.rb initializer." + end +=end + + end + +end \ No newline at end of file