diff --git a/.github/workflows/samples-php-servers-phpstan.yaml b/.github/workflows/samples-php-servers-phpstan.yaml new file mode 100644 index 000000000000..5e72d5fa59cc --- /dev/null +++ b/.github/workflows/samples-php-servers-phpstan.yaml @@ -0,0 +1,40 @@ +name: Samples php-laravel 8.x + +on: + push: + paths: + - samples/server/petstore/php-laravel/** + - samples/server/petstore/php-laravel-issue-21334/** + pull_request: + paths: + - samples/server/petstore/php-laravel/** + - samples/server/petstore/php-laravel-issue-21334/** +jobs: + build: + name: Build + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + php: + - "8.3" + - "8.4" + sample: + # servers + # comment out due to errors + #- samples/server/petstore/php-laravel/ + - samples/server/petstore/php-laravel-issue-21334/ + steps: + - uses: actions/checkout@v7 + - name: Setup PHP with tools + uses: shivammathur/setup-php@v2 + with: + php-version: "${{ matrix.php }}" + - name: composer install + working-directory: ${{ matrix.sample }} + run: composer install + - name: phpstan + working-directory: ${{ matrix.sample }} + run: | + composer require --dev phpstan/phpstan + vendor/bin/phpstan analyse Api Http Model routes.php diff --git a/.github/workflows/samples-php8.yaml b/.github/workflows/samples-php8.yaml index f65255865fcb..210180a9dc60 100644 --- a/.github/workflows/samples-php8.yaml +++ b/.github/workflows/samples-php8.yaml @@ -5,14 +5,10 @@ on: paths: - samples/server/petstore/php-symfony/SymfonyBundle-php/** - samples/server/petstore/php-flight/** - - samples/server/petstore/php-laravel/** - - samples/server/petstore/php-laravel-issue-21334/** pull_request: paths: - samples/server/petstore/php-symfony/SymfonyBundle-php/** - samples/server/petstore/php-flight/** - - samples/server/petstore/php-laravel/** - - samples/server/petstore/php-laravel-issue-21334/** jobs: build: name: Build PHP projects @@ -29,8 +25,6 @@ jobs: # servers - samples/server/petstore/php-symfony/SymfonyBundle-php/ - samples/server/petstore/php-flight/ - - samples/server/petstore/php-laravel/ - - samples/server/petstore/php-laravel-issue-21334/ steps: - uses: actions/checkout@v7 - name: Setup PHP with tools diff --git a/bin/configs/php-laravel.yaml b/bin/configs/php-laravel.yaml index 88d173743261..2218c5fde703 100644 --- a/bin/configs/php-laravel.yaml +++ b/bin/configs/php-laravel.yaml @@ -1,6 +1,6 @@ generatorName: php-laravel outputDir: samples/server/petstore/php-laravel -inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml +inputSpec: modules/openapi-generator/src/test/resources/3_0/php-laravel/petstore-with-fake-endpoints-models-for-testing.yaml templateDir: modules/openapi-generator/src/main/resources/php-laravel gitUserId: openapitools gitRepoId: petstore diff --git a/modules/openapi-generator/src/main/resources/php-laravel/composer.mustache b/modules/openapi-generator/src/main/resources/php-laravel/composer.mustache index 0592ec1a4240..bd2a0102269a 100644 --- a/modules/openapi-generator/src/main/resources/php-laravel/composer.mustache +++ b/modules/openapi-generator/src/main/resources/php-laravel/composer.mustache @@ -24,12 +24,12 @@ } ], "require": { - "php": "^8.1", - "laravel/framework": "^10.0", + "php": "^8.3", + "laravel/framework": "^13.0", "crell/serde": "^1.0" }, "require-dev": { - "phpunit/phpunit": "^9.5" + "phpunit/phpunit": "^12.0" }, "autoload": { "psr-4": { diff --git a/modules/openapi-generator/src/test/resources/3_0/php-laravel/petstore-with-fake-endpoints-models-for-testing.yaml b/modules/openapi-generator/src/test/resources/3_0/php-laravel/petstore-with-fake-endpoints-models-for-testing.yaml new file mode 100644 index 000000000000..129129a4d916 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/php-laravel/petstore-with-fake-endpoints-models-for-testing.yaml @@ -0,0 +1,2064 @@ +openapi: 3.0.0 +info: + description: >- + This spec is mainly for testing Petstore server and contains fake endpoints, + models. Please do not use this for any other purpose. Special characters: " + \ + version: 1.0.0 + title: OpenAPI Petstore + license: + name: Apache-2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0.html' +tags: + - name: pet + description: Everything about your Pets + - name: store + description: Access to Petstore orders + - name: user + description: Operations about user +paths: + /foo: + get: + responses: + default: + description: response + content: + application/json: + schema: + type: object + properties: + string: + $ref: '#/components/schemas/Foo' + /pet: + servers: + - url: 'http://petstore.swagger.io/v2' + - url: 'http://path-server-test.petstore.local/v2' + - url: 'http://{server}.swagger.io:{port}/v2' + description: test server with variables + variables: + server: + description: target server + enum: + - 'petstore' + - 'qa-petstore' + - 'dev-petstore' + default: 'petstore' + port: + enum: + - 80 + - 8080 + default: 80 + post: + tags: + - pet + summary: Add a new pet to the store + description: '' + operationId: addPet + responses: + '200': + description: Successful operation + '405': + description: Invalid input + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + requestBody: + $ref: '#/components/requestBodies/Pet' + put: + tags: + - pet + summary: Update an existing pet + description: '' + operationId: updatePet + x-webclient-blocking: true + responses: + '200': + description: Successful operation + '400': + description: Invalid ID supplied + '404': + description: Pet not found + '405': + description: Validation exception + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + requestBody: + $ref: '#/components/requestBodies/Pet' + /pet/findByStatus: + get: + tags: + - pet + summary: Finds Pets by status + description: Multiple status values can be provided with comma separated strings + operationId: findPetsByStatus + x-webclient-blocking: true + parameters: + - name: status + in: query + description: Status values that need to be considered for filter + required: true + style: form + explode: false + deprecated: true + schema: + type: array + items: + type: string + enum: + - available + - pending + - sold + default: available + responses: + '200': + description: successful operation + content: + application/xml: + schema: + type: array + items: + $ref: '#/components/schemas/Pet' + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Pet' + '400': + description: Invalid status value + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + /pet/findByTags: + get: + tags: + - pet + summary: Finds Pets by tags + description: >- + Multiple tags can be provided with comma separated strings. Use tag1, + tag2, tag3 for testing. + operationId: findPetsByTags + x-webclient-blocking: true + parameters: + - name: tags + in: query + description: Tags to filter by + required: true + style: form + explode: false + schema: + type: array + items: + type: string + uniqueItems: true + responses: + '200': + description: successful operation + content: + application/xml: + schema: + type: array + items: + $ref: '#/components/schemas/Pet' + uniqueItems: true + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Pet' + uniqueItems: true + '400': + description: Invalid tag value + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + deprecated: true + '/pet/{petId}': + get: + tags: + - pet + summary: Find pet by ID + description: Returns a single pet + operationId: getPetById + x-webclient-blocking: true + parameters: + - name: petId + in: path + description: ID of pet to return + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: successful operation + content: + application/xml: + schema: + $ref: '#/components/schemas/Pet' + application/json: + schema: + $ref: '#/components/schemas/Pet' + '400': + description: Invalid ID supplied + '404': + description: Pet not found + security: + - api_key: [] + post: + tags: + - pet + summary: Updates a pet in the store with form data + description: '' + operationId: updatePetWithForm + parameters: + - name: petId + in: path + description: ID of pet that needs to be updated + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: Successful operation + '405': + description: Invalid input + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + requestBody: + content: + application/x-www-form-urlencoded: + schema: + type: object + properties: + name: + description: Updated name of the pet + type: string + status: + description: Updated status of the pet + type: string + delete: + tags: + - pet + summary: Deletes a pet + description: '' + operationId: deletePet + parameters: + - name: api_key + in: header + required: false + schema: + type: string + - name: petId + in: path + description: Pet id to delete + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: Successful operation + '400': + description: Invalid pet value + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + '/pet/{petId}/uploadImage': + post: + tags: + - pet + summary: uploads an image + description: '' + operationId: uploadFile + parameters: + - name: petId + in: path + description: ID of pet to update + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + additionalMetadata: + description: Additional data to pass to server + type: string + file: + description: file to upload + type: string + format: binary + /store/inventory: + get: + tags: + - store + summary: Returns pet inventories by status + description: Returns a map of status codes to quantities + operationId: getInventory + x-webclient-blocking: false + responses: + '200': + description: successful operation + content: + application/json: + schema: + type: object + additionalProperties: + type: integer + format: int32 + security: + - api_key: [] + /store/order: + post: + tags: + - store + summary: Place an order for a pet + description: '' + operationId: placeOrder + responses: + '200': + description: successful operation + content: + application/xml: + schema: + $ref: '#/components/schemas/Order' + application/json: + schema: + $ref: '#/components/schemas/Order' + '400': + description: Invalid Order + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Order' + description: order placed for purchasing the pet + required: true + '/store/order/{order_id}': + get: + tags: + - store + summary: Find purchase order by ID + description: >- + For valid response try integer IDs with value <= 5 or > 10. Other values + will generate exceptions + operationId: getOrderById + parameters: + - name: order_id + in: path + description: ID of pet that needs to be fetched + required: true + schema: + type: integer + format: int64 + minimum: 1 + maximum: 5 + responses: + '200': + description: successful operation + content: + application/xml: + schema: + $ref: '#/components/schemas/Order' + application/json: + schema: + $ref: '#/components/schemas/Order' + '400': + description: Invalid ID supplied + '404': + description: Order not found + delete: + tags: + - store + summary: Delete purchase order by ID + description: >- + For valid response try integer IDs with value < 1000. Anything above + 1000 or nonintegers will generate API errors + operationId: deleteOrder + parameters: + - name: order_id + in: path + description: ID of the order that needs to be deleted + required: true + schema: + type: string + responses: + '400': + description: Invalid ID supplied + '404': + description: Order not found + /user: + post: + tags: + - user + summary: Create user + description: This can only be done by the logged in user. + operationId: createUser + responses: + default: + description: successful operation + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/User' + description: Created user object + required: true + /user/createWithArray: + post: + tags: + - user + summary: Creates list of users with given input array + description: '' + operationId: createUsersWithArrayInput + responses: + default: + description: successful operation + requestBody: + $ref: '#/components/requestBodies/UserArray' + /user/createWithList: + post: + tags: + - user + summary: Creates list of users with given input array + description: '' + operationId: createUsersWithListInput + responses: + default: + description: successful operation + requestBody: + $ref: '#/components/requestBodies/UserArray' + /user/login: + get: + tags: + - user + summary: Logs user into the system + description: '' + operationId: loginUser + parameters: + - name: username + in: query + description: The user name for login + required: true + schema: + type: string + - name: password + in: query + description: The password for login in clear text + required: true + schema: + type: string + responses: + '200': + description: successful operation + headers: + X-Rate-Limit: + description: calls per hour allowed by the user + schema: + type: integer + format: int32 + X-Expires-After: + description: date in UTC when token expires + schema: + type: string + format: date-time + content: + application/xml: + schema: + type: string + application/json: + schema: + type: string + '400': + description: Invalid username/password supplied + /user/logout: + get: + tags: + - user + summary: Logs out current logged in user session + description: '' + operationId: logoutUser + responses: + default: + description: successful operation + '/user/{username}': + get: + tags: + - user + summary: Get user by user name + description: '' + operationId: getUserByName + parameters: + - name: username + in: path + description: The name that needs to be fetched. Use user1 for testing. + required: true + schema: + type: string + responses: + '200': + description: successful operation + content: + application/xml: + schema: + $ref: '#/components/schemas/User' + application/json: + schema: + $ref: '#/components/schemas/User' + '400': + description: Invalid username supplied + '404': + description: User not found + put: + tags: + - user + summary: Updated user + description: This can only be done by the logged in user. + operationId: updateUser + parameters: + - name: username + in: path + description: name that need to be deleted + required: true + schema: + type: string + responses: + '400': + description: Invalid user supplied + '404': + description: User not found + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/User' + description: Updated user object + required: true + delete: + tags: + - user + summary: Delete user + description: This can only be done by the logged in user. + operationId: deleteUser + parameters: + - name: username + in: path + description: The name that needs to be deleted + required: true + schema: + type: string + responses: + '400': + description: Invalid username supplied + '404': + description: User not found + /fake_classname_test: + patch: + tags: + - 'fake_classname_tags 123#$%^' + summary: To test class name in snake case + description: To test class name in snake case + operationId: testClassname + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Client' + security: + - api_key_query: [] + requestBody: + $ref: '#/components/requestBodies/Client' + /fake: + patch: + tags: + - fake + summary: To test "client" model + description: To test "client" model + operationId: testClientModel + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Client' + requestBody: + $ref: '#/components/requestBodies/Client' + #get: + # tags: + # - fake + # summary: To test enum parameters + # description: To test enum parameters + # operationId: testEnumParameters + # parameters: + # - name: enum_header_string_array + # in: header + # description: Header parameter enum test (string array) + # schema: + # type: array + # items: + # type: string + # default: $ + # enum: + # - '>' + # - $ + # - name: enum_header_string + # in: header + # description: Header parameter enum test (string) + # schema: + # type: string + # enum: + # - _abc + # - '-efg' + # - (xyz) + # default: '-efg' + # - name: enum_query_string_array + # in: query + # description: Query parameter enum test (string array) + # schema: + # type: array + # items: + # type: string + # default: $ + # enum: + # - '>' + # - $ + # - name: enum_query_string + # in: query + # description: Query parameter enum test (string) + # schema: + # type: string + # enum: + # - _abc + # - '-efg' + # - (xyz) + # default: '-efg' + # - name: enum_query_integer + # in: query + # description: Query parameter enum test (double) + # schema: + # type: integer + # format: int32 + # enum: + # - 1 + # - -2 + # - name: enum_query_double + # in: query + # description: Query parameter enum test (double) + # schema: + # type: number + # format: double + # enum: + # - 1.1 + # - -1.2 + # - name: enum_query_model_array + # in: query + # schema: + # type: array + # items: + # $ref: '#/components/schemas/EnumClass' + # responses: + # '400': + # description: Invalid request + # '404': + # description: Not found + # requestBody: + # content: + # application/x-www-form-urlencoded: + # schema: + # type: object + # properties: + # enum_form_string_array: + # description: Form parameter enum test (string array) + # type: array + # items: + # type: string + # default: $ + # enum: + # - '>' + # - $ + # enum_form_string: + # description: Form parameter enum test (string) + # type: string + # enum: + # - _abc + # - '-efg' + # - (xyz) + # default: '-efg' + post: + tags: + - fake + summary: | + Fake endpoint for testing various parameters + 假端點 + 偽のエンドポイント + 가짜 엔드 포인트 + description: | + Fake endpoint for testing various parameters + 假端點 + 偽のエンドポイント + 가짜 엔드 포인트 + operationId: testEndpointParameters + responses: + '400': + description: Invalid username supplied + '404': + description: User not found + security: + - http_basic_test: [] + requestBody: + content: + application/x-www-form-urlencoded: + schema: + type: object + properties: + integer: + description: None + type: integer + minimum: 10 + maximum: 100 + int32: + description: None + type: integer + format: int32 + minimum: 20 + maximum: 200 + int64: + description: None + type: integer + format: int64 + number: + description: None + type: number + minimum: 32.1 + maximum: 543.2 + float: + description: None + type: number + format: float + maximum: 987.6 + double: + description: None + type: number + format: double + minimum: 67.8 + maximum: 123.4 + string: + description: None + type: string + pattern: '/[a-z]/i' + pattern_without_delimiter: + description: None + type: string + pattern: '^[A-Z].*' + byte: + description: None + type: string + format: byte + binary: + description: None + type: string + format: binary + date: + description: None + type: string + format: date + dateTime: + description: None + type: string + format: date-time + password: + description: None + type: string + format: password + minLength: 10 + maxLength: 64 + callback: + description: None + type: string + required: + - number + - double + - pattern_without_delimiter + - byte + delete: + tags: + - fake + security: + - bearer_test: [] + summary: Fake endpoint to test group parameters (optional) + description: Fake endpoint to test group parameters (optional) + operationId: testGroupParameters + x-group-parameters: true + parameters: + - name: required_string_group + in: query + description: Required String in group parameters + required: true + schema: + type: integer + - name: required_boolean_group + in: header + description: Required Boolean in group parameters + required: true + schema: + type: boolean + - name: required_int64_group + in: query + description: Required Integer in group parameters + required: true + schema: + type: integer + format: int64 + - name: string_group + in: query + description: String in group parameters + schema: + type: integer + - name: boolean_group + in: header + description: Boolean in group parameters + schema: + type: boolean + - name: int64_group + in: query + description: Integer in group parameters + schema: + type: integer + format: int64 + responses: + '400': + description: Something wrong + /fake/outer/number: + post: + tags: + - fake + description: Test serialization of outer number types + operationId: fakeOuterNumberSerialize + responses: + '200': + description: Output number + content: + '*/*': + schema: + $ref: '#/components/schemas/OuterNumber' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OuterNumber' + description: Input number as post body + /fake/property/enum-int: + post: + tags: + - fake + description: Test serialization of enum (int) properties with examples + operationId: fakePropertyEnumIntegerSerialize + responses: + '200': + description: Output enum (int) + content: + '*/*': + schema: + $ref: '#/components/schemas/OuterObjectWithEnumProperty' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/OuterObjectWithEnumProperty' + description: Input enum (int) as post body + /fake/outer/string: + post: + tags: + - fake + description: Test serialization of outer string types + operationId: fakeOuterStringSerialize + responses: + '200': + description: Output string + content: + '*/*': + schema: + $ref: '#/components/schemas/OuterString' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OuterString' + description: Input string as post body + /fake/outer/boolean: + post: + tags: + - fake + description: Test serialization of outer boolean types + operationId: fakeOuterBooleanSerialize + responses: + '200': + description: Output boolean + content: + '*/*': + schema: + $ref: '#/components/schemas/OuterBoolean' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OuterBoolean' + description: Input boolean as post body + /fake/outer/composite: + post: + tags: + - fake + description: Test serialization of object with outer number type + operationId: fakeOuterCompositeSerialize + responses: + '200': + description: Output composite + content: + '*/*': + schema: + $ref: '#/components/schemas/OuterComposite' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OuterComposite' + description: Input composite as post body + /fake/BigDecimalMap: + get: + tags: + - fake + description: for Java apache and Java native, test toUrlQueryString for maps with BegDecimal keys + operationId: fakeBigDecimalMap + responses: + '200': + description: successful operation + content: + '*/*': + schema: + type: object + properties: + someId: + type: number + someMap: + type: object + additionalProperties: + type: number + /fake/jsonFormData: + get: + tags: + - fake + summary: test json serialization of form data + description: '' + operationId: testJsonFormData + responses: + '200': + description: successful operation + requestBody: + content: + application/x-www-form-urlencoded: + schema: + type: object + properties: + param: + description: field1 + type: string + param2: + description: field2 + type: string + required: + - param + - param2 + /fake/additionalProperties-reference: + post: + tags: + - fake + summary: test referenced additionalProperties + description: '' + operationId: testAdditionalPropertiesReference + responses: + '200': + description: successful operation + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/FreeFormObject' + description: request body + required: true + /fake/stringMap-reference: + post: + tags: + - fake + summary: test referenced string map + description: '' + operationId: testStringMapReference + responses: + '200': + description: successful operation + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/MapOfString' + description: request body + required: true + /fake/inline-additionalProperties: + post: + tags: + - fake + summary: test inline additionalProperties + description: '' + operationId: testInlineAdditionalProperties + responses: + '200': + description: successful operation + requestBody: + content: + application/json: + schema: + type: object + additionalProperties: + type: string + description: request body + required: true + /fake/inline-freeform-additionalProperties: + post: + tags: + - fake + summary: test inline free-form additionalProperties + description: '' + operationId: testInlineFreeformAdditionalProperties + responses: + '200': + description: successful operation + requestBody: + content: + application/json: + schema: + type: object + properties: + someProperty: + type: string + additionalProperties: true + description: request body + required: true + /fake/nullable: + post: + tags: + - fake + summary: test nullable parent property + description: "" + operationId: testNullable + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ChildWithNullable' + description: request body + required: true + responses: + "200": + description: successful operation + /fake/body-with-query-params: + put: + tags: + - fake + operationId: testBodyWithQueryParams + parameters: + - name: query + in: query + required: true + schema: + type: string + responses: + '200': + description: Success + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/User' + required: true + /another-fake/dummy: + patch: + tags: + - $another-fake? + summary: To test special tags + description: To test special tags and operation ID starting with number + operationId: '123_test_@#$%_special_tags' + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Client' + requestBody: + $ref: '#/components/requestBodies/Client' + /fake/body-with-file-schema: + put: + tags: + - fake + description: >- + For this test, the body for this request must reference a schema named + `File`. + operationId: testBodyWithFileSchema + responses: + '200': + description: Success + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/FileSchemaTestClass' + required: true + /fake/body-with-binary: + put: + tags: + - fake + description: >- + For this test, the body has to be a binary file. + operationId: testBodyWithBinary + responses: + '200': + description: Success + requestBody: + content: + image/png: + schema: + type: string + nullable: true + format: binary + description: image to upload + required: true + /fake/test-query-parameters: + put: + tags: + - fake + description: To test the collection format in query parameters + operationId: testQueryParameterCollectionFormat + parameters: + - name: pipe + in: query + required: true + style: pipeDelimited + schema: + type: array + items: + type: string + - name: ioutil + in: query + required: true + style: form + explode: false + schema: + type: array + items: + type: string + - name: http + in: query + required: true + style: spaceDelimited + schema: + type: array + items: + type: string + - name: url + in: query + required: true + style: form + explode: false + schema: + type: array + items: + type: string + - name: context + in: query + required: true + explode: true + schema: + type: array + items: + type: string + - name: language + in: query + required: false + schema: + type: object + additionalProperties: + type: string + format: string + - name: allowEmpty + in: query + required: true + allowEmptyValue: true + schema: + type: string + responses: + "200": + description: Success + '/fake/{petId}/uploadImageWithRequiredFile': + post: + tags: + - pet + summary: uploads an image (required) + description: '' + operationId: uploadFileWithRequiredFile + parameters: + - name: petId + in: path + description: ID of pet to update + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + additionalMetadata: + description: Additional data to pass to server + type: string + requiredFile: + description: file to upload + type: string + format: binary + required: + - requiredFile + /fake/health: + get: + tags: + - fake + summary: Health check endpoint + responses: + 200: + description: The instance started successfully + content: + application/json: + schema: + $ref: '#/components/schemas/HealthCheckResult' + /fake/http-signature-test: + get: + tags: + - fake + summary: test http signature authentication + operationId: fake-http-signature-test + parameters: + - name: query_1 + in: query + description: query parameter + required: optional + schema: + type: string + - name: header_1 + in: header + description: header parameter + required: optional + schema: + type: string + security: + - http_signature_test: [] + requestBody: + $ref: '#/components/requestBodies/Pet' + responses: + 200: + description: The instance started successfully +servers: + - url: 'http://{server}.swagger.io:{port}/v2' + description: petstore server + variables: + server: + enum: + - 'petstore' + - 'qa-petstore' + - 'dev-petstore' + default: 'petstore' + port: + enum: + - 80 + - 8080 + default: 80 + - url: https://localhost:8080/{version} + description: The local server + variables: + version: + enum: + - 'v1' + - 'v2' + default: 'v2' + - url: https://127.0.0.1/no_varaible + description: The local server without variables +components: + requestBodies: + UserArray: + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/User' + description: List of user object + required: true + Client: + content: + application/json: + schema: + $ref: '#/components/schemas/Client' + description: client model + required: true + Pet: + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + application/xml: + schema: + $ref: '#/components/schemas/Pet' + description: Pet object that needs to be added to the store + required: true + securitySchemes: + petstore_auth: + type: oauth2 + flows: + implicit: + authorizationUrl: 'http://petstore.swagger.io/api/oauth/dialog' + scopes: + 'write:pets': modify pets in your account + 'read:pets': read your pets + api_key: + type: apiKey + name: api_key + in: header + api_key_query: + type: apiKey + name: api_key_query + in: query + http_basic_test: + type: http + scheme: basic + bearer_test: + type: http + scheme: bearer + bearerFormat: JWT + http_signature_test: + type: http + scheme: signature + schemas: + Foo: + type: object + properties: + bar: + $ref: '#/components/schemas/Bar' + Bar: + type: string + default: bar + Order: + type: object + properties: + id: + type: integer + format: int64 + petId: + type: integer + format: int64 + quantity: + type: integer + format: int32 + shipDate: + type: string + format: date-time + status: + type: string + description: Order Status + enum: + - placed + - approved + - delivered + complete: + type: boolean + default: false + xml: + name: Order + Category: + type: object + required: + - name + properties: + id: + type: integer + format: int64 + name: + type: string + default: default-name + xml: + name: Category + User: + type: object + properties: + id: + type: integer + format: int64 + x-is-unique: true + username: + type: string + firstName: + type: string + lastName: + type: string + email: + type: string + password: + type: string + phone: + type: string + userStatus: + type: integer + format: int32 + description: User Status + xml: + name: User + Tag: + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + xml: + name: Tag + Pet: + type: object + required: + - name + - photoUrls + properties: + id: + type: integer + format: int64 + x-is-unique: true + category: + $ref: '#/components/schemas/Category' + name: + type: string + example: doggie + photoUrls: + type: array + xml: + wrapped: true + items: + type: string + xml: + name: photoUrl + uniqueItems: true + tags: + type: array + xml: + name: tag + wrapped: true + items: + $ref: '#/components/schemas/Tag' + status: + type: string + description: pet status in the store + enum: + - available + - pending + - sold + xml: + name: Pet + ApiResponse: + type: object + properties: + code: + type: integer + format: int32 + type: + type: string + message: + type: string + Return: + description: Model for testing reserved words + properties: + return: + type: integer + format: int32 + xml: + name: Return + Name: + description: Model for testing model name same as property name + required: + - name + properties: + name: + type: integer + format: int32 + snake_case: + readOnly: true + type: integer + format: int32 + property: + type: string + 123Number: + type: integer + readOnly: true + xml: + name: Name + 200_response: + description: Model for testing model name starting with number + properties: + name: + type: integer + format: int32 + class: + type: string + xml: + name: Name + ClassModel: + description: Model for testing model with "_class" property + properties: + _class: + type: string + Dog: + allOf: + - $ref: '#/components/schemas/Animal' + - type: object + properties: + breed: + type: string + Cat: + allOf: + - $ref: '#/components/schemas/Animal' + - type: object + properties: + declawed: + type: boolean + Animal: + type: object + discriminator: + propertyName: className + mapping: + DOG: '#/components/schemas/Dog' + CAT: '#/components/schemas/Cat' + required: + - className + properties: + className: + type: string + color: + type: string + default: red + AnimalFarm: + type: array + items: + $ref: '#/components/schemas/Animal' + format_test: + type: object + required: + - number + - byte + - date + - password + properties: + integer: + type: integer + maximum: 100 + minimum: 10 + int32: + type: integer + format: int32 + maximum: 200 + minimum: 20 + int64: + type: integer + format: int64 + number: + maximum: 543.2 + minimum: 32.1 + type: number + float: + type: number + format: float + maximum: 987.6 + minimum: 54.3 + double: + type: number + format: double + maximum: 123.4 + minimum: 67.8 + decimal: + type: string + format: number + string: + type: string + pattern: '/[a-z]/i' + byte: + type: string + format: byte + binary: + type: string + format: binary + date: + type: string + format: date + dateTime: + type: string + format: date-time + uuid: + type: string + format: uuid + example: 72f98069-206d-4f12-9f12-3d1e525a8e84 + password: + type: string + format: password + maxLength: 64 + minLength: 10 + pattern_with_digits: + description: A string that is a 10 digit number. Can have leading zeros. + type: string + pattern: '^\d{10}$' + pattern_with_digits_and_delimiter: + description: A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01. + type: string + pattern: '/^image_\d{1,3}$/i' + EnumClass: + type: string + default: '-efg' + enum: + - _abc + - '-efg' + - (xyz) + Enum_Test: + type: object + required: + - enum_string_required + properties: + enum_string: + type: string + enum: + - UPPER + - lower + - '' + enum_string_required: + type: string + enum: + - UPPER + - lower + - '' + enum_integer: + type: integer + format: int32 + enum: + - 1 + - -1 + enum_number: + type: number + format: double + enum: + - 1.1 + - -1.2 + outerEnum: + $ref: '#/components/schemas/OuterEnum' + outerEnumInteger: + $ref: '#/components/schemas/OuterEnumInteger' + outerEnumDefaultValue: + $ref: '#/components/schemas/OuterEnumDefaultValue' + outerEnumIntegerDefaultValue: + $ref: '#/components/schemas/OuterEnumIntegerDefaultValue' + AdditionalPropertiesClass: + type: object + properties: + map_property: + type: object + additionalProperties: + type: string + map_of_map_property: + type: object + additionalProperties: + type: object + additionalProperties: + type: string + MixedPropertiesAndAdditionalPropertiesClass: + type: object + properties: + uuid: + type: string + format: uuid + dateTime: + type: string + format: date-time + map: + type: object + additionalProperties: + $ref: '#/components/schemas/Animal' + List: + type: object + properties: + 123-list: + type: string + Client: + type: object + properties: + client: + type: string + ReadOnlyFirst: + type: object + properties: + bar: + type: string + readOnly: true + baz: + type: string + hasOnlyReadOnly: + type: object + properties: + bar: + type: string + readOnly: true + foo: + type: string + readOnly: true + Capitalization: + type: object + properties: + smallCamel: + type: string + CapitalCamel: + type: string + small_Snake: + type: string + Capital_Snake: + type: string + SCA_ETH_Flow_Points: + type: string + ATT_NAME: + description: | + Name of the pet + type: string + MapTest: + type: object + properties: + map_map_of_string: + type: object + additionalProperties: + type: object + additionalProperties: + type: string + map_of_enum_string: + type: object + additionalProperties: + type: string + enum: + - UPPER + - lower + direct_map: + type: object + additionalProperties: + type: boolean + indirect_map: + $ref: '#/components/schemas/StringBooleanMap' + ArrayTest: + type: object + properties: + array_of_string: + type: array + items: + type: string + minItems: 0 + maxItems: 3 + array_array_of_integer: + type: array + items: + type: array + items: + type: integer + format: int64 + array_array_of_model: + type: array + items: + type: array + items: + $ref: '#/components/schemas/ReadOnlyFirst' + NumberOnly: + type: object + properties: + JustNumber: + type: number + ArrayOfNumberOnly: + type: object + properties: + ArrayNumber: + type: array + items: + type: number + ArrayOfArrayOfNumberOnly: + type: object + properties: + ArrayArrayNumber: + type: array + items: + type: array + items: + type: number + EnumArrays: + type: object + properties: + just_symbol: + type: string + enum: + - '>=' + - $ + array_enum: + type: array + items: + type: string + enum: + - fish + - crab + FreeFormObject: + type: object + description: A schema consisting only of additional properties + additionalProperties: true + MapOfString: + type: object + description: A schema consisting only of additional properties of type string + additionalProperties: + type: string + OuterEnum: + nullable: true + type: string + enum: + - placed + - approved + - delivered + OuterEnumInteger: + type: integer + enum: + - 0 + - 1 + - 2 + example: 2 + OuterEnumDefaultValue: + type: string + enum: + - placed + - approved + - delivered + default: placed + OuterEnumIntegerDefaultValue: + type: integer + enum: + - 0 + - 1 + - 2 + default: 0 + OuterComposite: + type: object + properties: + my_number: + $ref: '#/components/schemas/OuterNumber' + my_string: + $ref: '#/components/schemas/OuterString' + my_boolean: + $ref: '#/components/schemas/OuterBoolean' + OuterNumber: + type: number + OuterString: + type: string + OuterBoolean: + type: boolean + x-codegen-body-parameter-name: boolean_post_body + ParentWithNullable: + type: object + discriminator: + propertyName: type + properties: + type: + type: string + enum: + - ChildWithNullable + nullableProperty: + type: string + nullable: true + ChildWithNullable: + allOf: + - $ref: '#/components/schemas/ParentWithNullable' + - type: object + properties: + otherProperty: + type: string + StringBooleanMap: + additionalProperties: + type: boolean + FileSchemaTestClass: + type: object + properties: + file: + $ref: '#/components/schemas/File' + files: + type: array + items: + $ref: '#/components/schemas/File' + File: + type: object + description: Must be named `File` for test. + properties: + sourceURI: + description: Test capitalization + type: string + _special_model.name_: + properties: + '$special[property.name]': + type: integer + format: int64 + xml: + name: '$special[model.name]' + HealthCheckResult: + type: object + properties: + NullableMessage: + nullable: true + type: string + description: Just a string to inform instance is up and running. Make it nullable in hope to get it as pointer in generated model. + NullableClass: + type: object + properties: + integer_prop: + type: integer + nullable: true + number_prop: + type: number + nullable: true + boolean_prop: + type: boolean + nullable: true + string_prop: + type: string + nullable: true + date_prop: + type: string + format: date + nullable: true + datetime_prop: + type: string + format: date-time + nullable: true + array_nullable_prop: + type: array + nullable: true + items: + type: object + array_and_items_nullable_prop: + type: array + nullable: true + items: + type: object + nullable: true + array_items_nullable: + type: array + items: + type: object + nullable: true + object_nullable_prop: + type: object + nullable: true + additionalProperties: + type: object + object_and_items_nullable_prop: + type: object + nullable: true + additionalProperties: + type: object + nullable: true + object_items_nullable: + type: object + additionalProperties: + type: object + nullable: true + additionalProperties: + type: object + nullable: true + OuterObjectWithEnumProperty: + type: object + example: + value: 2 + required: + - value + properties: + value: + $ref: '#/components/schemas/OuterEnumInteger' + DeprecatedObject: + type: object + deprecated: true + properties: + name: + type: string + ObjectWithDeprecatedFields: + type: object + properties: + uuid: + type: string + id: + type: number + deprecated: true + deprecatedRef: + $ref: '#/components/schemas/DeprecatedObject' + bars: + type: array + deprecated: true + items: + $ref: '#/components/schemas/Bar' + AllOfWithSingleRef: + type: object + properties: + username: + type: string + SingleRefType: + allOf: + - $ref: '#/components/schemas/SingleRefType' + SingleRefType: + type: string + title: SingleRefType + enum: + - admin + - user diff --git a/samples/server/petstore/php-laravel-issue-21334/composer.json b/samples/server/petstore/php-laravel-issue-21334/composer.json index 6b230b67e52b..588a9c592ace 100644 --- a/samples/server/petstore/php-laravel-issue-21334/composer.json +++ b/samples/server/petstore/php-laravel-issue-21334/composer.json @@ -16,12 +16,12 @@ } ], "require": { - "php": "^8.1", - "laravel/framework": "^10.0", + "php": "^8.3", + "laravel/framework": "^13.0", "crell/serde": "^1.0" }, "require-dev": { - "phpunit/phpunit": "^9.5" + "phpunit/phpunit": "^12.0" }, "autoload": { "psr-4": { diff --git a/samples/server/petstore/php-laravel/.openapi-generator/FILES b/samples/server/petstore/php-laravel/.openapi-generator/FILES index 0766ce49b8a4..13b6f3c918c7 100644 --- a/samples/server/petstore/php-laravel/.openapi-generator/FILES +++ b/samples/server/petstore/php-laravel/.openapi-generator/FILES @@ -34,6 +34,7 @@ Model/EnumArraysJustSymbol.php Model/EnumClass.php Model/EnumTest.php Model/EnumTestEnumInteger.php +Model/EnumTestEnumNumber.php Model/EnumTestEnumString.php Model/FakeBigDecimalMap200Response.php Model/File.php @@ -75,11 +76,6 @@ Model/ReadOnlyFirst.php Model/SingleRefType.php Model/SpecialModelName.php Model/Tag.php -Model/TestEnumParametersEnumHeaderStringParameter.php -Model/TestEnumParametersEnumQueryDoubleParameter.php -Model/TestEnumParametersEnumQueryIntegerParameter.php -Model/TestEnumParametersRequestEnumFormString.php -Model/TestEnumParametersRequestEnumFormStringArrayInner.php Model/TestInlineFreeformAdditionalPropertiesRequest.php Model/User.php README.md diff --git a/samples/server/petstore/php-laravel/Api/FakeApiInterface.php b/samples/server/petstore/php-laravel/Api/FakeApiInterface.php index 0ba584fe917a..5868028c10a4 100644 --- a/samples/server/petstore/php-laravel/Api/FakeApiInterface.php +++ b/samples/server/petstore/php-laravel/Api/FakeApiInterface.php @@ -231,37 +231,6 @@ public function testEndpointParameters( ; - /** - * Operation testEnumParameters - * - * To test enum parameters - * @param null | \OpenAPI\Server\Model\TestEnumParametersRequestEnumFormStringArrayInner[] $enumHeaderStringArray - * @param null | \OpenAPI\Server\Model\TestEnumParametersEnumHeaderStringParameter $enumHeaderString - * @param null | \OpenAPI\Server\Model\TestEnumParametersRequestEnumFormStringArrayInner[] $enumQueryStringArray - * @param null | \OpenAPI\Server\Model\TestEnumParametersEnumHeaderStringParameter $enumQueryString - * @param null | \OpenAPI\Server\Model\TestEnumParametersEnumQueryIntegerParameter $enumQueryInteger - * @param null | \OpenAPI\Server\Model\TestEnumParametersEnumQueryDoubleParameter $enumQueryDouble - * @param null | \OpenAPI\Server\Model\EnumClass[] $enumQueryModelArray - * @param null | \OpenAPI\Server\Model\TestEnumParametersRequestEnumFormStringArrayInner[] $enumFormStringArray - * @param null | \OpenAPI\Server\Model\TestEnumParametersRequestEnumFormString $enumFormString - * @return \OpenAPI\Server\Model\NoContent400 | \OpenAPI\Server\Model\NoContent404 - */ - public function testEnumParameters( - ?array $enumHeaderStringArray, - ?\OpenAPI\Server\Model\TestEnumParametersEnumHeaderStringParameter $enumHeaderString, - ?array $enumQueryStringArray, - ?\OpenAPI\Server\Model\TestEnumParametersEnumHeaderStringParameter $enumQueryString, - ?\OpenAPI\Server\Model\TestEnumParametersEnumQueryIntegerParameter $enumQueryInteger, - ?\OpenAPI\Server\Model\TestEnumParametersEnumQueryDoubleParameter $enumQueryDouble, - ?array $enumQueryModelArray, - ?array $enumFormStringArray, - ?\OpenAPI\Server\Model\TestEnumParametersRequestEnumFormString $enumFormString, - ): - \OpenAPI\Server\Model\NoContent400 | - \OpenAPI\Server\Model\NoContent404 - ; - - /** * Operation testGroupParameters * diff --git a/samples/server/petstore/php-laravel/Http/Controllers/FakeController.php b/samples/server/petstore/php-laravel/Http/Controllers/FakeController.php index ae433d8b5ec6..0a6dd13f7aaa 100644 --- a/samples/server/petstore/php-laravel/Http/Controllers/FakeController.php +++ b/samples/server/petstore/php-laravel/Http/Controllers/FakeController.php @@ -628,84 +628,6 @@ public function testEndpointParameters(Request $request): JsonResponse } - // This shouldn't happen - return response()->abort(500); - } - /** - * Operation testEnumParameters - * - * To test enum parameters. - * - */ - public function testEnumParameters(Request $request): JsonResponse - { - $validator = Validator::make( - array_merge( - [ - - ], - $request->all(), - ), - [ - 'enumHeaderStringArray' => [ - 'array', - ], - 'enumHeaderString' => [ - ], - 'enumQueryStringArray' => [ - 'array', - ], - 'enumQueryString' => [ - ], - 'enumQueryInteger' => [ - ], - 'enumQueryDouble' => [ - ], - 'enumQueryModelArray' => [ - 'array', - ], - 'enumFormStringArray' => [ - 'array', - ], - 'enumFormString' => [ - ], - ], - ); - - if ($validator->fails()) { - return response()->json(['error' => 'Invalid input'], 400); - } - - $enumHeaderStringArray = $request->get('enumHeaderStringArray'); - - $enumHeaderString = $this->serde->deserialize($request->getContent(), from: 'json', to: \OpenAPI\Server\Model\TestEnumParametersEnumHeaderStringParameter::class); - - $enumQueryStringArray = $request->get('enumQueryStringArray'); - - $enumQueryString = $this->serde->deserialize($request->getContent(), from: 'json', to: \OpenAPI\Server\Model\TestEnumParametersEnumHeaderStringParameter::class); - - $enumQueryInteger = $this->serde->deserialize($request->getContent(), from: 'json', to: \OpenAPI\Server\Model\TestEnumParametersEnumQueryIntegerParameter::class); - - $enumQueryDouble = $this->serde->deserialize($request->getContent(), from: 'json', to: \OpenAPI\Server\Model\TestEnumParametersEnumQueryDoubleParameter::class); - - $enumQueryModelArray = $request->get('enumQueryModelArray'); - - $enumFormStringArray = $request->get('enumFormStringArray'); - - $enumFormString = $this->serde->deserialize($request->getContent(), from: 'json', to: \OpenAPI\Server\Model\TestEnumParametersRequestEnumFormString::class); - - - $apiResult = $this->api->testEnumParameters($enumHeaderStringArray, $enumHeaderString, $enumQueryStringArray, $enumQueryString, $enumQueryInteger, $enumQueryDouble, $enumQueryModelArray, $enumFormStringArray, $enumFormString); - - if ($apiResult instanceof \OpenAPI\Server\Model\NoContent400) { - return response()->json($this->serde->serialize($apiResult, format: 'array'), 400); - } - - if ($apiResult instanceof \OpenAPI\Server\Model\NoContent404) { - return response()->json($this->serde->serialize($apiResult, format: 'array'), 404); - } - - // This shouldn't happen return response()->abort(500); } diff --git a/samples/server/petstore/php-laravel/Model/EnumTest.php b/samples/server/petstore/php-laravel/Model/EnumTest.php index 916cd6212800..f776871f58e1 100644 --- a/samples/server/petstore/php-laravel/Model/EnumTest.php +++ b/samples/server/petstore/php-laravel/Model/EnumTest.php @@ -44,7 +44,7 @@ class EnumTest * @param \OpenAPI\Server\Model\EnumTestEnumInteger $enumInteger * * - * @param \OpenAPI\Server\Model\TestEnumParametersEnumQueryDoubleParameter $enumNumber + * @param \OpenAPI\Server\Model\EnumTestEnumNumber $enumNumber * * * @param null | \OpenAPI\Server\Model\OuterEnum $outerEnum @@ -63,7 +63,7 @@ public function __construct( public \OpenAPI\Server\Model\EnumTestEnumString $enumString, public \OpenAPI\Server\Model\EnumTestEnumString $enumStringRequired, public \OpenAPI\Server\Model\EnumTestEnumInteger $enumInteger, - public \OpenAPI\Server\Model\TestEnumParametersEnumQueryDoubleParameter $enumNumber, + public \OpenAPI\Server\Model\EnumTestEnumNumber $enumNumber, public \OpenAPI\Server\Model\OuterEnumInteger $outerEnumInteger, public \OpenAPI\Server\Model\OuterEnumDefaultValue $outerEnumDefaultValue, public \OpenAPI\Server\Model\OuterEnumIntegerDefaultValue $outerEnumIntegerDefaultValue, diff --git a/samples/server/petstore/php-laravel/Model/TestEnumParametersEnumQueryDoubleParameter.php b/samples/server/petstore/php-laravel/Model/EnumTestEnumNumber.php similarity index 82% rename from samples/server/petstore/php-laravel/Model/TestEnumParametersEnumQueryDoubleParameter.php rename to samples/server/petstore/php-laravel/Model/EnumTestEnumNumber.php index 8e302fbb85a5..984c469485c7 100644 --- a/samples/server/petstore/php-laravel/Model/TestEnumParametersEnumQueryDoubleParameter.php +++ b/samples/server/petstore/php-laravel/Model/EnumTestEnumNumber.php @@ -19,14 +19,14 @@ /** - * TestEnumParametersEnumQueryDoubleParameter + * EnumTestEnumNumber */ namespace OpenAPI\Server\Model; /** - * TestEnumParametersEnumQueryDoubleParameter + * EnumTestEnumNumber */ -enum TestEnumParametersEnumQueryDoubleParameter: float +enum EnumTestEnumNumber: float { case NUMBER_1_DOT_1 = 1.1; case MINUS_1_DOT_2 = -1.2; diff --git a/samples/server/petstore/php-laravel/Model/TestEnumParametersEnumHeaderStringParameter.php b/samples/server/petstore/php-laravel/Model/TestEnumParametersEnumHeaderStringParameter.php deleted file mode 100644 index 5cba504eca3c..000000000000 --- a/samples/server/petstore/php-laravel/Model/TestEnumParametersEnumHeaderStringParameter.php +++ /dev/null @@ -1,34 +0,0 @@ - https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/main/resources/php-laravel/ - */ - - -/** - * TestEnumParametersEnumHeaderStringParameter - */ -namespace OpenAPI\Server\Model; - -/** - * TestEnumParametersEnumHeaderStringParameter - */ -enum TestEnumParametersEnumHeaderStringParameter: string -{ - case ABC = '_abc'; - case EFG = '-efg'; - case XYZ = '(xyz)'; -} diff --git a/samples/server/petstore/php-laravel/Model/TestEnumParametersEnumQueryIntegerParameter.php b/samples/server/petstore/php-laravel/Model/TestEnumParametersEnumQueryIntegerParameter.php deleted file mode 100644 index c42cc51cf51a..000000000000 --- a/samples/server/petstore/php-laravel/Model/TestEnumParametersEnumQueryIntegerParameter.php +++ /dev/null @@ -1,33 +0,0 @@ - https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/main/resources/php-laravel/ - */ - - -/** - * TestEnumParametersEnumQueryIntegerParameter - */ -namespace OpenAPI\Server\Model; - -/** - * TestEnumParametersEnumQueryIntegerParameter - */ -enum TestEnumParametersEnumQueryIntegerParameter: int -{ - case NUMBER_1 = 1; - case MINUS_2 = -2; -} diff --git a/samples/server/petstore/php-laravel/Model/TestEnumParametersRequestEnumFormString.php b/samples/server/petstore/php-laravel/Model/TestEnumParametersRequestEnumFormString.php deleted file mode 100644 index 4a30aa1abee1..000000000000 --- a/samples/server/petstore/php-laravel/Model/TestEnumParametersRequestEnumFormString.php +++ /dev/null @@ -1,35 +0,0 @@ - https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/main/resources/php-laravel/ - */ - - -/** - * TestEnumParametersRequestEnumFormString - */ -namespace OpenAPI\Server\Model; - -/** - * TestEnumParametersRequestEnumFormString - * @description Form parameter enum test (string) - */ -enum TestEnumParametersRequestEnumFormString: string -{ - case ABC = '_abc'; - case EFG = '-efg'; - case XYZ = '(xyz)'; -} diff --git a/samples/server/petstore/php-laravel/Model/TestEnumParametersRequestEnumFormStringArrayInner.php b/samples/server/petstore/php-laravel/Model/TestEnumParametersRequestEnumFormStringArrayInner.php deleted file mode 100644 index a93bd2acc32f..000000000000 --- a/samples/server/petstore/php-laravel/Model/TestEnumParametersRequestEnumFormStringArrayInner.php +++ /dev/null @@ -1,33 +0,0 @@ - https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/main/resources/php-laravel/ - */ - - -/** - * TestEnumParametersRequestEnumFormStringArrayInner - */ -namespace OpenAPI\Server\Model; - -/** - * TestEnumParametersRequestEnumFormStringArrayInner - */ -enum TestEnumParametersRequestEnumFormStringArrayInner: string -{ - case GREATER_THAN = '>'; - case DOLLAR = '$'; -} diff --git a/samples/server/petstore/php-laravel/composer.json b/samples/server/petstore/php-laravel/composer.json index 6b230b67e52b..588a9c592ace 100644 --- a/samples/server/petstore/php-laravel/composer.json +++ b/samples/server/petstore/php-laravel/composer.json @@ -16,12 +16,12 @@ } ], "require": { - "php": "^8.1", - "laravel/framework": "^10.0", + "php": "^8.3", + "laravel/framework": "^13.0", "crell/serde": "^1.0" }, "require-dev": { - "phpunit/phpunit": "^9.5" + "phpunit/phpunit": "^12.0" }, "autoload": { "psr-4": { diff --git a/samples/server/petstore/php-laravel/routes.php b/samples/server/petstore/php-laravel/routes.php index a92d702b6043..be8a6779f598 100644 --- a/samples/server/petstore/php-laravel/routes.php +++ b/samples/server/petstore/php-laravel/routes.php @@ -132,13 +132,6 @@ */ Route::POST('/v2/fake', [\OpenAPI\Server\Http\Controllers\FakeController::class, 'testEndpointParameters'])->name('fake.test.endpoint.parameters'); -/** - * GET testEnumParameters - * Summary: To test enum parameters - * Notes: To test enum parameters - */ -Route::GET('/v2/fake', [\OpenAPI\Server\Http\Controllers\FakeController::class, 'testEnumParameters'])->name('fake.test.enum.parameters'); - /** * DELETE testGroupParameters * Summary: Fake endpoint to test group parameters (optional)