Skip to content

Java Spring duplicate parameter extraction #631

@EvtDanya

Description

@EvtDanya

Describe the bug
Noir incorrectly duplicates path parameters and mishandles @RequestParam in OpenAPI output

To Reproduce
Steps to reproduce the behavior:

  1. Create controller:
package com.test;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api/v1/test")
public class MyController {

    @DeleteMapping(value = "{token}/test")
    public String Test(
        @Test @PathVariable(name = "token") String token,
    ) {
        return "hello!";
    }
}
  1. Run noir ./bin/noir -b spec/functional_test/fixtures/java/spring/ -f oas3
  2. Observe output
{"openapi":"3.0.0","info":{"title":"Generated by Noir","version":""},"paths":{"/api/v1/test/{token}/test":{"delete":{"responses":{"200":{"description":"Successful response"}},"parameters":[{"name":"token","in":"query"},{"name":"token","in":"query"}]}}...

Expected behavior
Correct OpenAPI output should:

{"openapi":"3.0.0","info":{"title":"Generated by Noir","version":""},"paths":{"/api/v1/test/{token}/test":{"delete":{"responses":{"200":{"description":"Successful response"}},"parameters":[{"name":"token","in":"query"}]}}...

1 token param instead of 2

Screenshots
Image

Image

Versions

  • OS: linux
  • Version v0.22.0

Metadata

Metadata

Labels

🐞 bugSomething isn't working

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions