* Return 409 Conflict when trying to post folder that already exists
* Fix tests
* Update documentation for new error message in folders api
(cherry picked from commit a18d3007a7)
Co-authored-by: Dimitris Sotirakis <dimitrios.sotirakis@grafana.com>
This commit is contained in:
co-authored by
Dimitris Sotirakis
parent
4efbf432a4
commit
fd515d1318
@@ -154,6 +154,7 @@ Status Codes:
|
||||
- **400** – Errors (invalid json, missing or invalid fields, etc)
|
||||
- **401** – Unauthorized
|
||||
- **403** – Access Denied
|
||||
- **409** - Folder already exists
|
||||
|
||||
## Update folder
|
||||
|
||||
|
||||
+5
-2
@@ -146,8 +146,6 @@ func ToFolderErrorResponse(err error) response.Response {
|
||||
}
|
||||
|
||||
if errors.Is(err, models.ErrFolderTitleEmpty) ||
|
||||
errors.Is(err, models.ErrFolderSameNameExists) ||
|
||||
errors.Is(err, models.ErrFolderWithSameUIDExists) ||
|
||||
errors.Is(err, models.ErrDashboardTypeMismatch) ||
|
||||
errors.Is(err, models.ErrDashboardInvalidUid) ||
|
||||
errors.Is(err, models.ErrDashboardUidTooLong) {
|
||||
@@ -162,6 +160,11 @@ func ToFolderErrorResponse(err error) response.Response {
|
||||
return response.JSON(404, util.DynMap{"status": "not-found", "message": models.ErrFolderNotFound.Error()})
|
||||
}
|
||||
|
||||
if errors.Is(err, models.ErrFolderSameNameExists) ||
|
||||
errors.Is(err, models.ErrFolderWithSameUIDExists) {
|
||||
return response.Error(409, err.Error(), nil)
|
||||
}
|
||||
|
||||
if errors.Is(err, models.ErrFolderVersionMismatch) {
|
||||
return response.JSON(412, util.DynMap{"status": "version-mismatch", "message": models.ErrFolderVersionMismatch.Error()})
|
||||
}
|
||||
|
||||
@@ -46,9 +46,9 @@ func TestFoldersAPIEndpoint(t *testing.T) {
|
||||
Error error
|
||||
ExpectedStatusCode int
|
||||
}{
|
||||
{Error: models.ErrFolderWithSameUIDExists, ExpectedStatusCode: 400},
|
||||
{Error: models.ErrFolderWithSameUIDExists, ExpectedStatusCode: 409},
|
||||
{Error: models.ErrFolderTitleEmpty, ExpectedStatusCode: 400},
|
||||
{Error: models.ErrFolderSameNameExists, ExpectedStatusCode: 400},
|
||||
{Error: models.ErrFolderSameNameExists, ExpectedStatusCode: 409},
|
||||
{Error: models.ErrDashboardInvalidUid, ExpectedStatusCode: 400},
|
||||
{Error: models.ErrDashboardUidTooLong, ExpectedStatusCode: 400},
|
||||
{Error: models.ErrFolderAccessDenied, ExpectedStatusCode: 403},
|
||||
@@ -102,9 +102,9 @@ func TestFoldersAPIEndpoint(t *testing.T) {
|
||||
Error error
|
||||
ExpectedStatusCode int
|
||||
}{
|
||||
{Error: models.ErrFolderWithSameUIDExists, ExpectedStatusCode: 400},
|
||||
{Error: models.ErrFolderWithSameUIDExists, ExpectedStatusCode: 409},
|
||||
{Error: models.ErrFolderTitleEmpty, ExpectedStatusCode: 400},
|
||||
{Error: models.ErrFolderSameNameExists, ExpectedStatusCode: 400},
|
||||
{Error: models.ErrFolderSameNameExists, ExpectedStatusCode: 409},
|
||||
{Error: models.ErrDashboardInvalidUid, ExpectedStatusCode: 400},
|
||||
{Error: models.ErrDashboardUidTooLong, ExpectedStatusCode: 400},
|
||||
{Error: models.ErrFolderAccessDenied, ExpectedStatusCode: 403},
|
||||
|
||||
Reference in New Issue
Block a user