diff --git a/README.md b/README.md index 7bdb8578..79309b1f 100644 --- a/README.md +++ b/README.md @@ -127,7 +127,7 @@ noir -b . -u https://testapp.internal.domains -f json "value": "" }, { - "name": "body", + "name": "title", "param_type": "json", "value": "" }, diff --git a/spec/functional_test/fixtures/php_pure/get.php b/spec/functional_test/fixtures/php_pure/get.php new file mode 100644 index 00000000..38b60972 --- /dev/null +++ b/spec/functional_test/fixtures/php_pure/get.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/spec/functional_test/fixtures/php_pure/header.php b/spec/functional_test/fixtures/php_pure/header.php new file mode 100644 index 00000000..f45811fb --- /dev/null +++ b/spec/functional_test/fixtures/php_pure/header.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/spec/functional_test/fixtures/php_pure/post.php b/spec/functional_test/fixtures/php_pure/post.php new file mode 100644 index 00000000..d3182423 --- /dev/null +++ b/spec/functional_test/fixtures/php_pure/post.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/spec/functional_test/fixtures/php_pure/request.php b/spec/functional_test/fixtures/php_pure/request.php new file mode 100644 index 00000000..fd47bd87 --- /dev/null +++ b/spec/functional_test/fixtures/php_pure/request.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/spec/functional_test/testers/crystal_kemal_spec.cr b/spec/functional_test/testers/crystal_kemal_spec.cr index 5ec54658..33316428 100644 --- a/spec/functional_test/testers/crystal_kemal_spec.cr +++ b/spec/functional_test/testers/crystal_kemal_spec.cr @@ -3,7 +3,7 @@ require "../func_spec.cr" extected_endpoints = [ Endpoint.new("/", "GET"), Endpoint.new("/socket", "GET"), - Endpoint.new("/query", "POST", [Param.new("query", "", "body")]), + Endpoint.new("/query", "POST", [Param.new("query", "", "form")]), ] FunctionalTester.new("fixtures/kemal/", { diff --git a/spec/functional_test/testers/go_echo_spec.cr b/spec/functional_test/testers/go_echo_spec.cr index a7ec1bc1..e523032b 100644 --- a/spec/functional_test/testers/go_echo_spec.cr +++ b/spec/functional_test/testers/go_echo_spec.cr @@ -9,7 +9,7 @@ extected_endpoints = [ Param.new("name", "", "json"), ]), Endpoint.new("/pet_form", "POST", [ - Param.new("name", "", "body"), + Param.new("name", "", "form"), ]), Endpoint.new("/public/secret.html", "GET"), ] diff --git a/spec/functional_test/testers/php_pure_spec.cr b/spec/functional_test/testers/php_pure_spec.cr new file mode 100644 index 00000000..44c591db --- /dev/null +++ b/spec/functional_test/testers/php_pure_spec.cr @@ -0,0 +1,18 @@ +require "../func_spec.cr" + +extected_endpoints = [ + Endpoint.new("/get.php", "GET", [Param.new("param1", "", "query")]), + Endpoint.new("/header.php", "GET", [ + Param.new("X-API-KEY", "", "header"), + Param.new("param1", "", "query"), + ]), + Endpoint.new("/post.php", "GET"), + Endpoint.new("/post.php", "POST", [Param.new("param1", "", "form")]), + Endpoint.new("/request.php", "GET", [Param.new("param1", "", "query")]), + Endpoint.new("/request.php", "POST", [Param.new("param1", "", "form")]), +] + +FunctionalTester.new("fixtures/php_pure/", { + :techs => 1, + :endpoints => 6, +}, extected_endpoints).test_all diff --git a/spec/functional_test/testers/ruby_sinatra_spec.cr b/spec/functional_test/testers/ruby_sinatra_spec.cr index 6569df74..e47f71d1 100644 --- a/spec/functional_test/testers/ruby_sinatra_spec.cr +++ b/spec/functional_test/testers/ruby_sinatra_spec.cr @@ -3,7 +3,7 @@ require "../func_spec.cr" extected_endpoints = [ Endpoint.new("/", "GET", [Param.new("query", "", "query")]), Endpoint.new("/update", "POST"), - Endpoint.new("/query", "POST", [Param.new("query", "", "body")]), + Endpoint.new("/query", "POST", [Param.new("query", "", "form")]), ] FunctionalTester.new("fixtures/sinatra/", { diff --git a/src/analyzer/analyzers/analyzer_go_echo.cr b/src/analyzer/analyzers/analyzer_go_echo.cr index 506183c2..1e29a014 100644 --- a/src/analyzer/analyzers/analyzer_go_echo.cr +++ b/src/analyzer/analyzers/analyzer_go_echo.cr @@ -65,7 +65,7 @@ class AnalyzerGoEcho < Analyzer param_type = "query" end if line.includes?("FormValue") - param_type = "body" + param_type = "form" end first = line.strip.split("(") diff --git a/src/analyzer/analyzers/analyzer_kemal.cr b/src/analyzer/analyzers/analyzer_kemal.cr index 495dac37..74297a04 100644 --- a/src/analyzer/analyzers/analyzer_kemal.cr +++ b/src/analyzer/analyzers/analyzer_kemal.cr @@ -42,7 +42,7 @@ class AnalyzerKemal < Analyzer if content.includes? "env.params.body[" param = content.split("env.params.body[")[1].split("]")[0].gsub("\"", "").gsub("'", "") - return Param.new(param, "", "body") + return Param.new(param, "", "form") end if content.includes? "env.response.headers[" diff --git a/src/analyzer/analyzers/analyzer_oas2.cr b/src/analyzer/analyzers/analyzer_oas2.cr index edeeda9b..21a9c306 100644 --- a/src/analyzer/analyzers/analyzer_oas2.cr +++ b/src/analyzer/analyzers/analyzer_oas2.cr @@ -24,7 +24,7 @@ class AnalyzerOAS2 < Analyzer if param_obj["in"] == "query" param = Param.new(param_name, "", "query") params << param - elsif param_obj["in"] == "body" + elsif param_obj["in"] == "form" param = Param.new(param_name, "", "json") params << param elsif param_obj["in"] == "formData" @@ -62,7 +62,7 @@ class AnalyzerOAS2 < Analyzer if param_obj["in"] == "query" param = Param.new(param_name, "", "query") params << param - elsif param_obj["in"] == "body" + elsif param_obj["in"] == "form" param = Param.new(param_name, "", "json") params << param elsif param_obj["in"] == "formData" diff --git a/src/analyzer/analyzers/analyzer_php_pure.cr b/src/analyzer/analyzers/analyzer_php_pure.cr index 0e6706b7..894001e3 100644 --- a/src/analyzer/analyzers/analyzer_php_pure.cr +++ b/src/analyzer/analyzers/analyzer_php_pure.cr @@ -26,9 +26,22 @@ class AnalyzerPhpPure < Analyzer method = match[1] param_name = match[2] - methods = methods | [method] - params_query << Param.new(param_name, "string", "query") - params_body << Param.new(param_name, "string", "form") + if method == "GET" + params_query << Param.new(param_name, "", "query") + elsif method == "POST" + params_body << Param.new(param_name, "", "form") + methods << "POST" + elsif method == "REQUEST" + params_query << Param.new(param_name, "", "query") + params_body << Param.new(param_name, "", "form") + methods << "POST" + elsif method == "SERVER" + if param_name.includes? "HTTP_" + param_name = param_name.sub("HTTP_", "").gsub("_", "-") + params_query << Param.new(param_name, "", "header") + params_body << Param.new(param_name, "", "header") + end + end end rescue next @@ -44,6 +57,10 @@ class AnalyzerPhpPure < Analyzer result end + + def allow_methods + ["GET", "POST", "PUT", "DELETE", "PATCH"] + end end def analyzer_php_pure(options : Hash(Symbol, String)) diff --git a/src/models/noir.cr b/src/models/noir.cr index e106fead..ae770302 100644 --- a/src/models/noir.cr +++ b/src/models/noir.cr @@ -124,7 +124,7 @@ class NoirRunner end end - if param.param_type == "body" + if param.param_type == "form" if first_form final_body += "#{param.name}=#{param.value}" first_form