stormpath/stormpath-rails

View on GitHub
lib/stormpath/rails/env_names_warning.rb

Summary

Maintainability
A
25 mins
Test Coverage
module Stormpath
  module Rails
    module EnvNamesWarning
      TEST_ENV_VARS = {
        required: {
          STORMPATH_CLIENT_APIKEY_ID: 'The id from your Stormpath API Key',
          STORMPATH_CLIENT_APIKEY_SECRET: 'The secret from your Stormpath API Key',
          STORMPATH_APPLICATION_HREF: 'The href to your application'
        },
        deprecated: {
          STORMPATH_API_KEY_ID: 'The id from your Stormpath API Key',
          STORMPATH_API_KEY_SECRET: 'The secret from your Stormpath API Key',
          STORMPATH_APPLICATION_URL: 'The url to your application'
        }
      }.freeze

      def self.test_missing_deprecated_env_vars
        TEST_ENV_VARS[:deprecated].reject do |var, _|
          ENV[var.to_s]
        end
      end

      def self.test_missing_required_env_vars
        TEST_ENV_VARS[:required].reject do |var, _|
          ENV[var.to_s]
        end
      end

      def self.env_vars_not_set?
        !test_missing_deprecated_env_vars.empty? && !test_missing_required_env_vars.empty?
      end

      def self.check_env_variable_names
        unless Stormpath::Rails::EnvNamesWarning.test_missing_required_env_vars.empty?
          warn_message = "\n\n"
          40.times { warn_message << '*' }
          warn_message << 'STORMPATH RAILS'
          52.times { warn_message << '*' }
          warn_message << "\n\n"
          warn_message << TEST_ENV_VARS[:deprecated].map do |var, _|
            "\t#{var} is deprecated since the new version of the gem."
          end.join("\n")
          warn_message << "\n\tPlease update your environment variables to use the new names:\n"
          warn_message << "\n\t\texport STORMPATH_CLIENT_APIKEY_ID=your_api_key_id"
          warn_message << "\n\t\texport STORMPATH_CLIENT_APIKEY_SECRET=your_api_key_secret"
          warn_message << "\n\t\texport STORMPATH_APPLICATION_HREF=href_to_application\n\n"
          110.times { warn_message << '*' }
          warn "#{warn_message}\n\n" unless Stormpath::Rails::EnvNamesWarning.env_vars_not_set?
        end

        if Stormpath::Rails::EnvNamesWarning.env_vars_not_set?
          set_up_message = "In order to use the stormpath-rails gem you need to set the following environment variables:\n\t"
          set_up_message << Stormpath::Rails::EnvNamesWarning.test_missing_required_env_vars.map do |var, message|
            "#{var} : #{message}"
          end.join("\n\t")
          set_up_message << "\nBe sure to configure these before trying to run your application.\n\n"
          raise set_up_message
        end
      end
    end
  end
end