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 +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +10 -0
- data/config/default.yml +6 -0
- data/lib/rubocop/cop/mable/no_post_in_graph_ql.rb +4 -0
- data/lib/rubocop/cop/mable/no_warden_in_graph_ql.rb +91 -0
- data/lib/rubocop/cop/mable_cops.rb +1 -0
- data/lib/rubocop/mable/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c6836a4902321048de028d906072325dcb6072573fe27c0e1800a6e35ec0b2e
|
4
|
+
data.tar.gz: eabeca443fa5ed0d1aca35175ccbd4e7e08ce364f5ff85a4f84a88c4d2916955
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ce306a1ba5e7ac0fe0dea200fa063d7baebca9cc970a4913c2a0fdaa3efc60a97a3dc31bce104b2f202bbaefdc3de257eeb2e00f97e3d0fc71f41bf3c5f89ced
|
7
|
+
data.tar.gz: a81fc0e7bdc6449dd3a14f17c594d6c609beed466c292cfd2ac9a927f3083a3e8391ecaca5ba66bf008c4e75c695870ce1ed4ab50b247f88cc48693aedb9608d
|
data/Gemfile.lock
CHANGED
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"
|
@@ -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
|
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
|
+
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-
|
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
|