From 6815c908fece6697c1d0db13cadacc5cafb95698 Mon Sep 17 00:00:00 2001 From: Neil Matatall <448516+oreoshake@users.noreply.github.com> Date: Thu, 20 Feb 2020 14:09:57 -1000 Subject: [PATCH 01/10] remove travis badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cf0c181..603aca1 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Build Status](https://travis-ci.org/github/darrrr.svg?branch=master)](https://travis-ci.org/github/darrrr) [![Code Climate](https://codeclimate.com/github/github/darrrr/badges/gpa.svg)](https://codeclimate.com/github/github/darrrr) +[![Code Climate](https://codeclimate.com/github/github/darrrr/badges/gpa.svg)](https://codeclimate.com/github/github/darrrr) The Delegated Account Recovery Rigid Reusable Ruby (aka D.a.r.r.r.r. or "Darrrr") library is meant to be used as the fully-complete plumbing in your Rack application when implementing the [Delegated Account Recovery specification](https://github.com/facebook/DelegatedRecoverySpecification). This library is currently used for the implementation at [GitHub](https://githubengineering.com/recover-accounts-elsewhere/). From 8d94585de5ff16ac53f81221a530bca29f14b8a4 Mon Sep 17 00:00:00 2001 From: Neil Matatall <448516+oreoshake@users.noreply.github.com> Date: Thu, 20 Feb 2020 14:10:55 -1000 Subject: [PATCH 02/10] Bundler audit requires a lockfile --- .codeclimate.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.codeclimate.yml b/.codeclimate.yml index 9e9e2d2..59834ef 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -1,7 +1,7 @@ --- engines: bundler-audit: - enabled: true + enabled: false csslint: enabled: false duplication: From e95b06c095cc41fadd93c5a5c1dda0b16d015077 Mon Sep 17 00:00:00 2001 From: Neil Matatall Date: Thu, 20 Feb 2020 14:14:23 -1000 Subject: [PATCH 03/10] reconfigure rubocop --- .github/workflows/build.yml | 1 + .rubocop.yml | 1160 +---------------------------------- Gemfile | 3 + db/schema.rb | 10 +- 4 files changed, 13 insertions(+), 1161 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 55d75b2..5c7f2db 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -27,3 +27,4 @@ jobs: bundle exec rake db:schema:load bundle exec rake db:migrate bundle exec rspec spec + bundle exec rubocop diff --git a/.rubocop.yml b/.rubocop.yml index 88c3728..938b22d 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,1156 +1,4 @@ -AllCops: - DisabledByDefault: true - -#################### Lint ################################ - -Lint/AmbiguousOperator: - Description: >- - Checks for ambiguous operators in the first argument of a - method invocation without parentheses. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#parens-as-args' - Enabled: true - -Lint/AmbiguousRegexpLiteral: - Description: >- - Checks for ambiguous regexp literals in the first argument of - a method invocation without parenthesis. - Enabled: true - -Lint/AssignmentInCondition: - Description: "Don't use assignment in conditions." - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#safe-assignment-in-condition' - Enabled: true - -Lint/BlockAlignment: - Description: 'Align block ends correctly.' - Enabled: true - -Lint/CircularArgumentReference: - Description: "Don't refer to the keyword argument in the default value." - Enabled: true - -Lint/ConditionPosition: - Description: >- - Checks for condition placed in a confusing position relative to - the keyword. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#same-line-condition' - Enabled: true - -Lint/Debugger: - Description: 'Check for debugger calls.' - Enabled: true - -Lint/DefEndAlignment: - Description: 'Align ends corresponding to defs correctly.' - Enabled: true - -Lint/DeprecatedClassMethods: - Description: 'Check for deprecated class method calls.' - Enabled: true - -Lint/DuplicateMethods: - Description: 'Check for duplicate methods calls.' - Enabled: true - -Lint/EachWithObjectArgument: - Description: 'Check for immutable argument given to each_with_object.' - Enabled: true - -Lint/ElseLayout: - Description: 'Check for odd code arrangement in an else block.' - Enabled: true - -Lint/EmptyEnsure: - Description: 'Checks for empty ensure block.' - Enabled: true - -Lint/EmptyInterpolation: - Description: 'Checks for empty string interpolation.' - Enabled: true - -Lint/EndAlignment: - Description: 'Align ends correctly.' - Enabled: true - -Lint/EndInMethod: - Description: 'END blocks should not be placed inside method definitions.' - Enabled: true - -Lint/EnsureReturn: - Description: 'Do not use return in an ensure block.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-return-ensure' - Enabled: true - -Lint/Eval: - Description: 'The use of eval represents a serious security risk.' - Enabled: true - -Lint/FormatParameterMismatch: - Description: 'The number of parameters to format/sprint must match the fields.' - Enabled: true - -Lint/HandleExceptions: - Description: "Don't suppress exception." - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#dont-hide-exceptions' - Enabled: true - -Lint/InvalidCharacterLiteral: - Description: >- - Checks for invalid character literals with a non-escaped - whitespace character. - Enabled: true - -Lint/LiteralInCondition: - Description: 'Checks of literals used in conditions.' - Enabled: true - -Lint/LiteralInInterpolation: - Description: 'Checks for literals used in interpolation.' - Enabled: true - -Lint/Loop: - Description: >- - Use Kernel#loop with break rather than begin/end/until or - begin/end/while for post-loop tests. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#loop-with-break' - Enabled: true - -Lint/NestedMethodDefinition: - Description: 'Do not use nested method definitions.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-nested-methods' - Enabled: true - -Lint/NonLocalExitFromIterator: - Description: 'Do not use return in iterator to cause non-local exit.' - Enabled: true - -Lint/ParenthesesAsGroupedExpression: - Description: >- - Checks for method calls with a space before the opening - parenthesis. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#parens-no-spaces' - Enabled: true - -Lint/RequireParentheses: - Description: >- - Use parentheses in the method call to avoid confusion - about precedence. - Enabled: true - -Lint/RescueException: - Description: 'Avoid rescuing the Exception class.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-blind-rescues' - Enabled: true - -Lint/ShadowingOuterLocalVariable: - Description: >- - Do not use the same name as outer local variable - for block arguments or block local variables. - Enabled: true - -Lint/StringConversionInInterpolation: - Description: 'Checks for Object#to_s usage in string interpolation.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-to-s' - Enabled: true - -Lint/UnderscorePrefixedVariableName: - Description: 'Do not use prefix `_` for a variable that is used.' - Enabled: true - -Lint/UnneededDisable: - Description: >- - Checks for rubocop:disable comments that can be removed. - Note: this cop is not disabled when disabling all cops. - It must be explicitly disabled. - Enabled: true - -Lint/UnusedBlockArgument: - Description: 'Checks for unused block arguments.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#underscore-unused-vars' - Enabled: true - -Lint/UnusedMethodArgument: - Description: 'Checks for unused method arguments.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#underscore-unused-vars' - Enabled: true - -Lint/UnreachableCode: - Description: 'Unreachable code.' - Enabled: true - -Lint/UselessAccessModifier: - Description: 'Checks for useless access modifiers.' - Enabled: true - -Lint/UselessAssignment: - Description: 'Checks for useless assignment to a local variable.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#underscore-unused-vars' - Enabled: true - -Lint/UselessComparison: - Description: 'Checks for comparison of something with itself.' - Enabled: true - -Lint/UselessElseWithoutRescue: - Description: 'Checks for useless `else` in `begin..end` without `rescue`.' - Enabled: true - -Lint/UselessSetterCall: - Description: 'Checks for useless setter call to a local variable.' - Enabled: true - -Lint/Void: - Description: 'Possible use of operator/literal/variable in void context.' - Enabled: true - -###################### Metrics #################################### - -Metrics/AbcSize: - Description: >- - A calculated magnitude based on number of assignments, - branches, and conditions. - Reference: 'http://c2.com/cgi/wiki?AbcMetric' - Enabled: false - Max: 20 - -Metrics/BlockNesting: - Description: 'Avoid excessive block nesting' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#three-is-the-number-thou-shalt-count' - Enabled: true - Max: 4 - -Metrics/ClassLength: - Description: 'Avoid classes longer than 250 lines of code.' - Enabled: true - Max: 250 - -Metrics/CyclomaticComplexity: - Description: >- - A complexity metric that is strongly correlated to the number - of test cases needed to validate a method. - Enabled: true - -Metrics/LineLength: - Description: 'Limit lines to 80 characters.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#80-character-limits' - Enabled: false - -Metrics/MethodLength: - Description: 'Avoid methods longer than 30 lines of code.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#short-methods' - Enabled: true - Max: 30 - -Metrics/ModuleLength: - Description: 'Avoid modules longer than 250 lines of code.' - Enabled: true - Max: 250 - -Metrics/ParameterLists: - Description: 'Avoid parameter lists longer than three or four parameters.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#too-many-params' - Enabled: true - -Metrics/PerceivedComplexity: - Description: >- - A complexity metric geared towards measuring complexity for a - human reader. - Enabled: false - -##################### Performance ############################# - -Performance/Count: - Description: >- - Use `count` instead of `select...size`, `reject...size`, - `select...count`, `reject...count`, `select...length`, - and `reject...length`. - Enabled: true - -Performance/Detect: - Description: >- - Use `detect` instead of `select.first`, `find_all.first`, - `select.last`, and `find_all.last`. - Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerabledetect-vs-enumerableselectfirst-code' - Enabled: true - -Performance/FlatMap: - Description: >- - Use `Enumerable#flat_map` - instead of `Enumerable#map...Array#flatten(1)` - or `Enumberable#collect..Array#flatten(1)` - Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerablemaparrayflatten-vs-enumerableflat_map-code' - Enabled: true - EnabledForFlattenWithoutParams: false - # If enabled, this cop will warn about usages of - # `flatten` being called without any parameters. - # This can be dangerous since `flat_map` will only flatten 1 level, and - # `flatten` without any parameters can flatten multiple levels. - -Performance/ReverseEach: - Description: 'Use `reverse_each` instead of `reverse.each`.' - Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerablereverseeach-vs-enumerablereverse_each-code' - Enabled: true - -Performance/Sample: - Description: >- - Use `sample` instead of `shuffle.first`, - `shuffle.last`, and `shuffle[Fixnum]`. - Reference: 'https://github.com/JuanitoFatas/fast-ruby#arrayshufflefirst-vs-arraysample-code' - Enabled: true - -Performance/Size: - Description: >- - Use `size` instead of `count` for counting - the number of elements in `Array` and `Hash`. - Reference: 'https://github.com/JuanitoFatas/fast-ruby#arraycount-vs-arraysize-code' - Enabled: true - -Performance/StringReplacement: - Description: >- - Use `tr` instead of `gsub` when you are replacing the same - number of characters. Use `delete` instead of `gsub` when - you are deleting characters. - Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringgsub-vs-stringtr-code' - Enabled: true - -##################### Rails ################################## - -Rails/ActionFilter: - Description: 'Enforces consistent use of action filter methods.' - Enabled: false - -Rails/Date: - Description: >- - Checks the correct usage of date aware methods, - such as Date.today, Date.current etc. - Enabled: false - -Rails/Delegate: - Description: 'Prefer delegate method for delegations.' - Enabled: false - -Rails/FindBy: - Description: 'Prefer find_by over where.first.' - Enabled: false - -Rails/FindEach: - Description: 'Prefer all.find_each over all.find.' - Enabled: false - -Rails/HasAndBelongsToMany: - Description: 'Prefer has_many :through to has_and_belongs_to_many.' - Enabled: false - -Rails/Output: - Description: 'Checks for calls to puts, print, etc.' - Enabled: false - -Rails/ReadWriteAttribute: - Description: >- - Checks for read_attribute(:attr) and - write_attribute(:attr, val). - Enabled: false - -Rails/ScopeArgs: - Description: 'Checks the arguments of ActiveRecord scopes.' - Enabled: false - -Rails/TimeZone: - Description: 'Checks the correct usage of time zone aware methods.' - StyleGuide: 'https://github.com/bbatsov/rails-style-guide#time' - Reference: 'http://danilenko.org/2012/7/6/rails_timezones' - Enabled: false - -Rails/Validation: - Description: 'Use validates :attribute, hash of validations.' - Enabled: false - -################## Style ################################# - -Style/AccessModifierIndentation: - Description: Check indentation of private/protected visibility modifiers. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#indent-public-private-protected' - Enabled: false - -Style/AccessorMethodName: - Description: Check the naming of accessor methods for get_/set_. - Enabled: false - -Style/Alias: - Description: 'Use alias_method instead of alias.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#alias-method' - Enabled: false - -Style/AlignArray: - Description: >- - Align the elements of an array literal if they span more than - one line. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#align-multiline-arrays' - Enabled: false - -Style/AlignHash: - Description: >- - Align the elements of a hash literal if they span more than - one line. - Enabled: false - -Style/AlignParameters: - Description: >- - Align the parameters of a method call if they span more - than one line. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-double-indent' - Enabled: false - -Style/AndOr: - Description: 'Use &&/|| instead of and/or.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-and-or-or' - Enabled: false - -Style/ArrayJoin: - Description: 'Use Array#join instead of Array#*.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#array-join' - Enabled: false - -Style/AsciiComments: - Description: 'Use only ascii symbols in comments.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#english-comments' - Enabled: false - -Style/AsciiIdentifiers: - Description: 'Use only ascii symbols in identifiers.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#english-identifiers' - Enabled: false - -Style/Attr: - Description: 'Checks for uses of Module#attr.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#attr' - Enabled: false - -Style/BeginBlock: - Description: 'Avoid the use of BEGIN blocks.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-BEGIN-blocks' - Enabled: false - -Style/BarePercentLiterals: - Description: 'Checks if usage of %() or %Q() matches configuration.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#percent-q-shorthand' - Enabled: false - -Style/BlockComments: - Description: 'Do not use block comments.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-block-comments' - Enabled: false - -Style/BlockEndNewline: - Description: 'Put end statement of multiline block on its own line.' - Enabled: false - -Style/BlockDelimiters: - Description: >- - Avoid using {...} for multi-line blocks (multiline chaining is - always ugly). - Prefer {...} over do...end for single-line blocks. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#single-line-blocks' - Enabled: false - -Style/BracesAroundHashParameters: - Description: 'Enforce braces style around hash parameters.' - Enabled: false - -Style/CaseEquality: - Description: 'Avoid explicit use of the case equality operator(===).' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-case-equality' - Enabled: false - -Style/CaseIndentation: - Description: 'Indentation of when in a case/when/[else/]end.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#indent-when-to-case' - Enabled: false - -Style/CharacterLiteral: - Description: 'Checks for uses of character literals.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-character-literals' - Enabled: false - -Style/ClassAndModuleCamelCase: - Description: 'Use CamelCase for classes and modules.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#camelcase-classes' - Enabled: false - -Style/ClassAndModuleChildren: - Description: 'Checks style of children classes and modules.' - Enabled: false - -Style/ClassCheck: - Description: 'Enforces consistent use of `Object#is_a?` or `Object#kind_of?`.' - Enabled: false - -Style/ClassMethods: - Description: 'Use self when defining module/class methods.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#def-self-class-methods' - Enabled: false - -Style/ClassVars: - Description: 'Avoid the use of class variables.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-class-vars' - Enabled: false - -Style/ClosingParenthesisIndentation: - Description: 'Checks the indentation of hanging closing parentheses.' - Enabled: false - -Style/ColonMethodCall: - Description: 'Do not use :: for method call.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#double-colons' - Enabled: false - -Style/CommandLiteral: - Description: 'Use `` or %x around command literals.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#percent-x' - Enabled: false - -Style/CommentAnnotation: - Description: 'Checks formatting of annotation comments.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#annotate-keywords' - Enabled: false - -Style/CommentIndentation: - Description: 'Indentation of comments.' - Enabled: false - -Style/ConstantName: - Description: 'Constants should use SCREAMING_SNAKE_CASE.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#screaming-snake-case' - Enabled: false - -Style/DefWithParentheses: - Description: 'Use def with parentheses when there are arguments.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#method-parens' - Enabled: false - -Style/PreferredHashMethods: - Description: 'Checks for use of deprecated Hash methods.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#hash-key' - Enabled: false - -Style/Documentation: - Description: 'Document classes and non-namespace modules.' - Enabled: false - -Style/DotPosition: - Description: 'Checks the position of the dot in multi-line method calls.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#consistent-multi-line-chains' - Enabled: false - -Style/DoubleNegation: - Description: 'Checks for uses of double negation (!!).' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-bang-bang' - Enabled: false - -Style/EachWithObject: - Description: 'Prefer `each_with_object` over `inject` or `reduce`.' - Enabled: false - -Style/ElseAlignment: - Description: 'Align elses and elsifs correctly.' - Enabled: false - -Style/EmptyElse: - Description: 'Avoid empty else-clauses.' - Enabled: false - -Style/EmptyLineBetweenDefs: - Description: 'Use empty lines between defs.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#empty-lines-between-methods' - Enabled: false - -Style/EmptyLines: - Description: "Don't use several empty lines in a row." - Enabled: false - -Style/EmptyLinesAroundAccessModifier: - Description: "Keep blank lines around access modifiers." - Enabled: false - -Style/EmptyLinesAroundBlockBody: - Description: "Keeps track of empty lines around block bodies." - Enabled: false - -Style/EmptyLinesAroundClassBody: - Description: "Keeps track of empty lines around class bodies." - Enabled: false - -Style/EmptyLinesAroundModuleBody: - Description: "Keeps track of empty lines around module bodies." - Enabled: false - -Style/EmptyLinesAroundMethodBody: - Description: "Keeps track of empty lines around method bodies." - Enabled: false - -Style/EmptyLiteral: - Description: 'Prefer literals to Array.new/Hash.new/String.new.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#literal-array-hash' - Enabled: false - -Style/EndBlock: - Description: 'Avoid the use of END blocks.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-END-blocks' - Enabled: false - -Style/EndOfLine: - Description: 'Use Unix-style line endings.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#crlf' - Enabled: false - -Style/EvenOdd: - Description: 'Favor the use of Fixnum#even? && Fixnum#odd?' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#predicate-methods' - Enabled: false - -Style/ExtraSpacing: - Description: 'Do not use unnecessary spacing.' - Enabled: false - -Style/FileName: - Description: 'Use snake_case for source file names.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#snake-case-files' - Enabled: false - -Style/InitialIndentation: - Description: >- - Checks the indentation of the first non-blank non-comment line in a file. - Enabled: false - -Style/FirstParameterIndentation: - Description: 'Checks the indentation of the first parameter in a method call.' - Enabled: false - -Style/FlipFlop: - Description: 'Checks for flip flops' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-flip-flops' - Enabled: false - -Style/For: - Description: 'Checks use of for or each in multiline loops.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-for-loops' - Enabled: false - -Style/FormatString: - Description: 'Enforce the use of Kernel#sprintf, Kernel#format or String#%.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#sprintf' - Enabled: false - -Style/GlobalVars: - Description: 'Do not introduce global variables.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#instance-vars' - Reference: 'http://www.zenspider.com/Languages/Ruby/QuickRef.html' - Enabled: false - -Style/GuardClause: - Description: 'Check for conditionals that can be replaced with guard clauses' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals' - Enabled: false - -Style/HashSyntax: - Description: >- - Prefer Ruby 1.9 hash syntax { a: 1, b: 2 } over 1.8 syntax - { :a => 1, :b => 2 }. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#hash-literals' - Enabled: false - -Style/IfUnlessModifier: - Description: >- - Favor modifier if/unless usage when you have a - single-line body. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#if-as-a-modifier' - Enabled: false - -Style/IfWithSemicolon: - Description: 'Do not use if x; .... Use the ternary operator instead.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-semicolon-ifs' - Enabled: false - -Style/IndentationConsistency: - Description: 'Keep indentation straight.' - Enabled: false - -Style/IndentationWidth: - Description: 'Use 2 spaces for indentation.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#spaces-indentation' - Enabled: false - -Style/IndentArray: - Description: >- - Checks the indentation of the first element in an array - literal. - Enabled: false - -Style/IndentHash: - Description: 'Checks the indentation of the first key in a hash literal.' - Enabled: false - -Style/InfiniteLoop: - Description: 'Use Kernel#loop for infinite loops.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#infinite-loop' - Enabled: false - -Style/Lambda: - Description: 'Use the new lambda literal syntax for single-line blocks.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#lambda-multi-line' - Enabled: false - -Style/LambdaCall: - Description: 'Use lambda.call(...) instead of lambda.(...).' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#proc-call' - Enabled: false - -Style/LeadingCommentSpace: - Description: 'Comments should start with a space.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#hash-space' - Enabled: false - -Style/LineEndConcatenation: - Description: >- - Use \ instead of + or << to concatenate two string literals at - line end. - Enabled: false - -Style/MethodCallParentheses: - Description: 'Do not use parentheses for method calls with no arguments.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-args-no-parens' - Enabled: false - -Style/MethodDefParentheses: - Description: >- - Checks if the method definitions have or don't have - parentheses. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#method-parens' - Enabled: false - -Style/MethodName: - Description: 'Use the configured style when naming methods.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#snake-case-symbols-methods-vars' - Enabled: false - -Style/ModuleFunction: - Description: 'Checks for usage of `extend self` in modules.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#module-function' - Enabled: false - -Style/MultilineBlockChain: - Description: 'Avoid multi-line chains of blocks.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#single-line-blocks' - Enabled: false - -Style/MultilineBlockLayout: - Description: 'Ensures newlines after multiline block do statements.' - Enabled: false - -Style/MultilineIfThen: - Description: 'Do not use then for multi-line if/unless.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-then' - Enabled: false - -Style/MultilineOperationIndentation: - Description: >- - Checks indentation of binary operations that span more than - one line. - Enabled: false - -Style/MultilineTernaryOperator: - Description: >- - Avoid multi-line ?: (the ternary operator); - use if/unless instead. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-multiline-ternary' - Enabled: false - -Style/NegatedIf: - Description: >- - Favor unless over if for negative conditions - (or control flow or). - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#unless-for-negatives' - Enabled: false - -Style/NegatedWhile: - Description: 'Favor until over while for negative conditions.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#until-for-negatives' - Enabled: false - -Style/NestedTernaryOperator: - Description: 'Use one expression per branch in a ternary operator.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-nested-ternary' - Enabled: false - -Style/Next: - Description: 'Use `next` to skip iteration instead of a condition at the end.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals' - Enabled: false - -Style/NilComparison: - Description: 'Prefer x.nil? to x == nil.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#predicate-methods' - Enabled: false - -Style/NonNilCheck: - Description: 'Checks for redundant nil checks.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-non-nil-checks' - Enabled: false - -Style/Not: - Description: 'Use ! instead of not.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#bang-not-not' - Enabled: false - -Style/NumericLiterals: - Description: >- - Add underscores to large numeric literals to improve their - readability. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#underscores-in-numerics' - Enabled: false - -Style/OneLineConditional: - Description: >- - Favor the ternary operator(?:) over - if/then/else/end constructs. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#ternary-operator' - Enabled: false - -Style/OpMethod: - Description: 'When defining binary operators, name the argument other.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#other-arg' - Enabled: false - -Style/OptionalArguments: - Description: >- - Checks for optional arguments that do not appear at the end - of the argument list - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#optional-arguments' - Enabled: false - -Style/ParallelAssignment: - Description: >- - Check for simple usages of parallel assignment. - It will only warn when the number of variables - matches on both sides of the assignment. - This also provides performance benefits - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#parallel-assignment' - Enabled: false - -Style/ParenthesesAroundCondition: - Description: >- - Don't use parentheses around the condition of an - if/unless/while. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-parens-if' - Enabled: false - -Style/PercentLiteralDelimiters: - Description: 'Use `%`-literal delimiters consistently' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#percent-literal-braces' - Enabled: false - -Style/PercentQLiterals: - Description: 'Checks if uses of %Q/%q match the configured preference.' - Enabled: false - -Style/PerlBackrefs: - Description: 'Avoid Perl-style regex back references.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-perl-regexp-last-matchers' - Enabled: false - -Style/PredicateName: - Description: 'Check the names of predicate methods.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#bool-methods-qmark' - Enabled: false - -Style/Proc: - Description: 'Use proc instead of Proc.new.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#proc' - Enabled: false - -Style/RaiseArgs: - Description: 'Checks the arguments passed to raise/fail.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#exception-class-messages' - Enabled: false - -Style/RedundantBegin: - Description: "Don't use begin blocks when they are not needed." - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#begin-implicit' - Enabled: false - -Style/RedundantException: - Description: "Checks for an obsolete RuntimeException argument in raise/fail." - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-explicit-runtimeerror' - Enabled: false - -Style/RedundantReturn: - Description: "Don't use return where it's not required." - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-explicit-return' - Enabled: false - -Style/RedundantSelf: - Description: "Don't use self where it's not needed." - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-self-unless-required' - Enabled: false - -Style/RegexpLiteral: - Description: 'Use / or %r around regular expressions.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#percent-r' - Enabled: false - -Style/RescueEnsureAlignment: - Description: 'Align rescues and ensures correctly.' - Enabled: false - -Style/RescueModifier: - Description: 'Avoid using rescue in its modifier form.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-rescue-modifiers' - Enabled: false - -Style/SelfAssignment: - Description: >- - Checks for places where self-assignment shorthand should have - been used. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#self-assignment' - Enabled: false - -Style/Semicolon: - Description: "Don't use semicolons to terminate expressions." - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-semicolon' - Enabled: false - -Style/SignalException: - Description: 'Checks for proper usage of fail and raise.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#fail-method' - Enabled: false - -Style/SingleLineBlockParams: - Description: 'Enforces the names of some block params.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#reduce-blocks' - Enabled: false - -Style/SingleLineMethods: - Description: 'Avoid single-line methods.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-single-line-methods' - Enabled: false - -Style/SpaceBeforeFirstArg: - Description: >- - Checks that exactly one space is used between a method name - and the first argument for method calls without parentheses. - Enabled: true - -Style/SpaceAfterColon: - Description: 'Use spaces after colons.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#spaces-operators' - Enabled: false - -Style/SpaceAfterComma: - Description: 'Use spaces after commas.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#spaces-operators' - Enabled: false - -Style/SpaceAroundKeyword: - Description: 'Use spaces around keywords.' - Enabled: false - -Style/SpaceAfterMethodName: - Description: >- - Do not put a space between a method name and the opening - parenthesis in a method definition. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#parens-no-spaces' - Enabled: false - -Style/SpaceAfterNot: - Description: Tracks redundant space after the ! operator. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-space-bang' - Enabled: false - -Style/SpaceAfterSemicolon: - Description: 'Use spaces after semicolons.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#spaces-operators' - Enabled: false - -Style/SpaceBeforeBlockBraces: - Description: >- - Checks that the left block brace has or doesn't have space - before it. - Enabled: false - -Style/SpaceBeforeComma: - Description: 'No spaces before commas.' - Enabled: false - -Style/SpaceBeforeComment: - Description: >- - Checks for missing space between code and a comment on the - same line. - Enabled: false - -Style/SpaceBeforeSemicolon: - Description: 'No spaces before semicolons.' - Enabled: false - -Style/SpaceInsideBlockBraces: - Description: >- - Checks that block braces have or don't have surrounding space. - For blocks taking parameters, checks that the left brace has - or doesn't have trailing space. - Enabled: false - -Style/SpaceAroundBlockParameters: - Description: 'Checks the spacing inside and after block parameters pipes.' - Enabled: false - -Style/SpaceAroundEqualsInParameterDefault: - Description: >- - Checks that the equals signs in parameter default assignments - have or don't have surrounding space depending on - configuration. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#spaces-around-equals' - Enabled: false - -Style/SpaceAroundOperators: - Description: 'Use a single space around operators.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#spaces-operators' - Enabled: false - -Style/SpaceInsideBrackets: - Description: 'No spaces after [ or before ].' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-spaces-braces' - Enabled: false - -Style/SpaceInsideHashLiteralBraces: - Description: "Use spaces inside hash literal braces - or don't." - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#spaces-operators' - Enabled: false - -Style/SpaceInsideParens: - Description: 'No spaces after ( or before ).' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-spaces-braces' - Enabled: false - -Style/SpaceInsideRangeLiteral: - Description: 'No spaces inside range literals.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-space-inside-range-literals' - Enabled: false - -Style/SpaceInsideStringInterpolation: - Description: 'Checks for padding/surrounding spaces inside string interpolation.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#string-interpolation' - Enabled: false - -Style/SpecialGlobalVars: - Description: 'Avoid Perl-style global variables.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-cryptic-perlisms' - Enabled: false - -Style/StringLiterals: - Description: 'Checks if uses of quotes match the configured preference.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#consistent-string-literals' - Enabled: false - -Style/StringLiteralsInInterpolation: - Description: >- - Checks if uses of quotes inside expressions in interpolated - strings match the configured preference. - Enabled: false - -Style/StructInheritance: - Description: 'Checks for inheritance from Struct.new.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-extend-struct-new' - Enabled: false - -Style/SymbolLiteral: - Description: 'Use plain symbols instead of string symbols when possible.' - Enabled: false - -Style/SymbolProc: - Description: 'Use symbols as procs instead of blocks when possible.' - Enabled: false - -Style/Tab: - Description: 'No hard tabs.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#spaces-indentation' - Enabled: false - -Style/TrailingBlankLines: - Description: 'Checks trailing blank lines and final newline.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#newline-eof' - Enabled: false - -Style/TrailingCommaInArguments: - Description: 'Checks for trailing comma in parameter lists.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-trailing-params-comma' - Enabled: false - -Style/TrailingCommaInLiteral: - Description: 'Checks for trailing comma in literals.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-trailing-array-commas' - Enabled: false - -Style/TrailingWhitespace: - Description: 'Avoid trailing whitespace.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-trailing-whitespace' - Enabled: false - -Style/TrivialAccessors: - Description: 'Prefer attr_* methods to trivial readers/writers.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#attr_family' - Enabled: false - -Style/UnlessElse: - Description: >- - Do not use unless with else. Rewrite these with the positive - case first. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-else-with-unless' - Enabled: false - -Style/UnneededCapitalW: - Description: 'Checks for %W when interpolation is not needed.' - Enabled: false - -Style/UnneededPercentQ: - Description: 'Checks for %q/%Q when single quotes or double quotes would do.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#percent-q' - Enabled: false - -Style/TrailingUnderscoreVariable: - Description: >- - Checks for the usage of unneeded trailing underscores at the - end of parallel variable assignment. - Enabled: false - -Style/VariableInterpolation: - Description: >- - Don't interpolate global, instance and class variables - directly in strings. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#curlies-interpolate' - Enabled: false - -Style/VariableName: - Description: 'Use the configured style when naming variables.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#snake-case-symbols-methods-vars' - Enabled: false - -Style/WhenThen: - Description: 'Use when x then ... for one-line cases.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#one-line-cases' - Enabled: false - -Style/WhileUntilDo: - Description: 'Checks for redundant do after while or until.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-multiline-while-do' - Enabled: false - -Style/WhileUntilModifier: - Description: >- - Favor modifier while/until usage when you have a - single-line body. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#while-as-a-modifier' - Enabled: false - -Style/WordArray: - Description: 'Use %w or %W for arrays of words.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#percent-w' - Enabled: false +inherit_gem: + rubocop-github: + - config/default.yml +require: rubocop-performance diff --git a/Gemfile b/Gemfile index 9b7a94f..ddbf801 100644 --- a/Gemfile +++ b/Gemfile @@ -17,6 +17,9 @@ group :development do end group :test do + gem "rubocop", "< 0.68" + gem "rubocop-github" + gem "rubocop-performance" gem "mechanize" gem "watir" gem "vcr" diff --git a/db/schema.rb b/db/schema.rb index 64ab106..bd52be5 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -2,11 +2,11 @@ # of editing this file, please use the migrations feature of Active Record to # incrementally modify your database, and then regenerate this schema definition. # -# Note that this schema.rb definition is the authoritative source for your -# database schema. If you need to create the application database on another -# system, you should be using db:schema:load, not running all the migrations -# from scratch. The latter is a flawed and unsustainable approach (the more migrations -# you'll amass, the slower it'll run and the greater likelihood for issues). +# This file is the source Rails uses to define your schema when running `rails +# db:schema:load`. When creating a new database, `rails db:schema:load` tends to +# be faster and is potentially less error prone than running all of your +# migrations from scratch. Old migrations may fail to apply correctly if those +# migrations use external dependencies or application code. # # It's strongly recommended that you check this file into your version control system. From d644cf37735546dfa79945d650517ddfb2abe138 Mon Sep 17 00:00:00 2001 From: Neil Matatall Date: Thu, 20 Feb 2020 14:19:37 -1000 Subject: [PATCH 04/10] let rubocop fix all the things --- .ruby-version | 2 +- Gemfile | 28 ++++++++++--------- Guardfile | 2 ++ Rakefile | 26 +++++++++-------- app.rb | 4 ++- config.ru | 6 ++-- .../delegated_account_recovery.rb | 2 +- controllers/account_provider_controller.rb | 2 ++ controllers/recovery_provider_controller.rb | 4 ++- controllers/well_known_config_controller.rb | 2 ++ darrrr.gemspec | 3 +- db/migrate/20161010213139_create_tokens.rb | 4 ++- .../20161010214105_add_token_id_to_token.rb | 2 ++ .../20161010214408_add_provider_to_tokens.rb | 2 ++ db/migrate/20170315000657_separate_tokens.rb | 2 ++ db/schema.rb | 2 ++ .../cryptors/default/default_encryptor.rb | 2 ++ .../cryptors/default/encrypted_data_io.rb | 6 ++-- lib/darrrr/provider.rb | 8 +++--- .../serialization/recovery_token_reader.rb | 12 ++++---- .../serialization/recovery_token_writer.rb | 12 ++++---- models/token.rb | 6 ++-- spec/lib/darrrr/account_provider_spec.rb | 2 +- spec/lib/darrrr/recovery_provider_spec.rb | 2 +- spec/lib/darrrr/recovery_token_spec.rb | 2 +- spec/lib/darrrr_spec.rb | 2 +- .../account_provider_controller_spec.rb | 2 ++ spec/lib/integration/integration_spec.rb | 2 ++ .../recovery_provider_controller_spec.rb | 2 ++ spec/spec_helper.rb | 8 ++++-- 30 files changed, 100 insertions(+), 61 deletions(-) diff --git a/.ruby-version b/.ruby-version index 097a15a..57cf282 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.6.2 +2.6.5 diff --git a/Gemfile b/Gemfile index ddbf801..cd67841 100644 --- a/Gemfile +++ b/Gemfile @@ -1,36 +1,38 @@ -source 'https://rubygems.org' +# frozen_string_literal: true + +source "https://rubygems.org" gemspec gem "activerecord" +gem "dalli" gem "rack_csrf" -gem "sinatra-activerecord" gem "rake" gem "sinatra" +gem "sinatra-activerecord" gem "sinatra-contrib" -gem "dalli" group :development do + gem "jdbc-sqlite3", platform: :jruby gem "pry-nav" - gem "jdbc-sqlite3", :platform => :jruby - gem "sqlite3", :platform => [:ruby, :mswin, :mingw] + gem "sqlite3", platform: [:ruby, :mswin, :mingw] end group :test do + gem "database_cleaner" + gem "guard-rspec" + gem "mechanize" + gem "poltergeist" + gem "rspec" gem "rubocop", "< 0.68" gem "rubocop-github" gem "rubocop-performance" - gem "mechanize" - gem "watir" - gem "vcr" - gem "webmock" - gem "rspec" - gem "guard-rspec" gem "ruby_gntp" - gem "poltergeist" gem "simplecov" gem "simplecov-json" - gem "database_cleaner" + gem "vcr" + gem "watir" + gem "webmock" end group :production do diff --git a/Guardfile b/Guardfile index d2cb239..aaf7ce7 100644 --- a/Guardfile +++ b/Guardfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + guard :rspec, cmd: "bundle exec rspec", all_after_pass: true do require "guard/rspec/dsl" dsl = Guard::RSpec::Dsl.new(self) diff --git a/Rakefile b/Rakefile index a637ebf..06f543a 100644 --- a/Rakefile +++ b/Rakefile @@ -1,8 +1,10 @@ #!/usr/bin/env rake -require 'bundler/gem_tasks' -require 'net/http' -require 'net/https' -require 'date' +# frozen_string_literal: true + +require "bundler/gem_tasks" +require "net/http" +require "net/https" +require "date" require_relative "app" require_relative "lib/darrrr" @@ -16,7 +18,7 @@ end unless ENV["RACK_ENV"] == "production" - require 'rspec/core/rake_task' + require "rspec/core/rake_task" desc "Run RSpec" RSpec::Core::RakeTask.new do |t| t.verbose = false @@ -27,16 +29,16 @@ unless ENV["RACK_ENV"] == "production" end begin - require 'rdoc/task' + require "rdoc/task" rescue LoadError - require 'rdoc/rdoc' - require 'rake/rdoctask' + require "rdoc/rdoc" + require "rake/rdoctask" RDoc::Task = Rake::RDocTask end RDoc::Task.new(:rdoc) do |rdoc| - rdoc.rdoc_dir = 'rdoc' - rdoc.title = 'SecureHeaders' - rdoc.options << '--line-numbers' - rdoc.rdoc_files.include('lib/**/*.rb') + rdoc.rdoc_dir = "rdoc" + rdoc.title = "SecureHeaders" + rdoc.options << "--line-numbers" + rdoc.rdoc_files.include("lib/**/*.rb") end diff --git a/app.rb b/app.rb index 280194c..391cf2f 100644 --- a/app.rb +++ b/app.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require "sinatra" require "sinatra/multi_route" require "rack/csrf" @@ -28,7 +30,7 @@ class MainController < Sinatra::Base before do unless request.ssl? - halt 401, "Not authorized\n" if ENV['RACK_ENV'] == :production + halt 401, "Not authorized\n" if ENV["RACK_ENV"] == :production end end diff --git a/config.ru b/config.ru index ecb5bfc..0480087 100644 --- a/config.ru +++ b/config.ru @@ -1,3 +1,5 @@ +# frozen_string_literal: true + $stdout.sync = true require_relative "app" require_relative "controllers/account_provider_controller" @@ -5,9 +7,9 @@ require_relative "controllers/recovery_provider_controller" require_relative "controllers/well_known_config_controller" configure do - use Rack::Session::Cookie, :secret => ENV["COOKIE_SECRET"] + use Rack::Session::Cookie, secret: ENV["COOKIE_SECRET"] unless Sinatra::Application.environment == :test - use Rack::Csrf, :raise => true, :skip => MainController::UNAUTHED_ENDPOINTS + use Rack::Csrf, raise: true, skip: MainController::UNAUTHED_ENDPOINTS end end diff --git a/config/initializers/delegated_account_recovery.rb b/config/initializers/delegated_account_recovery.rb index 8fb6f30..6612335 100644 --- a/config/initializers/delegated_account_recovery.rb +++ b/config/initializers/delegated_account_recovery.rb @@ -28,7 +28,7 @@ end Darrrr.register_account_provider(Darrrr.authority) Darrrr.register_recovery_provider(Darrrr.authority) -options = { :namespace => "app_v1", :compress => true } +options = { namespace: "app_v1", compress: true } # Uncomment to use memcached # Darrrr.cache = Dalli::Client.new('localhost:11211', options) diff --git a/controllers/account_provider_controller.rb b/controllers/account_provider_controller.rb index 56e8252..cd987bf 100644 --- a/controllers/account_provider_controller.rb +++ b/controllers/account_provider_controller.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + class AccountProviderController < MainController # 1 select recovery provider get "/" do diff --git a/controllers/recovery_provider_controller.rb b/controllers/recovery_provider_controller.rb index 609b1b1..9fb64ba 100644 --- a/controllers/recovery_provider_controller.rb +++ b/controllers/recovery_provider_controller.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require_relative "../models/token" class RecoveryProviderController < MainController @@ -21,7 +23,7 @@ class RecoveryProviderController < MainController response[:status] = "save-failure" end - redirect to("#{account_provider.save_token_return}?#{response.map{|key, value| "#{key}=#{value}"}.join("&")}") + redirect to("#{account_provider.save_token_return}?#{response.map { |key, value| "#{key}=#{value}" }.join("&")}") end route :get, :post, "/recover-account" do diff --git a/controllers/well_known_config_controller.rb b/controllers/well_known_config_controller.rb index 1b8ccfa..65f39ea 100644 --- a/controllers/well_known_config_controller.rb +++ b/controllers/well_known_config_controller.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + class WellKnownConfigController < MainController get "/.well-known/delegated-account-recovery/configuration" do JSON.pretty_generate(Darrrr.account_and_recovery_provider_config) diff --git a/darrrr.gemspec b/darrrr.gemspec index 85abbfe..ff7f6c8 100644 --- a/darrrr.gemspec +++ b/darrrr.gemspec @@ -1,9 +1,10 @@ # coding: utf-8 +# frozen_string_literal: true Gem::Specification.new do |gem| gem.name = "darrrr" gem.version = "0.1.5" - gem.licenses = ['MIT'] + gem.licenses = ["MIT"] gem.summary = "Client library for the Delegated Recovery spec" gem.description = "See https://www.facebook.com/notes/protect-the-graph/improving-account-security-with-delegated-recovery/1833022090271267/" diff --git a/db/migrate/20161010213139_create_tokens.rb b/db/migrate/20161010213139_create_tokens.rb index 144a6cb..862cce1 100644 --- a/db/migrate/20161010213139_create_tokens.rb +++ b/db/migrate/20161010213139_create_tokens.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + class CreateTokens < ActiveRecord::Migration[5.2] def change create_table :tokens do |t| @@ -5,6 +7,6 @@ class CreateTokens < ActiveRecord::Migration[5.2] t.text :token_blob t.timestamps - end + end end end diff --git a/db/migrate/20161010214105_add_token_id_to_token.rb b/db/migrate/20161010214105_add_token_id_to_token.rb index c629cef..998042c 100644 --- a/db/migrate/20161010214105_add_token_id_to_token.rb +++ b/db/migrate/20161010214105_add_token_id_to_token.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + class AddTokenIdToToken < ActiveRecord::Migration[5.2] def change add_column :tokens, :token_id, :string diff --git a/db/migrate/20161010214408_add_provider_to_tokens.rb b/db/migrate/20161010214408_add_provider_to_tokens.rb index 8b88d2a..519fc02 100644 --- a/db/migrate/20161010214408_add_provider_to_tokens.rb +++ b/db/migrate/20161010214408_add_provider_to_tokens.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + class AddProviderToTokens < ActiveRecord::Migration[5.2] def change add_column :tokens, :provider, :string diff --git a/db/migrate/20170315000657_separate_tokens.rb b/db/migrate/20170315000657_separate_tokens.rb index f40b855..5d0bed7 100644 --- a/db/migrate/20170315000657_separate_tokens.rb +++ b/db/migrate/20170315000657_separate_tokens.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + class SeparateTokens < ActiveRecord::Migration[5.2] def change rename_table :tokens, :recovery_tokens diff --git a/db/schema.rb b/db/schema.rb index bd52be5..0c9de6e 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + # This file is auto-generated from the current state of the database. Instead # of editing this file, please use the migrations feature of Active Record to # incrementally modify your database, and then regenerate this schema definition. diff --git a/lib/darrrr/cryptors/default/default_encryptor.rb b/lib/darrrr/cryptors/default/default_encryptor.rb index 0b4e0cc..8d4c968 100644 --- a/lib/darrrr/cryptors/default/default_encryptor.rb +++ b/lib/darrrr/cryptors/default/default_encryptor.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module Darrrr module DefaultEncryptor class << self diff --git a/lib/darrrr/cryptors/default/encrypted_data_io.rb b/lib/darrrr/cryptors/default/encrypted_data_io.rb index 263b1f6..97eff7f 100644 --- a/lib/darrrr/cryptors/default/encrypted_data_io.rb +++ b/lib/darrrr/cryptors/default/encrypted_data_io.rb @@ -3,8 +3,8 @@ module Darrrr class EncryptedDataIO < BinData::Record uint8 :version - array :auth_tag, :type => :uint8, :initial_length => EncryptedData::AUTH_TAG_LENGTH - array :iv, :type => :uint8, :initial_length => EncryptedData::IV_LENGTH - array :ciphertext, :type => :uint8, :read_until => :eof + array :auth_tag, type: :uint8, initial_length: EncryptedData::AUTH_TAG_LENGTH + array :iv, type: :uint8, initial_length: EncryptedData::IV_LENGTH + array :ciphertext, type: :uint8, read_until: :eof end end diff --git a/lib/darrrr/provider.rb b/lib/darrrr/provider.rb index 78b6bc0..3afb089 100644 --- a/lib/darrrr/provider.rb +++ b/lib/darrrr/provider.rb @@ -33,7 +33,7 @@ module Darrrr # Returns the crypto API to be used. A thread local instance overrides the # globally configured value which overrides the default encryptor. def encryptor - Thread.current[encryptor_key()] || @encryptor || DefaultEncryptor + Thread.current[encryptor_key] || @encryptor || DefaultEncryptor end # Overrides the global `encryptor` API to use @@ -53,14 +53,14 @@ module Darrrr raise ArgumentError, "custom encryption class must respond to all of #{REQUIRED_CRYPTO_OPS}" end - Thread.current[encryptor_key()] = encryptor + Thread.current[encryptor_key] = encryptor yield ensure - Thread.current[encryptor_key()] = nil + Thread.current[encryptor_key] = nil end private def valid_encryptor?(encryptor) - REQUIRED_CRYPTO_OPS.all? {|m| encryptor.respond_to?(m)} + REQUIRED_CRYPTO_OPS.all? { |m| encryptor.respond_to?(m) } end # Lazily loads attributes if attrs is nil. It makes an http call to the diff --git a/lib/darrrr/serialization/recovery_token_reader.rb b/lib/darrrr/serialization/recovery_token_reader.rb index 2094117..c2b8010 100644 --- a/lib/darrrr/serialization/recovery_token_reader.rb +++ b/lib/darrrr/serialization/recovery_token_reader.rb @@ -4,17 +4,17 @@ module Darrrr class RecoveryTokenReader < BinData::Record uint8 :version uint8 :token_type - array :token_id, :type => :uint8, :read_until => lambda { index + 1 == Darrrr::TOKEN_ID_BYTE_LENGTH } + array :token_id, type: :uint8, read_until: lambda { index + 1 == Darrrr::TOKEN_ID_BYTE_LENGTH } uint8 :options uint16be :issuer_length - string :issuer, :read_length => :issuer_length + string :issuer, read_length: :issuer_length uint16be :audience_length - string :audience, :read_length => :audience_length + string :audience, read_length: :audience_length uint16be :issued_time_length - string :issued_time, :read_length => :issued_time_length + string :issued_time, read_length: :issued_time_length uint16be :data_length - string :data, :read_length => :data_length + string :data, read_length: :data_length uint16be :binding_data_length - string :binding_data, :read_length => :binding_data_length + string :binding_data, read_length: :binding_data_length end end diff --git a/lib/darrrr/serialization/recovery_token_writer.rb b/lib/darrrr/serialization/recovery_token_writer.rb index 763fdf1..ed3366b 100644 --- a/lib/darrrr/serialization/recovery_token_writer.rb +++ b/lib/darrrr/serialization/recovery_token_writer.rb @@ -4,17 +4,17 @@ module Darrrr class RecoveryTokenWriter < BinData::Record uint8 :version uint8 :token_type - array :token_id, :type => :uint8, :initial_length => Darrrr::TOKEN_ID_BYTE_LENGTH + array :token_id, type: :uint8, initial_length: Darrrr::TOKEN_ID_BYTE_LENGTH uint8 :options - uint16be :issuer_length, :value => lambda { issuer.length } + uint16be :issuer_length, value: lambda { issuer.length } string :issuer - uint16be :audience_length, :value => lambda { audience.length } + uint16be :audience_length, value: lambda { audience.length } string :audience - uint16be :issued_time_length, :value => lambda { issued_time.length } + uint16be :issued_time_length, value: lambda { issued_time.length } string :issued_time - uint16be :data_length, :value => lambda { data.length } + uint16be :data_length, value: lambda { data.length } string :data - uint16be :binding_data_length, :value => lambda { binding_data.length } + uint16be :binding_data_length, value: lambda { binding_data.length } string :binding_data end end diff --git a/models/token.rb b/models/token.rb index ec44e30..dbc1b27 100644 --- a/models/token.rb +++ b/models/token.rb @@ -1,5 +1,7 @@ -class RecoveryToken < ActiveRecord::Base +# frozen_string_literal: true + +class RecoveryToken < ActiveRecord::ApplicationRecord end -class ReferenceToken < ActiveRecord::Base +class ReferenceToken < ActiveRecord::ApplicationRecord end diff --git a/spec/lib/darrrr/account_provider_spec.rb b/spec/lib/darrrr/account_provider_spec.rb index fba8c8f..1b071bf 100644 --- a/spec/lib/darrrr/account_provider_spec.rb +++ b/spec/lib/darrrr/account_provider_spec.rb @@ -3,7 +3,7 @@ require_relative "../../spec_helper" module Darrrr - describe AccountProvider, vcr: { :cassette_name => "delegated_account_recovery/recovery_provider" } do + describe AccountProvider, vcr: { cassette_name: "delegated_account_recovery/recovery_provider" } do let(:recovery_provider) { example_recovery_provider } let(:account_provider) { AccountProvider.this } let(:token) { account_provider.generate_recovery_token(data: "hai", audience: recovery_provider).first } diff --git a/spec/lib/darrrr/recovery_provider_spec.rb b/spec/lib/darrrr/recovery_provider_spec.rb index 2d29144..da3340b 100644 --- a/spec/lib/darrrr/recovery_provider_spec.rb +++ b/spec/lib/darrrr/recovery_provider_spec.rb @@ -3,7 +3,7 @@ require_relative "../../spec_helper" module Darrrr - describe RecoveryProvider, vcr: { :cassette_name => "delegated_account_recovery/recovery_provider" } do + describe RecoveryProvider, vcr: { cassette_name: "delegated_account_recovery/recovery_provider" } do include DelegatedRecoveryHelpers let(:recovery_provider) { example_recovery_provider } diff --git a/spec/lib/darrrr/recovery_token_spec.rb b/spec/lib/darrrr/recovery_token_spec.rb index f76035a..5237ca1 100644 --- a/spec/lib/darrrr/recovery_token_spec.rb +++ b/spec/lib/darrrr/recovery_token_spec.rb @@ -3,7 +3,7 @@ require_relative "../../spec_helper" module Darrrr - describe RecoveryToken, vcr: { :cassette_name => "delegated_account_recovery/recovery_provider" } do + describe RecoveryToken, vcr: { cassette_name: "delegated_account_recovery/recovery_provider" } do let(:binding) { SecureRandom.hex } let(:recovery_provider) { example_account_provider } let(:token) { AccountProvider.this.generate_recovery_token(data: "hai", audience: recovery_provider).first } diff --git a/spec/lib/darrrr_spec.rb b/spec/lib/darrrr_spec.rb index 17847b5..dab92fd 100644 --- a/spec/lib/darrrr_spec.rb +++ b/spec/lib/darrrr_spec.rb @@ -2,7 +2,7 @@ require_relative "../spec_helper" -describe Darrrr, vcr: { :cassette_name => "delegated_account_recovery/recovery_provider", match_requests_on: [:method, :uri] } do +describe Darrrr, vcr: { cassette_name: "delegated_account_recovery/recovery_provider", match_requests_on: [:method, :uri] } do context "#recovery_provider" do it "raises an error if you ask for an unregistered recovery provider" do expect { diff --git a/spec/lib/integration/account_provider_controller_spec.rb b/spec/lib/integration/account_provider_controller_spec.rb index 3a81052..92e2d1b 100644 --- a/spec/lib/integration/account_provider_controller_spec.rb +++ b/spec/lib/integration/account_provider_controller_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require_relative "../../spec_helper" describe "AccountProviderController", vcr: { cassette_name: "delegated_account_recovery/integration_test" } do diff --git a/spec/lib/integration/integration_spec.rb b/spec/lib/integration/integration_spec.rb index f533973..d9ad649 100644 --- a/spec/lib/integration/integration_spec.rb +++ b/spec/lib/integration/integration_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require_relative "../../spec_helper" describe "Integration test", vcr: { cassette_name: "delegated_account_recovery/integration_test" } do diff --git a/spec/lib/integration/recovery_provider_controller_spec.rb b/spec/lib/integration/recovery_provider_controller_spec.rb index 9f9f8f8..d1eb617 100644 --- a/spec/lib/integration/recovery_provider_controller_spec.rb +++ b/spec/lib/integration/recovery_provider_controller_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require_relative "../../spec_helper" describe "AccountProviderController", vcr: { cassette_name: "delegated_account_recovery/integration_test" } do diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 204d7a6..e65917c 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require "bundler/setup" require "pry" require "vcr" @@ -9,7 +11,7 @@ require "capybara/dsl" require "capybara/poltergeist" require "sinatra" require "securerandom" -require 'database_cleaner' +require "database_cleaner" ENV["ACCOUNT_PROVIDER_PUBLIC_KEY"] = "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEks3CjRTWrTnEDEiz36ICsy3mOX7fhauJ3Jj3R6hN7rp0Q6zh3WKIhGMBR8Ccc1VKZ4eMqLmw/WQLHSAn22GD4g==" ENV["ACCOUNT_PROVIDER_PRIVATE_KEY"] = "MHcCAQEEIKrHDRd0Bn3PkY9fU4AaDErNIKPkMCdL9tGNvwyWXdPqoAoGCCqGSM49AwEHoUQDQgAEks3CjRTWrTnEDEiz36ICsy3mOX7fhauJ3Jj3R6hN7rp0Q6zh3WKIhGMBR8Ccc1VKZ4eMqLmw/WQLHSAn22GD4g==" @@ -19,8 +21,8 @@ ENV["RECOVERY_PROVIDER_PUBLIC_KEY"] = "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcUoYO ENV["COOKIE_SECRET"] = SecureRandom.hex ENV["RACK_ENV"] = "test" -require 'simplecov' -require 'simplecov-json' +require "simplecov" +require "simplecov-json" SimpleCov.formatters = [ SimpleCov::Formatter::JSONFormatter, SimpleCov::Formatter::HTMLFormatter, From 4fb3aa56dced16d4f6e65cc7334345ae9137aa52 Mon Sep 17 00:00:00 2001 From: Neil Matatall Date: Thu, 20 Feb 2020 14:21:56 -1000 Subject: [PATCH 05/10] version is deprecated --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5c7f2db..5886cb4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,7 +18,7 @@ jobs: - name: Set up Ruby ${{ matrix.ruby }} uses: actions/setup-ruby@v1 with: - version: ${{ matrix.ruby }} + ruby-version: ${{ matrix.ruby }} - name: Build and test with Rake run: | gem install bundler From de54d8449f08157219bd7c7b818c2a65f4749d98 Mon Sep 17 00:00:00 2001 From: Neil Matatall Date: Thu, 20 Feb 2020 14:25:25 -1000 Subject: [PATCH 06/10] just disable the rule : --- .rubocop.yml | 2 ++ models/token.rb | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index 938b22d..cde360f 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -2,3 +2,5 @@ inherit_gem: rubocop-github: - config/default.yml require: rubocop-performance +GitHub/RailsApplicationRecord: + Enabled: false diff --git a/models/token.rb b/models/token.rb index dbc1b27..7dc79fb 100644 --- a/models/token.rb +++ b/models/token.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true -class RecoveryToken < ActiveRecord::ApplicationRecord +class RecoveryToken < ActiveRecord::Base end -class ReferenceToken < ActiveRecord::ApplicationRecord +class ReferenceToken < ActiveRecord::Base end From 46609d6cf603605bd0196a53ba66840524fd6ce5 Mon Sep 17 00:00:00 2001 From: Neil Matatall <448516+oreoshake@users.noreply.github.com> Date: Thu, 20 Feb 2020 14:27:28 -1000 Subject: [PATCH 07/10] Add github actions badge --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 603aca1..e112dba 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ [![Code Climate](https://codeclimate.com/github/github/darrrr/badges/gpa.svg)](https://codeclimate.com/github/github/darrrr) +![Build + Test](https://github.com/github/darrrr/workflows/Build%20+%20Test/badge.svg?branch=master) The Delegated Account Recovery Rigid Reusable Ruby (aka D.a.r.r.r.r. or "Darrrr") library is meant to be used as the fully-complete plumbing in your Rack application when implementing the [Delegated Account Recovery specification](https://github.com/facebook/DelegatedRecoverySpecification). This library is currently used for the implementation at [GitHub](https://githubengineering.com/recover-accounts-elsewhere/). From aed1fa5f5cda5c37aeab457ff29dbe7d2b67ef40 Mon Sep 17 00:00:00 2001 From: Neil Matatall Date: Thu, 20 Feb 2020 14:32:58 -1000 Subject: [PATCH 08/10] codeclimate can't handle 2.6? --- .ruby-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ruby-version b/.ruby-version index 57cf282..35d16fb 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.6.5 +2.5.7 From b09b808df4da479769c9e5c621a37c808e90aacc Mon Sep 17 00:00:00 2001 From: Neil Matatall Date: Thu, 20 Feb 2020 14:34:41 -1000 Subject: [PATCH 09/10] ffs why does this only happen in CI --- .rubocop.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.rubocop.yml b/.rubocop.yml index cde360f..f513f20 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -4,3 +4,5 @@ inherit_gem: require: rubocop-performance GitHub/RailsApplicationRecord: Enabled: false +Style/FrozenStringLiteralComment: + Enabled: false From 762feea26762cf18c4f80a8035e44858eaa69052 Mon Sep 17 00:00:00 2001 From: Neil Matatall Date: Thu, 20 Feb 2020 14:41:31 -1000 Subject: [PATCH 10/10] tell codeclimate to use our rubocop --- .codeclimate.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.codeclimate.yml b/.codeclimate.yml index 59834ef..ee7fbc7 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -15,6 +15,8 @@ engines: enabled: true rubocop: enabled: true + config: + file: .rubocop.yml ratings: paths: - Gemfile.lock