forked from loafle/openapi-generator-original
add validation for query enum parameters in r client (#13415)
This commit is contained in:
parent
7ff47dc0bf
commit
37fb856775
@ -385,15 +385,62 @@
|
||||
{{#isExplode}}
|
||||
# explore
|
||||
for (query_item in `{{{paramName}}}`) {
|
||||
{{#items}}
|
||||
{{#isEnum}}
|
||||
# validate enum values
|
||||
if (!(query_item %in% c({{#_enum}}"{{{.}}}"{{^-last}}, {{/-last}}{{/_enum}}))) {
|
||||
{{#useDefaultExceptionHandling}}
|
||||
stop("Invalid value for {{{paramName}}} when calling {{classname}}${{operationId}}. Must be {{_enum}}.")
|
||||
{{/useDefaultExceptionHandling}}
|
||||
{{#useRlangExceptionHandling}}
|
||||
rlang::abort(message = "Invalid value for `{{paramName}}` when calling {{classname}}${{operationId}}. Must be {{_enum}}.",
|
||||
.subclass = "ApiException",
|
||||
ApiException = ApiException$new(status = 0,
|
||||
reason = "Invalid value for `{{paramName}}` when calling {{classname}}${{operationId}}. Must be {{_enum}}."))
|
||||
{{/useRlangExceptionHandling}}
|
||||
}
|
||||
{{/isEnum}}
|
||||
{{/items}}
|
||||
query_params[["{{{baseName}}}"]] <- c(query_params[["{{{baseName}}}"]], list(`{{{baseName}}}` = query_item))
|
||||
}
|
||||
{{/isExplode}}
|
||||
{{^isExplode}}
|
||||
# no explore
|
||||
{{#items}}
|
||||
{{#isEnum}}
|
||||
# validate enum values
|
||||
for (query_item in `{{{paramName}}}`) {
|
||||
if (!(query_item %in% c({{#_enum}}"{{{.}}}"{{^-last}}, {{/-last}}{{/_enum}}))) {
|
||||
{{#useDefaultExceptionHandling}}
|
||||
stop("Invalid value for {{{paramName}}} when calling {{classname}}${{operationId}}. Must be {{_enum}}.")
|
||||
{{/useDefaultExceptionHandling}}
|
||||
{{#useRlangExceptionHandling}}
|
||||
rlang::abort(message = "Invalid value for `{{paramName}}` when calling {{classname}}${{operationId}}. Must be {{_enum}}.",
|
||||
.subclass = "ApiException",
|
||||
ApiException = ApiException$new(status = 0,
|
||||
reason = "Invalid value for `{{paramName}}` when calling {{classname}}${{operationId}}. Must be {{_enum}}."))
|
||||
{{/useRlangExceptionHandling}}
|
||||
}
|
||||
}
|
||||
{{/isEnum}}
|
||||
{{/items}}
|
||||
query_params[["{{{baseName}}}"]] <- I(paste(lapply(`{{{paramName}}}`, URLencode, reserved = TRUE), collapse = ","))
|
||||
{{/isExplode}}
|
||||
{{/isArray}}
|
||||
{{^isArray}}
|
||||
{{#isEnum}}
|
||||
if (!(`{{paramName}}` %in% c({{#_enum}}"{{{.}}}"{{^-last}}, {{/-last}}{{/_enum}}))) {
|
||||
{{#useDefaultExceptionHandling}}
|
||||
stop("Invalid value for {{{paramName}}} when calling {{classname}}${{operationId}}. Must be {{_enum}}.")
|
||||
{{/useDefaultExceptionHandling}}
|
||||
{{#useRlangExceptionHandling}}
|
||||
rlang::abort(message = "Invalid value for `{{paramName}}` when calling {{classname}}${{operationId}}. Must be {{_enum}}.",
|
||||
.subclass = "ApiException",
|
||||
ApiException = ApiException$new(status = 0,
|
||||
reason = "Invalid value for `{{paramName}}` when calling {{classname}}${{operationId}}. Must be {{_enum}}."))
|
||||
{{/useRlangExceptionHandling}}
|
||||
}
|
||||
{{/isEnum}}
|
||||
query_params[["{{baseName}}"]] <- `{{paramName}}`
|
||||
{{/isArray}}
|
||||
|
||||
|
@ -943,6 +943,13 @@ PetApi <- R6::R6Class(
|
||||
|
||||
# explore
|
||||
for (query_item in `status`) {
|
||||
# validate enum values
|
||||
if (!(query_item %in% c("available", "pending", "sold"))) {
|
||||
rlang::abort(message = "Invalid value for `status` when calling PetApi$find_pets_by_status. Must be [available, pending, sold].",
|
||||
.subclass = "ApiException",
|
||||
ApiException = ApiException$new(status = 0,
|
||||
reason = "Invalid value for `status` when calling PetApi$find_pets_by_status. Must be [available, pending, sold]."))
|
||||
}
|
||||
query_params[["status"]] <- c(query_params[["status"]], list(`status` = query_item))
|
||||
}
|
||||
|
||||
|
@ -235,6 +235,16 @@ test_that("GetPetById with data_file", {
|
||||
})
|
||||
|
||||
test_that("find_pets_by_status", {
|
||||
# input invalid
|
||||
var_status <- c("something") # array[character] | Tags to filter by
|
||||
result <- tryCatch(pet_api$find_pets_by_status(var_status),
|
||||
ApiException = function(ex) ex
|
||||
)
|
||||
|
||||
expect_equal(result$ApiException$reason, "Invalid value for `status` when calling PetApi$find_pets_by_status. Must be [available, pending, sold].")
|
||||
})
|
||||
|
||||
test_that("find_pets_by_tags", {
|
||||
pet_tag_test <- Pet$new("name_test",
|
||||
photoUrls = list("photo_test", "second test"),
|
||||
category = Category$new(id = 4455, name = "test_cat"),
|
||||
|
@ -943,6 +943,13 @@ PetApi <- R6::R6Class(
|
||||
|
||||
# explore
|
||||
for (query_item in `status`) {
|
||||
# validate enum values
|
||||
if (!(query_item %in% c("available", "pending", "sold"))) {
|
||||
rlang::abort(message = "Invalid value for `status` when calling PetApi$find_pets_by_status. Must be [available, pending, sold].",
|
||||
.subclass = "ApiException",
|
||||
ApiException = ApiException$new(status = 0,
|
||||
reason = "Invalid value for `status` when calling PetApi$find_pets_by_status. Must be [available, pending, sold]."))
|
||||
}
|
||||
query_params[["status"]] <- c(query_params[["status"]], list(`status` = query_item))
|
||||
}
|
||||
|
||||
|
@ -943,6 +943,13 @@ PetApi <- R6::R6Class(
|
||||
|
||||
# explore
|
||||
for (query_item in `status`) {
|
||||
# validate enum values
|
||||
if (!(query_item %in% c("available", "pending", "sold"))) {
|
||||
rlang::abort(message = "Invalid value for `status` when calling PetApi$FindPetsByStatus. Must be [available, pending, sold].",
|
||||
.subclass = "ApiException",
|
||||
ApiException = ApiException$new(status = 0,
|
||||
reason = "Invalid value for `status` when calling PetApi$FindPetsByStatus. Must be [available, pending, sold]."))
|
||||
}
|
||||
query_params[["status"]] <- c(query_params[["status"]], list(`status` = query_item))
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user