rubocop-mable 0.1.4 → 0.1.6

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: 5c6836a4902321048de028d906072325dcb6072573fe27c0e1800a6e35ec0b2e
4
+ data.tar.gz: eabeca443fa5ed0d1aca35175ccbd4e7e08ce364f5ff85a4f84a88c4d2916955
5
5
  SHA512:
6
- metadata.gz: 8bd1daf2d6d0e8e11ae71e6a0827c43b3a2e4f2600ad37e5fad6836189eb0ad23bd11db73872a52a07035b944d0cded9bd1d1159bf5bfac9b3fdcfec3a12cc06
7
- data.tar.gz: 765c60614e41af4a95e45c2136ab5464b68d2ecb5d21ebebab6e3b0dfa2f93737756f659db49893eee21c0bedd35e722fd97350ac853db6373ffff58bc144be0
6
+ metadata.gz: ce306a1ba5e7ac0fe0dea200fa063d7baebca9cc970a4913c2a0fdaa3efc60a97a3dc31bce104b2f202bbaefdc3de257eeb2e00f97e3d0fc71f41bf3c5f89ced
7
+ data.tar.gz: a81fc0e7bdc6449dd3a14f17c594d6c609beed466c292cfd2ac9a927f3083a3e8391ecaca5ba66bf008c4e75c695870ce1ed4ab50b247f88cc48693aedb9608d
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.6)
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
@@ -33,6 +39,10 @@ VersionAdded: '0.1.1'
33
39
 
34
40
  ```
35
41
 
42
+ ## TODO
43
+
44
+ - No interpolating SQL use santitize instead
45
+
36
46
  ## Installation
37
47
 
38
48
  Install the gem and add to the application's Gemfile by executing:
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"
@@ -35,6 +35,10 @@ module RuboCop
35
35
  (pair (sym :variables) _)? # Optional :variables pair
36
36
  )
37
37
  )
38
+ (pair # Optional as: :json
39
+ (sym :as)
40
+ (sym :json)
41
+ )?
38
42
  )
39
43
  )
40
44
  PATTERN
@@ -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.6'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
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.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mable Engineers
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-07-05 00:00:00.000000000 Z
11
+ date: 2024-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry
@@ -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