diff --git a/spec/functional_test/func_spec.cr b/spec/functional_test/func_spec.cr index e1eb8183..888e2e47 100644 --- a/spec/functional_test/func_spec.cr +++ b/spec/functional_test/func_spec.cr @@ -95,17 +95,17 @@ class FunctionalTester if endpoint.params.size > 0 describe "check - params" do endpoint.params.each do |param| - found_param = found_endpoint.params.find { |p| p.name == param.name } - if found_param.nil? + found_params = found_endpoint.params.select { |found_p| found_p.name == param.name } + if found_params.size == 0 it "params nil" do false.should eq true end else it "check '#{param.name}' name " do - param.name.should eq found_param.name + param.name.should eq found_params[0].name end - it "check '#{param.name}' param_type " do - param.param_type.should eq found_param.param_type + it "check '#{param.name}' param_type '#{param.param_type}'" do + (found_params.any? { |found_p| found_p.param_type == param.param_type }).should be_true end end end diff --git a/spec/functional_test/testers/crystal_kemal_spec.cr b/spec/functional_test/testers/crystal_kemal_spec.cr index 7da85e4c..4780fd58 100644 --- a/spec/functional_test/testers/crystal_kemal_spec.cr +++ b/spec/functional_test/testers/crystal_kemal_spec.cr @@ -18,5 +18,5 @@ extected_endpoints = [ FunctionalTester.new("fixtures/crystal_kemal/", { :techs => 1, - :endpoints => 6, + :endpoints => extected_endpoints.size, }, extected_endpoints).test_all diff --git a/spec/functional_test/testers/crystal_lucky_spec.cr b/spec/functional_test/testers/crystal_lucky_spec.cr index 6a00f7eb..76d610b0 100644 --- a/spec/functional_test/testers/crystal_lucky_spec.cr +++ b/spec/functional_test/testers/crystal_lucky_spec.cr @@ -19,5 +19,5 @@ extected_endpoints = [ FunctionalTester.new("fixtures/crystal_lucky/", { :techs => 1, - :endpoints => 5, + :endpoints => extected_endpoints.size, }, extected_endpoints).test_all diff --git a/spec/functional_test/testers/cs_aspnet_mvc_spec.cr b/spec/functional_test/testers/cs_aspnet_mvc_spec.cr index c36f3f07..092155e2 100644 --- a/spec/functional_test/testers/cs_aspnet_mvc_spec.cr +++ b/spec/functional_test/testers/cs_aspnet_mvc_spec.cr @@ -1,11 +1,13 @@ require "../func_spec.cr" extected_endpoints = [ - Endpoint.new("/Open/Callback/{appId}", "GET"), + Endpoint.new("/Open/Callback/{appId}", "GET", [ + Param.new("appId", "", "path"), + ]), Endpoint.new("/data/default", "GET"), ] FunctionalTester.new("fixtures/aspnet_mvc/", { :techs => 1, - :endpoints => 2, + :endpoints => extected_endpoints.size, }, extected_endpoints).test_all diff --git a/spec/functional_test/testers/elixir_phoenix_spec.cr b/spec/functional_test/testers/elixir_phoenix_spec.cr index 34138804..f5d71053 100644 --- a/spec/functional_test/testers/elixir_phoenix_spec.cr +++ b/spec/functional_test/testers/elixir_phoenix_spec.cr @@ -13,5 +13,5 @@ extected_endpoints = [ FunctionalTester.new("fixtures/elixir_phoenix/", { :techs => 1, - :endpoints => 8, + :endpoints => extected_endpoints.size, }, extected_endpoints).test_all diff --git a/spec/functional_test/testers/file_based_spec.cr b/spec/functional_test/testers/file_based_spec.cr index d2fc72d8..bb9a56d4 100644 --- a/spec/functional_test/testers/file_based_spec.cr +++ b/spec/functional_test/testers/file_based_spec.cr @@ -12,7 +12,7 @@ extected_endpoints = [ tester = FunctionalTester.new("fixtures/file_based/", { :techs => 0, - :endpoints => 7, + :endpoints => extected_endpoints.size, }, extected_endpoints) tester.app.options["url"] = "https://www.hahwul.com" diff --git a/spec/functional_test/testers/go_beego_spec.cr b/spec/functional_test/testers/go_beego_spec.cr index a22c20f6..a879c263 100644 --- a/spec/functional_test/testers/go_beego_spec.cr +++ b/spec/functional_test/testers/go_beego_spec.cr @@ -10,5 +10,5 @@ extected_endpoints = [ FunctionalTester.new("fixtures/go_beego/", { :techs => 1, - :endpoints => 2, + :endpoints => extected_endpoints.size, }, extected_endpoints).test_all diff --git a/spec/functional_test/testers/go_echo_spec.cr b/spec/functional_test/testers/go_echo_spec.cr index 681db7c3..5e836c65 100644 --- a/spec/functional_test/testers/go_echo_spec.cr +++ b/spec/functional_test/testers/go_echo_spec.cr @@ -23,5 +23,5 @@ extected_endpoints = [ FunctionalTester.new("fixtures/go_echo/", { :techs => 1, - :endpoints => 9, + :endpoints => extected_endpoints.size, }, extected_endpoints).test_all diff --git a/spec/functional_test/testers/go_fiber_spec.cr b/spec/functional_test/testers/go_fiber_spec.cr index 02a26720..1090f1e6 100644 --- a/spec/functional_test/testers/go_fiber_spec.cr +++ b/spec/functional_test/testers/go_fiber_spec.cr @@ -18,5 +18,5 @@ extected_endpoints = [ FunctionalTester.new("fixtures/go_fiber/", { :techs => 1, - :endpoints => 6, + :endpoints => extected_endpoints.size, }, extected_endpoints).test_all diff --git a/spec/functional_test/testers/go_gin_spec.cr b/spec/functional_test/testers/go_gin_spec.cr index 7487a32f..420994e0 100644 --- a/spec/functional_test/testers/go_gin_spec.cr +++ b/spec/functional_test/testers/go_gin_spec.cr @@ -20,5 +20,5 @@ extected_endpoints = [ FunctionalTester.new("fixtures/go_gin/", { :techs => 1, - :endpoints => 6, + :endpoints => extected_endpoints.size, }, extected_endpoints).test_all diff --git a/spec/functional_test/testers/har_spec.cr b/spec/functional_test/testers/har_spec.cr index 2e71940e..8c743b20 100644 --- a/spec/functional_test/testers/har_spec.cr +++ b/spec/functional_test/testers/har_spec.cr @@ -12,7 +12,7 @@ extected_endpoints = [ instance = FunctionalTester.new("fixtures/har/", { :techs => 1, - :endpoints => 1, + :endpoints => extected_endpoints.size, }, extected_endpoints) instance.set_url "https://www.hahwul.com" diff --git a/spec/functional_test/testers/java_armeria_spec.cr b/spec/functional_test/testers/java_armeria_spec.cr index 4638f715..b5a6d756 100644 --- a/spec/functional_test/testers/java_armeria_spec.cr +++ b/spec/functional_test/testers/java_armeria_spec.cr @@ -11,5 +11,5 @@ extected_endpoints = [ FunctionalTester.new("fixtures/java_armeria/", { :techs => 1, - :endpoints => 6, + :endpoints => extected_endpoints.size, }, extected_endpoints).test_all diff --git a/spec/functional_test/testers/java_spring_spec.cr b/spec/functional_test/testers/java_spring_spec.cr index b478ffac..72de2d50 100644 --- a/spec/functional_test/testers/java_spring_spec.cr +++ b/spec/functional_test/testers/java_spring_spec.cr @@ -2,23 +2,23 @@ require "../func_spec.cr" extected_endpoints = [ # MyRoutingConfiguration.java - Endpoint.new("/{user}", "GET"), - Endpoint.new("/{user}/customers", "GET"), - Endpoint.new("/{user}/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_.~", "GET"), - Endpoint.new("/{user}", "DELETE"), - Endpoint.new("/{user}", "POST"), - Endpoint.new("/{user}", "PUT"), + Endpoint.new("/{user}", "GET", [Param.new("user", "", "path")]), + Endpoint.new("/{user}/customers", "GET", [Param.new("user", "", "path")]), + Endpoint.new("/{user}/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_.~", "GET", [Param.new("user", "", "path")]), + Endpoint.new("/{user}", "DELETE", [Param.new("user", "", "path")]), + Endpoint.new("/{user}", "POST", [Param.new("user", "", "path")]), + Endpoint.new("/{user}", "PUT", [Param.new("user", "", "path")]), # QuoteRouter.java Endpoint.new("/hello", "GET"), Endpoint.new("/echo", "POST"), Endpoint.new("/quotes", "GET"), Endpoint.new("/quotes/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_.~", "GET"), # ItemController.java - Endpoint.new("/items/{id}", "GET"), - Endpoint.new("/items/json/{id}", "GET"), + Endpoint.new("/items/{id}", "GET", [Param.new("id", "", "path")]), + Endpoint.new("/items/json/{id}", "GET", [Param.new("id", "", "path")]), Endpoint.new("/items", "POST", [Param.new("id", "", "form"), Param.new("name", "", "form")]), - Endpoint.new("/items/update/{id}", "PUT", [Param.new("id", "", "json"), Param.new("name", "", "json")]), - Endpoint.new("/items/delete/{id}", "DELETE"), + Endpoint.new("/items/update/{id}", "PUT", [Param.new("id", "", "path"), Param.new("id", "", "json"), Param.new("name", "", "json")]), + Endpoint.new("/items/delete/{id}", "DELETE", [Param.new("id", "", "path")]), Endpoint.new("/items/requestmap/put", "PUT"), Endpoint.new("/items/requestmap/delete", "DELETE"), Endpoint.new("/items/multiple/methods", "GET"), diff --git a/spec/functional_test/testers/js_express_spec.cr b/spec/functional_test/testers/js_express_spec.cr index 99f21225..c9202ada 100644 --- a/spec/functional_test/testers/js_express_spec.cr +++ b/spec/functional_test/testers/js_express_spec.cr @@ -13,5 +13,5 @@ extected_endpoints = [ FunctionalTester.new("fixtures/js_express/", { :techs => 1, - :endpoints => 2, + :endpoints => extected_endpoints.size, }, extected_endpoints).test_all diff --git a/spec/functional_test/testers/js_restify_spec.cr b/spec/functional_test/testers/js_restify_spec.cr index 8af6a52d..dab97c38 100644 --- a/spec/functional_test/testers/js_restify_spec.cr +++ b/spec/functional_test/testers/js_restify_spec.cr @@ -13,5 +13,5 @@ extected_endpoints = [ FunctionalTester.new("fixtures/js_restify/", { :techs => 1, - :endpoints => 2, + :endpoints => extected_endpoints.size, }, extected_endpoints).test_all diff --git a/spec/functional_test/testers/jsp_spec.cr b/spec/functional_test/testers/jsp_spec.cr index 43b7d0ba..0ca45a16 100644 --- a/spec/functional_test/testers/jsp_spec.cr +++ b/spec/functional_test/testers/jsp_spec.cr @@ -10,5 +10,5 @@ extected_endpoints = [ FunctionalTester.new("fixtures/jsp/", { :techs => 1, - :endpoints => 2, + :endpoints => extected_endpoints.size, }, extected_endpoints).test_all diff --git a/spec/functional_test/testers/kotlin_spring_spec.cr b/spec/functional_test/testers/kotlin_spring_spec.cr index b4c8f0a5..da0f49a0 100644 --- a/spec/functional_test/testers/kotlin_spring_spec.cr +++ b/spec/functional_test/testers/kotlin_spring_spec.cr @@ -2,9 +2,9 @@ require "../func_spec.cr" extected_endpoints = [ Endpoint.new("/api/article/", "GET"), - Endpoint.new("/api/article/{slug}", "GET"), + Endpoint.new("/api/article/{slug}", "GET", [Param.new("slug", "", "path")]), Endpoint.new("/api/user/", "GET"), - Endpoint.new("/api/user/{login}", "GET", [Param.new("lorem", "ipsum", "cookie")]), + Endpoint.new("/api/user/{login}", "GET", [Param.new("login", "", "path"), Param.new("lorem", "ipsum", "cookie")]), Endpoint.new("/v1", "GET", [Param.new("version", "1", "query")]), Endpoint.new("/v2", "GET", [Param.new("version", "2", "query")]), Endpoint.new("/version2", "GET", [Param.new("version", "2", "query")]), @@ -21,11 +21,11 @@ extected_endpoints = [ Param.new("deleted", "", "json"), ]), Endpoint.new("/article2", "POST", [Param.new("title", "", "query"), Param.new("content", "", "query")]), - Endpoint.new("/article/{slug}", "GET", [Param.new("preview", "false", "query")]), - Endpoint.new("/article/{id}", "PUT", [Param.new("title", "", "json"), Param.new("content", "", "json")]), - Endpoint.new("/article/{id}", "DELETE", [Param.new("soft", "", "form"), Param.new("X-Custom-Header", "soft-delete", "header")]), - Endpoint.new("/article2/{id}", "DELETE"), - Endpoint.new("/article/{id}", "PATCH", [Param.new("title", "", "json"), Param.new("content", "", "json")]), + Endpoint.new("/article/{slug}", "GET", [Param.new("slug", "", "path"), Param.new("preview", "false", "query")]), + Endpoint.new("/article/{id}", "PUT", [Param.new("id", "", "path"), Param.new("title", "", "json"), Param.new("content", "", "json")]), + Endpoint.new("/article/{id}", "DELETE", [Param.new("id", "", "path"), Param.new("soft", "", "form"), Param.new("X-Custom-Header", "soft-delete", "header")]), + Endpoint.new("/article2/{id}", "DELETE", [Param.new("id", "", "path")]), + Endpoint.new("/article/{id}", "PATCH", [Param.new("id", "", "path"), Param.new("title", "", "json"), Param.new("content", "", "json")]), Endpoint.new("/request", "GET", [Param.new("type", "basic", "query"), Param.new("X-Custom-Header", "basic", "header")]), Endpoint.new("/request", "POST", [Param.new("type", "basic", "query"), Param.new("X-Custom-Header", "basic", "header")]), Endpoint.new("/request2", "GET", [Param.new("type", "advanced", "query"), Param.new("X-Custom-Header", "advanced", "header")]), @@ -34,5 +34,5 @@ extected_endpoints = [ FunctionalTester.new("fixtures/kotlin_spring/", { :techs => 1, - :endpoints => 20, + :endpoints => extected_endpoints.size, }, extected_endpoints).test_all diff --git a/spec/functional_test/testers/multi_techs_spec.cr b/spec/functional_test/testers/multi_techs_spec.cr index 692d9763..d8ec8527 100644 --- a/spec/functional_test/testers/multi_techs_spec.cr +++ b/spec/functional_test/testers/multi_techs_spec.cr @@ -15,8 +15,9 @@ extected_endpoints = [ Endpoint.new("/pets", "POST", [ Param.new("name", "", "json"), ]), - Endpoint.new("/pets/{petId}", "GET"), + Endpoint.new("/pets/{petId}", "GET", [Param.new("petId", "", "path")]), Endpoint.new("/pets/{petId}", "PUT", [ + Param.new("petId", "", "path"), Param.new("breed", "", "json"), Param.new("name", "", "json"), ]), diff --git a/spec/functional_test/testers/oas2_spec.cr b/spec/functional_test/testers/oas2_spec.cr index 91899c2c..be279b27 100644 --- a/spec/functional_test/testers/oas2_spec.cr +++ b/spec/functional_test/testers/oas2_spec.cr @@ -3,11 +3,11 @@ require "../func_spec.cr" extected_endpoints = [ Endpoint.new("/v1/pets", "GET"), Endpoint.new("/v1/pets", "POST", [Param.new("pet", "", "json")]), - Endpoint.new("/v1/pets/{petId}", "GET"), - Endpoint.new("/v1/pets/{petId}", "PUT", [Param.new("pet", "", "json")]), + Endpoint.new("/v1/pets/{petId}", "GET", [Param.new("petId", "", "path")]), + Endpoint.new("/v1/pets/{petId}", "PUT", [Param.new("petId", "", "path"), Param.new("pet", "", "json")]), ] FunctionalTester.new("fixtures/oas2/", { :techs => 1, - :endpoints => 4, + :endpoints => extected_endpoints.size, }, extected_endpoints).test_all diff --git a/spec/functional_test/testers/oas3_spec.cr b/spec/functional_test/testers/oas3_spec.cr index 7eb3b84b..524b6791 100644 --- a/spec/functional_test/testers/oas3_spec.cr +++ b/spec/functional_test/testers/oas3_spec.cr @@ -9,8 +9,9 @@ extected_endpoints = [ Endpoint.new("/pets", "POST", [ Param.new("name", "", "json"), ]), - Endpoint.new("/pets/{petId}", "GET"), + Endpoint.new("/pets/{petId}", "GET", [Param.new("petId", "", "path")]), Endpoint.new("/pets/{petId}", "PUT", [ + Param.new("petId", "", "path"), Param.new("breed", "", "json"), Param.new("name", "", "json"), ]), @@ -18,7 +19,7 @@ extected_endpoints = [ FunctionalTester.new("fixtures/oas3/common/", { :techs => 1, - :endpoints => 4, + :endpoints => extected_endpoints.size, }, extected_endpoints).test_all FunctionalTester.new("fixtures/oas3/no_servers/", { diff --git a/spec/functional_test/testers/php_pure_spec.cr b/spec/functional_test/testers/php_pure_spec.cr index e1da60e8..63dfa042 100644 --- a/spec/functional_test/testers/php_pure_spec.cr +++ b/spec/functional_test/testers/php_pure_spec.cr @@ -17,5 +17,5 @@ extected_endpoints = [ FunctionalTester.new("fixtures/php_pure/", { :techs => 1, - :endpoints => 6, + :endpoints => extected_endpoints.size, }, extected_endpoints).test_all diff --git a/spec/functional_test/testers/python_django_spec.cr b/spec/functional_test/testers/python_django_spec.cr index 16490d86..8e987b30 100644 --- a/spec/functional_test/testers/python_django_spec.cr +++ b/spec/functional_test/testers/python_django_spec.cr @@ -2,14 +2,37 @@ require "../func_spec.cr" extected_endpoints = [ Endpoint.new("/", "GET"), - Endpoint.new("/page//", "GET"), - Endpoint.new("/article////.html", "GET", [Param.new("comment_page", "", "query")]), - Endpoint.new("/category/.html", "GET"), - Endpoint.new("/category//.html", "GET"), - Endpoint.new("/author/.html", "GET"), - Endpoint.new("/author//.html", "GET"), - Endpoint.new("/tag/.html", "GET"), - Endpoint.new("/tag//.html", "GET"), + Endpoint.new("/page//", "GET", [ + Param.new("page", "", "path") + ]), + Endpoint.new("/article////.html", "GET", [ + Param.new("year", "", "path"), + Param.new("month", "", "path"), + Param.new("day", "", "path"), + Param.new("article_id", "", "path"), + Param.new("comment_page", "", "query") + ]), + Endpoint.new("/category/.html", "GET", [ + Param.new("category_name", "", "path") + ]), + Endpoint.new("/category//.html", "GET", [ + Param.new("category_name", "", "path"), + Param.new("page", "", "path") + ]), + Endpoint.new("/author/.html", "GET", [ + Param.new("author_name", "", "path") + ]), + Endpoint.new("/author//.html", "GET", [ + Param.new("author_name", "", "path"), + Param.new("page", "", "path") + ]), + Endpoint.new("/tag/.html", "GET", [ + Param.new("tag_name", "", "path") + ]), + Endpoint.new("/tag//.html", "GET", [ + Param.new("tag_name", "", "path"), + Param.new("page", "", "path") + ]), Endpoint.new("/archives.html", "GET"), Endpoint.new("/links.html", "GET"), Endpoint.new("/upload", "GET", [Param.new("sign", "", "query"), Param.new("sign", "", "query"), Param.new("X_FORWARDED_FOR", "", "header"), Param.new("X_REAL_IP", "", "header")]), @@ -25,5 +48,5 @@ extected_endpoints = [ FunctionalTester.new("fixtures/python_django/", { :techs => 1, - :endpoints => 20, + :endpoints => extected_endpoints.size, }, extected_endpoints).test_all diff --git a/spec/functional_test/testers/python_fastapi_spec.cr b/spec/functional_test/testers/python_fastapi_spec.cr index c03a28dd..dc1f530d 100644 --- a/spec/functional_test/testers/python_fastapi_spec.cr +++ b/spec/functional_test/testers/python_fastapi_spec.cr @@ -2,7 +2,7 @@ require "../func_spec.cr" extected_endpoints = [ Endpoint.new("/query/param-required/int", "GET", [Param.new("query", "", "query")]), - Endpoint.new("/items/{item_id}", "PUT", [Param.new("name", "", "form"), Param.new("size", "", "form")]), + Endpoint.new("/items/{item_id}", "PUT", [Param.new("item_id", "", "path"), Param.new("name", "", "form"), Param.new("size", "", "form")]), Endpoint.new("/hidden_header", "GET", [Param.new("hidden_header", "", "header")]), Endpoint.new("/cookie_examples/", "GET", [Param.new("data", "", "cookie")]), Endpoint.new("/dummypath", "POST", [Param.new("dummy", "", "json")]), @@ -11,5 +11,5 @@ extected_endpoints = [ FunctionalTester.new("fixtures/python_fastapi/", { :techs => 1, - :endpoints => 6, + :endpoints => extected_endpoints.size, }, extected_endpoints).test_all diff --git a/spec/functional_test/testers/python_flask_spec.cr b/spec/functional_test/testers/python_flask_spec.cr index 79d91b37..27678c12 100644 --- a/spec/functional_test/testers/python_flask_spec.cr +++ b/spec/functional_test/testers/python_flask_spec.cr @@ -13,5 +13,5 @@ extected_endpoints = [ FunctionalTester.new("fixtures/python_flask/", { :techs => 1, - :endpoints => 8, + :endpoints => extected_endpoints.size, }, extected_endpoints).test_all diff --git a/spec/functional_test/testers/raml_spec.cr b/spec/functional_test/testers/raml_spec.cr index 59d8d377..c70a5852 100644 --- a/spec/functional_test/testers/raml_spec.cr +++ b/spec/functional_test/testers/raml_spec.cr @@ -2,6 +2,7 @@ require "../func_spec.cr" extected_endpoints = [ Endpoint.new("/users/{userId}", "GET", [ + Param.new("userId", "", "path"), Param.new("userId", "", "query"), Param.new("Authorization", "", "header"), ]), @@ -13,5 +14,5 @@ extected_endpoints = [ FunctionalTester.new("fixtures/raml/", { :techs => 1, - :endpoints => 2, + :endpoints => extected_endpoints.size, }, extected_endpoints).test_all diff --git a/spec/functional_test/testers/ruby_hanami_spec.cr b/spec/functional_test/testers/ruby_hanami_spec.cr index 545f35b9..067d84ce 100644 --- a/spec/functional_test/testers/ruby_hanami_spec.cr +++ b/spec/functional_test/testers/ruby_hanami_spec.cr @@ -2,14 +2,14 @@ require "../func_spec.cr" extected_endpoints = [ Endpoint.new("/books", "GET"), - Endpoint.new("/books/:id", "GET"), + Endpoint.new("/books/:id", "GET", [Param.new("id", "", "path")]), Endpoint.new("/books/new", "GET"), Endpoint.new("/books", "POST"), - Endpoint.new("/books/:id", "PATCH"), - Endpoint.new("/books/:id", "DELETE"), + Endpoint.new("/books/:id", "PATCH", [Param.new("id", "", "path")]), + Endpoint.new("/books/:id", "DELETE", [Param.new("id", "", "path")]), ] FunctionalTester.new("fixtures/ruby_hanami/", { :techs => 1, - :endpoints => 6, + :endpoints => extected_endpoints.size, }, extected_endpoints).test_all diff --git a/spec/functional_test/testers/ruby_rails_spec.cr b/spec/functional_test/testers/ruby_rails_spec.cr index e7014369..ce938ec7 100644 --- a/spec/functional_test/testers/ruby_rails_spec.cr +++ b/spec/functional_test/testers/ruby_rails_spec.cr @@ -26,5 +26,5 @@ extected_endpoints = [ FunctionalTester.new("fixtures/ruby_rails/", { :techs => 1, - :endpoints => 6, + :endpoints => extected_endpoints.size, }, extected_endpoints).test_all diff --git a/spec/functional_test/testers/rust_axum_spec.cr b/spec/functional_test/testers/rust_axum_spec.cr index f40ec78e..fe7e2b38 100644 --- a/spec/functional_test/testers/rust_axum_spec.cr +++ b/spec/functional_test/testers/rust_axum_spec.cr @@ -8,5 +8,5 @@ extected_endpoints = [ FunctionalTester.new("fixtures/rust_axum/", { :techs => 1, - :endpoints => 3, + :endpoints => extected_endpoints.size, }, extected_endpoints).test_all diff --git a/spec/functional_test/testers/rust_rocket_spec.cr b/spec/functional_test/testers/rust_rocket_spec.cr index fb0f1efd..e6478313 100644 --- a/spec/functional_test/testers/rust_rocket_spec.cr +++ b/spec/functional_test/testers/rust_rocket_spec.cr @@ -7,5 +7,5 @@ extected_endpoints = [ FunctionalTester.new("fixtures/rust_rocket/", { :techs => 1, - :endpoints => 2, + :endpoints => extected_endpoints.size, }, extected_endpoints).test_all diff --git a/src/models/noir.cr b/src/models/noir.cr index 0c4191da..4d671703 100644 --- a/src/models/noir.cr +++ b/src/models/noir.cr @@ -92,6 +92,7 @@ class NoirRunner @endpoints = analysis_endpoints options, @techs, @logger optimize_endpoints combine_url_and_endpoints + add_path_parameters # Run tagger if @options["all_taggers"] == "yes" @@ -180,6 +181,46 @@ class NoirRunner end end + def add_path_parameters + @logger.info "Adding path parameters by URL" + final = [] of Endpoint + + @endpoints.each do |endpoint| + new_endpoint = endpoint + + scans = endpoint.url.scan(/\/\{([^}]+)\}/).flatten + scans.each do |match| + param = match[1].split(":")[-1] + if @options["set_pvalue"] != "" + new_endpoint.url = new_endpoint.url.gsub("{#{param}}", @options["set_pvalue"]) + end + new_endpoint.params << Param.new(param, "", "path") + end + + scans = endpoint.url.scan(/\/:([^\/]+)/).flatten + scans.each do |match| + param = match[1].split(":")[-1] + if @options["set_pvalue"] != "" + new_endpoint.url = new_endpoint.url.gsub(":#{match[1]}", @options["set_pvalue"]) + end + new_endpoint.params << Param.new(param, "", "path") + end + + scans = endpoint.url.scan(/\/<([^>]+)>/).flatten + scans.each do |match| + param = match[1].split(":")[-1] + if @options["set_pvalue"] != "" + new_endpoint.url = new_endpoint.url.gsub("<#{match[1]}>", @options["set_pvalue"]) + end + new_endpoint.params << Param.new(param, "", "path") + end + + final << new_endpoint + end + + @endpoints = final + end + def deliver if @send_proxy != "" @logger.info "Sending requests with proxy #{@send_proxy}." diff --git a/src/models/output_builder.cr b/src/models/output_builder.cr index 1a2cfdb7..891f70c0 100644 --- a/src/models/output_builder.cr +++ b/src/models/output_builder.cr @@ -36,6 +36,7 @@ class OutputBuilder final_url = url final_body = "" + final_path_params = [] of String final_headers = [] of String final_cookies = [] of String final_tags = [] of String @@ -69,6 +70,10 @@ class OutputBuilder end end + if param.param_type == "path" + final_path_params << "#{param.name}" + end + if param.param_type == "header" final_headers << "#{param.name}: #{param.value}" end @@ -103,17 +108,19 @@ class OutputBuilder @logger.debug "Baked endpoints" @logger.debug " + Final URL: #{final_url}" + @logger.debug " + Path Params: #{final_path_params}" @logger.debug " + Body: #{final_body}" @logger.debug " + Headers: #{final_headers}" @logger.debug " + Cookies: #{final_cookies}" @logger.debug " + Tags: #{final_tags}" { - url: final_url, - body: final_body, - header: final_headers, - cookie: final_cookies, - tags: final_tags.uniq, + url: final_url, + body: final_body, + path_param: final_path_params, + header: final_headers, + cookie: final_cookies, + tags: final_tags.uniq, body_type: is_json ? "json" : "form", } end diff --git a/src/output_builder/common.cr b/src/output_builder/common.cr index 488feb81..1a79e611 100644 --- a/src/output_builder/common.cr +++ b/src/output_builder/common.cr @@ -43,6 +43,11 @@ class OutputBuilderCommon < OutputBuilder end end + if baked[:path_param].size > 0 + r_path_param = baked[:path_param].join(", ").colorize(:cyan).toggle(@is_color) + r_buffer += "\n ○ path: #{r_path_param}" + end + if baked[:body] != "" r_body = baked[:body].colorize(:cyan).toggle(@is_color) r_buffer += "\n ○ body: #{r_body}"