Skip to content

Commit

Permalink
feat: Add dynamic path parameters to endpoint definitions
Browse files Browse the repository at this point in the history
- Introduce and standardize the inclusion of path parameters in endpoint definitions, enhancing the detailed configuration of API routes in tests.
  • Loading branch information
ksg97031 committed Sep 14, 2024
1 parent 26355a6 commit 81e8376
Show file tree
Hide file tree
Showing 32 changed files with 151 additions and 70 deletions.
10 changes: 5 additions & 5 deletions spec/functional_test/func_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion spec/functional_test/testers/crystal_kemal_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,5 @@ extected_endpoints = [

FunctionalTester.new("fixtures/crystal_kemal/", {
:techs => 1,
:endpoints => 6,
:endpoints => extected_endpoints.size,
}, extected_endpoints).test_all
2 changes: 1 addition & 1 deletion spec/functional_test/testers/crystal_lucky_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,5 @@ extected_endpoints = [

FunctionalTester.new("fixtures/crystal_lucky/", {
:techs => 1,
:endpoints => 5,
:endpoints => extected_endpoints.size,
}, extected_endpoints).test_all
6 changes: 4 additions & 2 deletions spec/functional_test/testers/cs_aspnet_mvc_spec.cr
Original file line number Diff line number Diff line change
@@ -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
2 changes: 1 addition & 1 deletion spec/functional_test/testers/elixir_phoenix_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,5 @@ extected_endpoints = [

FunctionalTester.new("fixtures/elixir_phoenix/", {
:techs => 1,
:endpoints => 8,
:endpoints => extected_endpoints.size,
}, extected_endpoints).test_all
2 changes: 1 addition & 1 deletion spec/functional_test/testers/file_based_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
2 changes: 1 addition & 1 deletion spec/functional_test/testers/go_beego_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,5 @@ extected_endpoints = [

FunctionalTester.new("fixtures/go_beego/", {
:techs => 1,
:endpoints => 2,
:endpoints => extected_endpoints.size,
}, extected_endpoints).test_all
2 changes: 1 addition & 1 deletion spec/functional_test/testers/go_echo_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,5 @@ extected_endpoints = [

FunctionalTester.new("fixtures/go_echo/", {
:techs => 1,
:endpoints => 9,
:endpoints => extected_endpoints.size,
}, extected_endpoints).test_all
2 changes: 1 addition & 1 deletion spec/functional_test/testers/go_fiber_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,5 @@ extected_endpoints = [

FunctionalTester.new("fixtures/go_fiber/", {
:techs => 1,
:endpoints => 6,
:endpoints => extected_endpoints.size,
}, extected_endpoints).test_all
2 changes: 1 addition & 1 deletion spec/functional_test/testers/go_gin_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,5 @@ extected_endpoints = [

FunctionalTester.new("fixtures/go_gin/", {
:techs => 1,
:endpoints => 6,
:endpoints => extected_endpoints.size,
}, extected_endpoints).test_all
2 changes: 1 addition & 1 deletion spec/functional_test/testers/har_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
2 changes: 1 addition & 1 deletion spec/functional_test/testers/java_armeria_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@ extected_endpoints = [

FunctionalTester.new("fixtures/java_armeria/", {
:techs => 1,
:endpoints => 6,
:endpoints => extected_endpoints.size,
}, extected_endpoints).test_all
20 changes: 10 additions & 10 deletions spec/functional_test/testers/java_spring_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -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"),
Expand Down
2 changes: 1 addition & 1 deletion spec/functional_test/testers/js_express_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,5 @@ extected_endpoints = [

FunctionalTester.new("fixtures/js_express/", {
:techs => 1,
:endpoints => 2,
:endpoints => extected_endpoints.size,
}, extected_endpoints).test_all
2 changes: 1 addition & 1 deletion spec/functional_test/testers/js_restify_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,5 @@ extected_endpoints = [

FunctionalTester.new("fixtures/js_restify/", {
:techs => 1,
:endpoints => 2,
:endpoints => extected_endpoints.size,
}, extected_endpoints).test_all
2 changes: 1 addition & 1 deletion spec/functional_test/testers/jsp_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,5 @@ extected_endpoints = [

FunctionalTester.new("fixtures/jsp/", {
:techs => 1,
:endpoints => 2,
:endpoints => extected_endpoints.size,
}, extected_endpoints).test_all
16 changes: 8 additions & 8 deletions spec/functional_test/testers/kotlin_spring_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -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")]),
Expand All @@ -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")]),
Expand All @@ -34,5 +34,5 @@ extected_endpoints = [

FunctionalTester.new("fixtures/kotlin_spring/", {
:techs => 1,
:endpoints => 20,
:endpoints => extected_endpoints.size,
}, extected_endpoints).test_all
3 changes: 2 additions & 1 deletion spec/functional_test/testers/multi_techs_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -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"),
]),
Expand Down
6 changes: 3 additions & 3 deletions spec/functional_test/testers/oas2_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -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
5 changes: 3 additions & 2 deletions spec/functional_test/testers/oas3_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,17 @@ 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"),
]),
]

FunctionalTester.new("fixtures/oas3/common/", {
:techs => 1,
:endpoints => 4,
:endpoints => extected_endpoints.size,
}, extected_endpoints).test_all

FunctionalTester.new("fixtures/oas3/no_servers/", {
Expand Down
2 changes: 1 addition & 1 deletion spec/functional_test/testers/php_pure_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,5 @@ extected_endpoints = [

FunctionalTester.new("fixtures/php_pure/", {
:techs => 1,
:endpoints => 6,
:endpoints => extected_endpoints.size,
}, extected_endpoints).test_all
41 changes: 32 additions & 9 deletions spec/functional_test/testers/python_django_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,37 @@ require "../func_spec.cr"

extected_endpoints = [
Endpoint.new("/", "GET"),
Endpoint.new("/page/<int:page>/", "GET"),
Endpoint.new("/article/<int:year>/<int:month>/<int:day>/<int:article_id>.html", "GET", [Param.new("comment_page", "", "query")]),
Endpoint.new("/category/<slug:category_name>.html", "GET"),
Endpoint.new("/category/<slug:category_name>/<int:page>.html", "GET"),
Endpoint.new("/author/<author_name>.html", "GET"),
Endpoint.new("/author/<author_name>/<int:page>.html", "GET"),
Endpoint.new("/tag/<slug:tag_name>.html", "GET"),
Endpoint.new("/tag/<slug:tag_name>/<int:page>.html", "GET"),
Endpoint.new("/page/<int:page>/", "GET", [
Param.new("page", "", "path")
]),
Endpoint.new("/article/<int:year>/<int:month>/<int:day>/<int:article_id>.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/<slug:category_name>.html", "GET", [
Param.new("category_name", "", "path")
]),
Endpoint.new("/category/<slug:category_name>/<int:page>.html", "GET", [
Param.new("category_name", "", "path"),
Param.new("page", "", "path")
]),
Endpoint.new("/author/<author_name>.html", "GET", [
Param.new("author_name", "", "path")
]),
Endpoint.new("/author/<author_name>/<int:page>.html", "GET", [
Param.new("author_name", "", "path"),
Param.new("page", "", "path")
]),
Endpoint.new("/tag/<slug:tag_name>.html", "GET", [
Param.new("tag_name", "", "path")
]),
Endpoint.new("/tag/<slug:tag_name>/<int:page>.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")]),
Expand All @@ -25,5 +48,5 @@ extected_endpoints = [

FunctionalTester.new("fixtures/python_django/", {
:techs => 1,
:endpoints => 20,
:endpoints => extected_endpoints.size,
}, extected_endpoints).test_all
4 changes: 2 additions & 2 deletions spec/functional_test/testers/python_fastapi_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -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")]),
Expand All @@ -11,5 +11,5 @@ extected_endpoints = [

FunctionalTester.new("fixtures/python_fastapi/", {
:techs => 1,
:endpoints => 6,
:endpoints => extected_endpoints.size,
}, extected_endpoints).test_all
2 changes: 1 addition & 1 deletion spec/functional_test/testers/python_flask_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,5 @@ extected_endpoints = [

FunctionalTester.new("fixtures/python_flask/", {
:techs => 1,
:endpoints => 8,
:endpoints => extected_endpoints.size,
}, extected_endpoints).test_all
3 changes: 2 additions & 1 deletion spec/functional_test/testers/raml_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -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"),
]),
Expand All @@ -13,5 +14,5 @@ extected_endpoints = [

FunctionalTester.new("fixtures/raml/", {
:techs => 1,
:endpoints => 2,
:endpoints => extected_endpoints.size,
}, extected_endpoints).test_all
8 changes: 4 additions & 4 deletions spec/functional_test/testers/ruby_hanami_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -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
2 changes: 1 addition & 1 deletion spec/functional_test/testers/ruby_rails_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,5 @@ extected_endpoints = [

FunctionalTester.new("fixtures/ruby_rails/", {
:techs => 1,
:endpoints => 6,
:endpoints => extected_endpoints.size,
}, extected_endpoints).test_all
2 changes: 1 addition & 1 deletion spec/functional_test/testers/rust_axum_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ extected_endpoints = [

FunctionalTester.new("fixtures/rust_axum/", {
:techs => 1,
:endpoints => 3,
:endpoints => extected_endpoints.size,
}, extected_endpoints).test_all
2 changes: 1 addition & 1 deletion spec/functional_test/testers/rust_rocket_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@ extected_endpoints = [

FunctionalTester.new("fixtures/rust_rocket/", {
:techs => 1,
:endpoints => 2,
:endpoints => extected_endpoints.size,
}, extected_endpoints).test_all
Loading

0 comments on commit 81e8376

Please sign in to comment.