From b8f537a437d78bb0d4d3175390acfdabfa3bb74a Mon Sep 17 00:00:00 2001 From: Alex Ford Date: Thu, 15 Jun 2023 13:23:09 +0100 Subject: [PATCH] Ruby: update rack tests --- .../frameworks/rack/Rack.expected | 16 +++++++---- .../library-tests/frameworks/rack/Rack.ql | 4 +-- .../frameworks/rack/rack_apps.rb | 28 +++++++++++++++++++ 3 files changed, 39 insertions(+), 9 deletions(-) create mode 100644 ruby/ql/test/library-tests/frameworks/rack/rack_apps.rb diff --git a/ruby/ql/test/library-tests/frameworks/rack/Rack.expected b/ruby/ql/test/library-tests/frameworks/rack/Rack.expected index 82f2d4cc82e..c268b463090 100644 --- a/ruby/ql/test/library-tests/frameworks/rack/Rack.expected +++ b/ruby/ql/test/library-tests/frameworks/rack/Rack.expected @@ -1,10 +1,14 @@ rackApps -| rack.rb:1:1:10:3 | HelloWorld | rack.rb:2:12:2:14 | env | -| rack.rb:12:1:22:3 | Proxy | rack.rb:17:12:17:18 | the_env | -| rack.rb:24:1:37:3 | Logger | rack.rb:30:12:30:14 | env | -| rack.rb:39:1:45:3 | Redirector | rack.rb:40:12:40:14 | env | -| rack.rb:59:1:75:3 | Baz | rack.rb:60:12:60:14 | env | -| rack.rb:77:1:95:3 | Qux | rack.rb:79:17:79:19 | env | +| Rack application: -> { ... } | rack_apps.rb:21:17:21:19 | env | +| Rack application: Baz | rack.rb:60:12:60:14 | env | +| Rack application: ClassApp | rack_apps.rb:16:17:16:19 | env | +| Rack application: HelloWorld | rack.rb:2:12:2:14 | env | +| Rack application: InstanceApp | rack_apps.rb:6:12:6:14 | env | +| Rack application: Logger | rack.rb:30:12:30:14 | env | +| Rack application: Proxy | rack.rb:17:12:17:18 | the_env | +| Rack application: Qux | rack.rb:79:17:79:19 | env | +| Rack application: Redirector | rack.rb:40:12:40:14 | env | +| Rack application: { ... } | rack_apps.rb:23:24:23:26 | env | rackResponseContentTypes | rack.rb:8:5:8:38 | call to [] | rack.rb:7:34:7:45 | "text/plain" | | rack.rb:20:5:20:27 | call to [] | rack.rb:19:28:19:38 | "text/html" | diff --git a/ruby/ql/test/library-tests/frameworks/rack/Rack.ql b/ruby/ql/test/library-tests/frameworks/rack/Rack.ql index 9b5d0629a9f..9e731ea2b4b 100644 --- a/ruby/ql/test/library-tests/frameworks/rack/Rack.ql +++ b/ruby/ql/test/library-tests/frameworks/rack/Rack.ql @@ -2,9 +2,7 @@ private import codeql.ruby.AST private import codeql.ruby.frameworks.Rack private import codeql.ruby.DataFlow -query predicate rackApps(Rack::App::AppCandidate c, DataFlow::ParameterNode env) { - env = c.getEnv() -} +query predicate rackApps(Rack::App::App app, DataFlow::ParameterNode env) { env = app.getEnv() } query predicate rackResponseContentTypes( Rack::Response::ResponseNode resp, DataFlow::Node contentType diff --git a/ruby/ql/test/library-tests/frameworks/rack/rack_apps.rb b/ruby/ql/test/library-tests/frameworks/rack/rack_apps.rb new file mode 100644 index 00000000000..716c33a3d28 --- /dev/null +++ b/ruby/ql/test/library-tests/frameworks/rack/rack_apps.rb @@ -0,0 +1,28 @@ +require 'rack' +require 'rack/handler/puma' +handler = Rack::Handler::Puma + +class InstanceApp + def call(env) + status = 200 + headers = {} + body = ["instance app"] + resp = [status, headers, body] + resp + end +end + +class ClassApp + def self.call(env) + [200, {}, ["class app"]] + end +end + +lambda_app = ->(env) { [200, {}, ["lambda app"]] } + +proc_app = Proc.new { |env| [200, {}, ["proc app"]] } + +handler.run InstanceApp.new +handler.run ClassApp +handler.run lambda_app +handler.run proc_app