rubocop-mable 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 11f4a0980ecdeb9bd5423be381dd7a644af6c9d6b88588ea3c19142103d07f15
4
- data.tar.gz: 9b7b498e693680865f1c195913feb385c6d125cee1ad92869aaa327b1f6d8e69
3
+ metadata.gz: 4b59a5fc99bec56362c41b540f37058dabfc1e16b3ac9bb6db72c64f5f16495f
4
+ data.tar.gz: 60135942aab111fa27f46225f839edbcca834e97e37737cc303774496c1febfc
5
5
  SHA512:
6
- metadata.gz: 8bd1daf2d6d0e8e11ae71e6a0827c43b3a2e4f2600ad37e5fad6836189eb0ad23bd11db73872a52a07035b944d0cded9bd1d1159bf5bfac9b3fdcfec3a12cc06
7
- data.tar.gz: 765c60614e41af4a95e45c2136ab5464b68d2ecb5d21ebebab6e3b0dfa2f93737756f659db49893eee21c0bedd35e722fd97350ac853db6373ffff58bc144be0
6
+ metadata.gz: 97a1ae86f7a089288e6444b50ac1eccfb5e04457c4155b5bab6f34c0a8388ff36528e9f0dba95130c574525af2eca8d0cf8a72ab09c7b249d7054b05985a2ce4
7
+ data.tar.gz: f527513322bef9827c28b64100e3eae9c413ec559b77b049579cc4683923b54a4ed2756159cdb289d2370c49957bc144d78efc06c9964f6acc628c28035ca581
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rubocop-mable (0.1.4)
4
+ rubocop-mable (0.1.5)
5
5
  rubocop
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -6,6 +6,12 @@ Mable's custom Rubocop cops
6
6
 
7
7
  ```
8
8
 
9
+ Mable/NoWardenInGraphQL:
10
+ Description: "No Warden in graphQL use helper method instead see - Mable/NoPostInGraphQL"
11
+ Enabled: true
12
+ SafeAutoCorrect: false
13
+ VersionAdded: "0.1.5"
14
+
9
15
  Mable/NoPostInGraphQL:
10
16
  Description: "Use graphQL helper method instead of use rails/rack request stack"
11
17
  Enabled: true
data/config/default.yml CHANGED
@@ -22,3 +22,9 @@ Mable/NoPostInGraphQL:
22
22
  AllowedGraphQLPaths:
23
23
  - "/graphql"
24
24
  - "graphql_path"
25
+
26
+ Mable/NoWardenInGraphQL:
27
+ Description: "No Warden in graphQL use helper method instead see - Mable/NoPostInGraphQL"
28
+ Enabled: true
29
+ SafeAutoCorrect: false
30
+ VersionAdded: "0.1.5"
@@ -0,0 +1,91 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module Mable
6
+ # This cop checks for the usage of Warden::Test::Helpers and related
7
+ # methods within GraphQL specs. It disallows the use of Warden.test_mode!,
8
+ # login_as, and user.reload.
9
+ #
10
+ # @safety
11
+ # Unsafe as requires graphql helper method to replace
12
+ #
13
+ # @example
14
+ # # bad
15
+ # Warden.test_mode!
16
+ # login_as(user)
17
+ # user.reload
18
+ # include Warden::Test::Helpers
19
+ #
20
+ # # good
21
+ # # Use graphql helper method
22
+ class NoWardenInGraphQL < Base
23
+ include RangeHelp
24
+ extend AutoCorrector
25
+
26
+ MSG = 'Do not use `%<method>s` in GraphQL specs. Use graphql helper method instead.'
27
+
28
+ RESTRICT_ON_SEND = %i[test_mode! login_as reload].freeze
29
+ RESTRICT_ON_INCLUDE = %i[Warden::Test::Helpers].freeze
30
+
31
+ def_node_search :rspec_describe_graphql?, <<~PATTERN
32
+ (block
33
+ (send (const nil? :RSpec) :describe
34
+ (const { (const nil? {:Graphql :Queries :Mutations}) } _)
35
+ ...)
36
+ ...)
37
+ PATTERN
38
+
39
+ def_node_matcher :user_reload?, <<~PATTERN
40
+ (send
41
+ (send _ :user) :reload)
42
+ PATTERN
43
+
44
+ def on_send(node)
45
+ return unless in_graphql?(node) && bad_method?(node)
46
+
47
+ method_name = node.method_name
48
+ add_offense(node, message: format(MSG, method: method_name)) do |corrector|
49
+ correct_offense(corrector, node)
50
+ end
51
+ end
52
+
53
+ def on_const(node)
54
+ return unless in_graphql?(node) && bad_include?(node)
55
+
56
+ add_offense(node, message: format(MSG, method: 'include Warden::Test::Helpers')) do |corrector|
57
+ correct_offense(corrector, node)
58
+ end
59
+ end
60
+
61
+ private
62
+
63
+ def in_graphql?(node)
64
+ node.each_ancestor(:block).any? do |ancestor|
65
+ rspec_describe_graphql?(ancestor)
66
+ end
67
+ end
68
+
69
+ def bad_method?(node)
70
+ if node.method_name == :reload
71
+ user_reload?(node)
72
+ else
73
+ RESTRICT_ON_SEND.include?(node.method_name)
74
+ end
75
+ end
76
+
77
+ def bad_include?(node)
78
+ RESTRICT_ON_INCLUDE.include?(node.const_name.to_sym)
79
+ end
80
+
81
+ def correct_offense(corrector, node)
82
+ if node.send_type? && bad_method?(node)
83
+ corrector.remove(range_with_comments_and_lines(node))
84
+ elsif node.const_type? && node.const_name == 'Warden::Test::Helpers'
85
+ corrector.remove(range_with_comments_and_lines(node.parent))
86
+ end
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
@@ -4,3 +4,4 @@ require_relative 'mable/graph_ql_helper_specs'
4
4
  require_relative 'mable/hardcoded_database_factory_bot_id'
5
5
  require_relative 'mable/no_post_in_graph_ql'
6
6
  require_relative 'mable/no_safety_assured'
7
+ require_relative 'mable/no_warden_in_graph_ql'
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RuboCop
4
4
  module Mable
5
- VERSION = '0.1.4'
5
+ VERSION = '0.1.5'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop-mable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mable Engineers
@@ -61,6 +61,7 @@ files:
61
61
  - lib/rubocop/cop/mable/hardcoded_database_factory_bot_id.rb
62
62
  - lib/rubocop/cop/mable/no_post_in_graph_ql.rb
63
63
  - lib/rubocop/cop/mable/no_safety_assured.rb
64
+ - lib/rubocop/cop/mable/no_warden_in_graph_ql.rb
64
65
  - lib/rubocop/cop/mable_cops.rb
65
66
  - lib/rubocop/mable.rb
66
67
  - lib/rubocop/mable/inject.rb