stevenhaddox/omniauth-dice

View on GitHub

Showing 17 of 17 total issues

Class Dice has 33 methods (exceeds 20 allowed). Consider refactoring.
Open

    class Dice
      include OmniAuth::Strategy
      attr_accessor :dn, :raw_dn, :data

      option :dnc_options, {}
Severity: Minor
Found in lib/omniauth/strategies/dice.rb - About 4 hrs to fix

    File dice.rb has 286 lines of code (exceeds 250 allowed). Consider refactoring.
    Open

    require 'faraday'
    require 'faraday_middleware'
    require 'open-uri'
    require 'omniauth'
    require 'cert_munger'
    Severity: Minor
    Found in lib/omniauth/strategies/dice.rb - About 2 hrs to fix

      Method request_phase has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
      Open

            def request_phase
              validate_required_params
              subject_dn = get_dn_by_type('subject')
              return fail!('You need a valid DN to authenticate.') unless subject_dn
              user_dn = format_dn(subject_dn)
      Severity: Minor
      Found in lib/omniauth/strategies/dice.rb - About 25 mins to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Use the return of the conditional for variable assignment and comparison.
      Open

              if type == 'issuer'
                raw_dn = headers["#{options.issuer_dn_header}"]
              else
                raw_dn = headers["#{options.subject_dn_header}"]
              end
      Severity: Minor
      Found in lib/omniauth/strategies/dice.rb by rubocop

      Prefer to_s over string interpolation.
      Open

                raw_dn = headers["#{options.subject_dn_header}"]
      Severity: Minor
      Found in lib/omniauth/strategies/dice.rb by rubocop

      This cop checks for strings that are just an interpolated expression.

      Example:

      # bad
      "#{@var}"
      
      # good
      @var.to_s
      
      # good if @var is already a String
      @var

      Use %i or %I for an array of symbols.
      Open

      task default: [:spec, :rubocop]
      Severity: Minor
      Found in Rakefile by rubocop

      This cop can check for array literals made up of symbols that are not using the %i() syntax.

      Alternatively, it checks for symbol arrays using the %i() syntax on projects which do not want to use that syntax.

      Configuration option: MinSize If set, arrays with fewer elements than this value will not trigger the cop. For example, a MinSize of3` will not enforce a style on an array of 2 or fewer elements.

      Example: EnforcedStyle: percent (default)

      # good
      %i[foo bar baz]
      
      # bad
      [:foo, :bar, :baz]

      Example: EnforcedStyle: brackets

      # good
      [:foo, :bar, :baz]
      
      # bad
      %i[foo bar baz]

      Freeze mutable objects assigned to constants.
      Open

          VERSION = '0.2.4'
      Severity: Minor
      Found in lib/omniauth/dice/version.rb by rubocop

      This cop checks whether some constant value isn't a mutable literal (e.g. array or hash).

      Example:

      # bad
      CONST = [1, 2, 3]
      
      # good
      CONST = [1, 2, 3].freeze

      URI.encode method is obsolete and should not be used. Instead, use CGI.escape, URI.encode_www_form or URI.encode_www_form_component depending on your specific use case.
      Open

              URI.encode(build_query)
      Severity: Minor
      Found in lib/omniauth/strategies/dice.rb by rubocop

      This cop identifies places where URI.escape can be replaced by CGI.escape, URI.encode_www_form or URI.encode_www_form_component depending on your specific use case. Also this cop identifies places where URI.unescape can be replaced by CGI.unescape, URI.decode_www_form or URI.decode_www_form_component depending on your specific use case.

      Example:

      # bad
      URI.escape('http://example.com')
      URI.encode('http://example.com')
      
      # good
      CGI.escape('http://example.com')
      URI.encode_www_form([['example', 'param'], ['lang', 'en']])
      URI.encode_www_form(page: 10, locale: 'en')
      URI.encode_www_form_component('http://example.com')
      
      # bad
      URI.unescape(enc_uri)
      URI.decode(enc_uri)
      
      # good
      CGI.unescape(enc_uri)
      URI.decode_www_form(enc_uri)
      URI.decode_www_form_component(enc_uri)

      Use the return of the conditional for variable assignment and comparison.
      Open

              if issuer_dn
                response = connection.get query_url, issuerDn: issuer_dn
              else
                response = connection.get query_url
              end
      Severity: Minor
      Found in lib/omniauth/strategies/dice.rb by rubocop

      Always use raise to signal exceptions.
      Open

                  fail RequiredCustomParamError, error_msg
      Severity: Minor
      Found in lib/omniauth/strategies/dice.rb by rubocop

      This cop checks for uses of fail and raise.

      Example: EnforcedStyle: only_raise (default)

      # The `only_raise` style enforces the sole use of `raise`.
      # bad
      begin
        fail
      rescue Exception
        # handle it
      end
      
      def watch_out
        fail
      rescue Exception
        # handle it
      end
      
      Kernel.fail
      
      # good
      begin
        raise
      rescue Exception
        # handle it
      end
      
      def watch_out
        raise
      rescue Exception
        # handle it
      end
      
      Kernel.raise

      Example: EnforcedStyle: only_fail

      # The `only_fail` style enforces the sole use of `fail`.
      # bad
      begin
        raise
      rescue Exception
        # handle it
      end
      
      def watch_out
        raise
      rescue Exception
        # handle it
      end
      
      Kernel.raise
      
      # good
      begin
        fail
      rescue Exception
        # handle it
      end
      
      def watch_out
        fail
      rescue Exception
        # handle it
      end
      
      Kernel.fail

      Example: EnforcedStyle: semantic

      # The `semantic` style enforces the use of `fail` to signal an
      # exception, then will use `raise` to trigger an offense after
      # it has been rescued.
      # bad
      begin
        raise
      rescue Exception
        # handle it
      end
      
      def watch_out
        # Error thrown
      rescue Exception
        fail
      end
      
      Kernel.fail
      Kernel.raise
      
      # good
      begin
        fail
      rescue Exception
        # handle it
      end
      
      def watch_out
        fail
      rescue Exception
        raise 'Preferably with descriptive message'
      end
      
      explicit_receiver.fail
      explicit_receiver.raise

      Use %i or %I for an array of symbols.
      Open

              [:cas_server, :authentication_path]
      Severity: Minor
      Found in lib/omniauth/strategies/dice.rb by rubocop

      This cop can check for array literals made up of symbols that are not using the %i() syntax.

      Alternatively, it checks for symbol arrays using the %i() syntax on projects which do not want to use that syntax.

      Configuration option: MinSize If set, arrays with fewer elements than this value will not trigger the cop. For example, a MinSize of3` will not enforce a style on an array of 2 or fewer elements.

      Example: EnforcedStyle: percent (default)

      # good
      %i[foo bar baz]
      
      # bad
      [:foo, :bar, :baz]

      Example: EnforcedStyle: brackets

      # good
      [:foo, :bar, :baz]
      
      # bad
      %i[foo bar baz]

      Use %i or %I for an array of symbols.
      Open

              [:dn, :email, :firstName, :lastName, :fullName, :citizenshipStatus,
               :country, :grantBy, :organizations, :uid, :dutyorg, :visas,
               :affiliations]
      Severity: Minor
      Found in lib/omniauth/strategies/dice.rb by rubocop

      This cop can check for array literals made up of symbols that are not using the %i() syntax.

      Alternatively, it checks for symbol arrays using the %i() syntax on projects which do not want to use that syntax.

      Configuration option: MinSize If set, arrays with fewer elements than this value will not trigger the cop. For example, a MinSize of3` will not enforce a style on an array of 2 or fewer elements.

      Example: EnforcedStyle: percent (default)

      # good
      %i[foo bar baz]
      
      # bad
      [:foo, :bar, :baz]

      Example: EnforcedStyle: brackets

      # good
      [:foo, :bar, :baz]
      
      # bad
      %i[foo bar baz]

      Convert if nested inside else to elsif.
      Open

                if options.use_callback_url == true
      Severity: Minor
      Found in lib/omniauth/strategies/dice.rb by rubocop

      If the else branch of a conditional consists solely of an if node, it can be combined with the else to become an elsif. This helps to keep the nesting level from getting too deep.

      Example:

      # bad
      if condition_a
        action_a
      else
        if condition_b
          action_b
        else
          action_c
        end
      end
      
      # good
      if condition_a
        action_a
      elsif condition_b
        action_b
      else
        action_c
      end

      Prefer to_s over string interpolation.
      Open

                raw_dn = headers["#{options.issuer_dn_header}"]
      Severity: Minor
      Found in lib/omniauth/strategies/dice.rb by rubocop

      This cop checks for strings that are just an interpolated expression.

      Example:

      # bad
      "#{@var}"
      
      # good
      @var.to_s
      
      # good if @var is already a String
      @var

      Always use raise to signal exceptions.
      Open

                          fail 'Invalid DN string type'
      Severity: Minor
      Found in lib/omniauth/strategies/dice.rb by rubocop

      This cop checks for uses of fail and raise.

      Example: EnforcedStyle: only_raise (default)

      # The `only_raise` style enforces the sole use of `raise`.
      # bad
      begin
        fail
      rescue Exception
        # handle it
      end
      
      def watch_out
        fail
      rescue Exception
        # handle it
      end
      
      Kernel.fail
      
      # good
      begin
        raise
      rescue Exception
        # handle it
      end
      
      def watch_out
        raise
      rescue Exception
        # handle it
      end
      
      Kernel.raise

      Example: EnforcedStyle: only_fail

      # The `only_fail` style enforces the sole use of `fail`.
      # bad
      begin
        raise
      rescue Exception
        # handle it
      end
      
      def watch_out
        raise
      rescue Exception
        # handle it
      end
      
      Kernel.raise
      
      # good
      begin
        fail
      rescue Exception
        # handle it
      end
      
      def watch_out
        fail
      rescue Exception
        # handle it
      end
      
      Kernel.fail

      Example: EnforcedStyle: semantic

      # The `semantic` style enforces the use of `fail` to signal an
      # exception, then will use `raise` to trigger an offense after
      # it has been rescued.
      # bad
      begin
        raise
      rescue Exception
        # handle it
      end
      
      def watch_out
        # Error thrown
      rescue Exception
        fail
      end
      
      Kernel.fail
      Kernel.raise
      
      # good
      begin
        fail
      rescue Exception
        # handle it
      end
      
      def watch_out
        fail
      rescue Exception
        raise 'Preferably with descriptive message'
      end
      
      explicit_receiver.fail
      explicit_receiver.raise

      Prefer to_s over string interpolation.
      Open

              cert_str = request.env["#{options.client_cert_header}"]
      Severity: Minor
      Found in lib/omniauth/strategies/dice.rb by rubocop

      This cop checks for strings that are just an interpolated expression.

      Example:

      # bad
      "#{@var}"
      
      # good
      @var.to_s
      
      # good if @var is already a String
      @var

      %w-literals should be delimited by [ and ].
      Open

              custom_order = %w(cn l st ou o c street dc uid)
      Severity: Minor
      Found in lib/omniauth/strategies/dice.rb by rubocop

      This cop enforces the consistent usage of %-literal delimiters.

      Specify the 'default' key to set all preferred delimiters at once. You can continue to specify individual preferred delimiters to override the default.

      Example:

      # Style/PercentLiteralDelimiters:
      #   PreferredDelimiters:
      #     default: '[]'
      #     '%i':    '()'
      
      # good
      %w[alpha beta] + %i(gamma delta)
      
      # bad
      %W(alpha #{beta})
      
      # bad
      %I(alpha beta)
      Severity
      Category
      Status
      Source
      Language