Skip to content

Commit c44a686

Browse files
committed
Ruby: add a test case for ActiveRecord dynamic finder methods
1 parent 56bf977 commit c44a686

File tree

3 files changed

+45
-39
lines changed

3 files changed

+45
-39
lines changed

ruby/ql/test/library-tests/frameworks/ActionController.expected

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
actionControllerControllerClasses
2-
| ActiveRecord.rb:23:1:37:3 | FooController |
3-
| ActiveRecord.rb:39:1:62:3 | BarController |
4-
| ActiveRecord.rb:64:1:68:3 | BazController |
2+
| ActiveRecord.rb:23:1:39:3 | FooController |
3+
| ActiveRecord.rb:41:1:64:3 | BarController |
4+
| ActiveRecord.rb:66:1:70:3 | BazController |
55
| app/controllers/comments_controller.rb:1:1:7:3 | CommentsController |
66
| app/controllers/foo/bars_controller.rb:3:1:31:3 | BarsController |
77
| app/controllers/photos_controller.rb:1:1:4:3 | PhotosController |
88
| app/controllers/posts_controller.rb:1:1:10:3 | PostsController |
99
| app/controllers/users/notifications_controller.rb:2:3:5:5 | NotificationsController |
1010
actionControllerActionMethods
11-
| ActiveRecord.rb:27:3:36:5 | some_request_handler |
12-
| ActiveRecord.rb:40:3:45:5 | some_other_request_handler |
13-
| ActiveRecord.rb:47:3:61:5 | safe_paths |
14-
| ActiveRecord.rb:65:3:67:5 | yet_another_handler |
11+
| ActiveRecord.rb:27:3:38:5 | some_request_handler |
12+
| ActiveRecord.rb:42:3:47:5 | some_other_request_handler |
13+
| ActiveRecord.rb:49:3:63:5 | safe_paths |
14+
| ActiveRecord.rb:67:3:69:5 | yet_another_handler |
1515
| app/controllers/comments_controller.rb:2:3:3:5 | index |
1616
| app/controllers/comments_controller.rb:5:3:6:5 | show |
1717
| app/controllers/foo/bars_controller.rb:5:3:7:5 | index |
@@ -30,12 +30,12 @@ paramsCalls
3030
| ActiveRecord.rb:34:34:34:39 | call to params |
3131
| ActiveRecord.rb:35:23:35:28 | call to params |
3232
| ActiveRecord.rb:35:38:35:43 | call to params |
33-
| ActiveRecord.rb:41:10:41:15 | call to params |
34-
| ActiveRecord.rb:48:11:48:16 | call to params |
35-
| ActiveRecord.rb:52:12:52:17 | call to params |
36-
| ActiveRecord.rb:57:12:57:17 | call to params |
37-
| ActiveRecord.rb:60:15:60:20 | call to params |
38-
| ActiveRecord.rb:66:21:66:26 | call to params |
33+
| ActiveRecord.rb:43:10:43:15 | call to params |
34+
| ActiveRecord.rb:50:11:50:16 | call to params |
35+
| ActiveRecord.rb:54:12:54:17 | call to params |
36+
| ActiveRecord.rb:59:12:59:17 | call to params |
37+
| ActiveRecord.rb:62:15:62:20 | call to params |
38+
| ActiveRecord.rb:68:21:68:26 | call to params |
3939
| app/controllers/foo/bars_controller.rb:13:21:13:26 | call to params |
4040
| app/controllers/foo/bars_controller.rb:14:10:14:15 | call to params |
4141
| app/controllers/foo/bars_controller.rb:21:21:21:26 | call to params |
@@ -49,12 +49,12 @@ paramsSources
4949
| ActiveRecord.rb:34:34:34:39 | call to params |
5050
| ActiveRecord.rb:35:23:35:28 | call to params |
5151
| ActiveRecord.rb:35:38:35:43 | call to params |
52-
| ActiveRecord.rb:41:10:41:15 | call to params |
53-
| ActiveRecord.rb:48:11:48:16 | call to params |
54-
| ActiveRecord.rb:52:12:52:17 | call to params |
55-
| ActiveRecord.rb:57:12:57:17 | call to params |
56-
| ActiveRecord.rb:60:15:60:20 | call to params |
57-
| ActiveRecord.rb:66:21:66:26 | call to params |
52+
| ActiveRecord.rb:43:10:43:15 | call to params |
53+
| ActiveRecord.rb:50:11:50:16 | call to params |
54+
| ActiveRecord.rb:54:12:54:17 | call to params |
55+
| ActiveRecord.rb:59:12:59:17 | call to params |
56+
| ActiveRecord.rb:62:15:62:20 | call to params |
57+
| ActiveRecord.rb:68:21:68:26 | call to params |
5858
| app/controllers/foo/bars_controller.rb:13:21:13:26 | call to params |
5959
| app/controllers/foo/bars_controller.rb:14:10:14:15 | call to params |
6060
| app/controllers/foo/bars_controller.rb:21:21:21:26 | call to params |

ruby/ql/test/library-tests/frameworks/ActiveRecord.expected

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@ activeRecordModelClasses
55
activeRecordInstances
66
| ActiveRecord.rb:9:5:9:68 | call to find |
77
| ActiveRecord.rb:13:5:13:40 | call to find_by |
8-
| ActiveRecord.rb:53:5:55:7 | if ... |
9-
| ActiveRecord.rb:53:43:54:40 | then ... |
10-
| ActiveRecord.rb:54:7:54:40 | call to find_by |
11-
| ActiveRecord.rb:58:5:58:33 | call to find_by |
12-
| ActiveRecord.rb:60:5:60:34 | call to find |
8+
| ActiveRecord.rb:36:5:36:30 | call to find_by_name |
9+
| ActiveRecord.rb:55:5:57:7 | if ... |
10+
| ActiveRecord.rb:55:43:56:40 | then ... |
11+
| ActiveRecord.rb:56:7:56:40 | call to find_by |
12+
| ActiveRecord.rb:60:5:60:33 | call to find_by |
13+
| ActiveRecord.rb:62:5:62:34 | call to find |
1314
activeRecordSqlExecutionRanges
1415
| ActiveRecord.rb:9:33:9:67 | "name='#{...}' and pass='#{...}'" |
1516
| ActiveRecord.rb:19:16:19:24 | condition |
@@ -18,9 +19,9 @@ activeRecordSqlExecutionRanges
1819
| ActiveRecord.rb:30:22:30:44 | "id = '#{...}'" |
1920
| ActiveRecord.rb:31:16:31:21 | <<-SQL |
2021
| ActiveRecord.rb:34:20:34:47 | "user.id = '#{...}'" |
21-
| ActiveRecord.rb:44:20:44:32 | ... + ... |
22-
| ActiveRecord.rb:50:16:50:28 | "name #{...}" |
23-
| ActiveRecord.rb:54:20:54:39 | "username = #{...}" |
22+
| ActiveRecord.rb:46:20:46:32 | ... + ... |
23+
| ActiveRecord.rb:52:16:52:28 | "name #{...}" |
24+
| ActiveRecord.rb:56:20:56:39 | "username = #{...}" |
2425
activeRecordModelClassMethodCalls
2526
| ActiveRecord.rb:2:3:2:17 | call to has_many |
2627
| ActiveRecord.rb:6:3:6:24 | call to belongs_to |
@@ -35,12 +36,14 @@ activeRecordModelClassMethodCalls
3536
| ActiveRecord.rb:34:5:34:14 | call to where |
3637
| ActiveRecord.rb:34:5:34:48 | call to not |
3738
| ActiveRecord.rb:35:5:35:51 | call to authenticate |
38-
| ActiveRecord.rb:44:5:44:33 | call to delete_by |
39-
| ActiveRecord.rb:50:5:50:29 | call to order |
40-
| ActiveRecord.rb:54:7:54:40 | call to find_by |
41-
| ActiveRecord.rb:58:5:58:33 | call to find_by |
42-
| ActiveRecord.rb:60:5:60:34 | call to find |
43-
| ActiveRecord.rb:66:5:66:45 | call to delete_by |
39+
| ActiveRecord.rb:36:5:36:30 | call to find_by_name |
40+
| ActiveRecord.rb:37:5:37:36 | call to not_a_find_by_method |
41+
| ActiveRecord.rb:46:5:46:33 | call to delete_by |
42+
| ActiveRecord.rb:52:5:52:29 | call to order |
43+
| ActiveRecord.rb:56:7:56:40 | call to find_by |
44+
| ActiveRecord.rb:60:5:60:33 | call to find_by |
45+
| ActiveRecord.rb:62:5:62:34 | call to find |
46+
| ActiveRecord.rb:68:5:68:45 | call to delete_by |
4447
potentiallyUnsafeSqlExecutingMethodCall
4548
| ActiveRecord.rb:9:5:9:68 | call to find |
4649
| ActiveRecord.rb:19:5:19:25 | call to destroy_by |
@@ -49,12 +52,13 @@ potentiallyUnsafeSqlExecutingMethodCall
4952
| ActiveRecord.rb:30:5:30:46 | call to destroy_by |
5053
| ActiveRecord.rb:31:5:31:35 | call to where |
5154
| ActiveRecord.rb:34:5:34:48 | call to not |
52-
| ActiveRecord.rb:44:5:44:33 | call to delete_by |
53-
| ActiveRecord.rb:50:5:50:29 | call to order |
54-
| ActiveRecord.rb:54:7:54:40 | call to find_by |
55+
| ActiveRecord.rb:46:5:46:33 | call to delete_by |
56+
| ActiveRecord.rb:52:5:52:29 | call to order |
57+
| ActiveRecord.rb:56:7:56:40 | call to find_by |
5558
activeRecordModelInstantiations
5659
| ActiveRecord.rb:9:5:9:68 | call to find | ActiveRecord.rb:5:1:15:3 | User |
5760
| ActiveRecord.rb:13:5:13:40 | call to find_by | ActiveRecord.rb:1:1:3:3 | UserGroup |
58-
| ActiveRecord.rb:54:7:54:40 | call to find_by | ActiveRecord.rb:5:1:15:3 | User |
59-
| ActiveRecord.rb:58:5:58:33 | call to find_by | ActiveRecord.rb:5:1:15:3 | User |
60-
| ActiveRecord.rb:60:5:60:34 | call to find | ActiveRecord.rb:5:1:15:3 | User |
61+
| ActiveRecord.rb:36:5:36:30 | call to find_by_name | ActiveRecord.rb:5:1:15:3 | User |
62+
| ActiveRecord.rb:56:7:56:40 | call to find_by | ActiveRecord.rb:5:1:15:3 | User |
63+
| ActiveRecord.rb:60:5:60:33 | call to find_by | ActiveRecord.rb:5:1:15:3 | User |
64+
| ActiveRecord.rb:62:5:62:34 | call to find | ActiveRecord.rb:5:1:15:3 | User |

ruby/ql/test/library-tests/frameworks/ActiveRecord.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ def some_request_handler
3333
SQL
3434
User.where.not("user.id = '#{params[:id]}'")
3535
User.authenticate(params[:name], params[:pass])
36+
User.find_by_name("alice")
37+
User.not_a_find_by_method("bob")
3638
end
3739
end
3840

0 commit comments

Comments
 (0)