opendevstack / ods-provisioning-app

Provisioning app, which triggers project and component provisions (including Jira / Confluence / BitBucket and OCP resource creation)
Apache License 2.0
15 stars 20 forks source link

The API endpoint /project/validate?projectName=xxxx searches by project key instead of project name #698

Open jafarre-bi opened 2 years ago

jafarre-bi commented 2 years ago

Describe the bug When calling the API endpoint /project/validate?projectName=xxxx, the project is searched by key and not by name. The behaviour is exactly the same as that of the endpoint /project/key/validate?projectKey=xxxx

To Reproduce Please recall that this endpoint's functionality is checking whether the specified project name is available (no project exists with that name). In case the name is available, a 200 status code should be returned. In case a project with that name already exists, a 406 status code should be returned.

Steps to reproduce the behavior:

  1. Login into de prov app using a browser
  2. In the browser, enter the endpoint /api/v2/project/validate?projectName=xxxx using an existing project key which is not also a project name.
  3. A 406 status response is received with an XML body with the error message "A project with this name exists". This is mistaken: a project with that key exists, but not with that name.
  4. Enter the endpoint /api/v2/project/validate?projectName=xxxx using an existing project name which is not also a project key.
  5. A 200 status response is received and the browser shows a blank screen. This is mistaken: a project with that name already exists.

Expected behavior

  1. No project with the given name is found. A 200 status response is received and the browser shows a blank screen.
  2. A project with the given name is found. A 406 status response is received with an XML body with the error message "A project with this name exists".

Screenshots In the following example, TMEDP is the key of an existing project, but no project with name TMEDP exists. image

Affected version (please complete the following information):

stitakis commented 2 years ago

@jafarre-viewnext I can't fully understand the problem here, can you please give me a quick call and we clarify. Btw... are you planning to provide a fix for this?

jafarre-bi commented 2 years ago

I have edited the ticket to try to make it clearer. @stitakis we can talk about it any time, thank you.

stitakis commented 2 years ago

As verified, the two related API have the same implementation: /validate https://github.com/opendevstack/ods-provisioning-app/blob/046c072bec44f961da0d52364309daa8def3deb0/src/main/java/org/opendevstack/provision/controller/ProjectApiController.java#L691

and /key/validate

https://github.com/opendevstack/ods-provisioning-app/blob/046c072bec44f961da0d52364309daa8def3deb0/src/main/java/org/opendevstack/provision/controller/ProjectApiController.java#L756

Options:

  1. we remove the API /validate as it might not be needed
  2. if it is needed, we should verify if the calling code actually could call /key/validate instead
  3. if not, we could implement this API to check if the project name exists in jira or even in the local storage to avoid to query Jira as this will have a better performance