From 506d0aa318f9dfa46e410d2cb55952b476af1afd Mon Sep 17 00:00:00 2001 From: cyprain-okeke <108260115+cyprain-okeke@users.noreply.github.com> Date: Fri, 22 Dec 2023 20:28:07 +0100 Subject: [PATCH] [AC-2000] Get 400 response code when a secrets manager is not enabled for Organisation while password Manager is Updated (#3612) * fix the bug * resolve qa comments --- .../Controllers/OrganizationController.cs | 39 ++++++++++++++----- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/src/Api/Billing/Public/Controllers/OrganizationController.cs b/src/Api/Billing/Public/Controllers/OrganizationController.cs index 294165a7e8..22d5627643 100644 --- a/src/Api/Billing/Public/Controllers/OrganizationController.cs +++ b/src/Api/Billing/Public/Controllers/OrganizationController.cs @@ -43,12 +43,23 @@ public class OrganizationController : Controller [ProducesResponseType((int)HttpStatusCode.NotFound)] public async Task PostSubscriptionAsync([FromBody] OrganizationSubscriptionUpdateRequestModel model) { + try + { + await UpdatePasswordManagerAsync(model, _currentContext.OrganizationId.Value); - await UpdatePasswordManagerAsync(model, _currentContext.OrganizationId.Value); + var secretsManagerResult = await UpdateSecretsManagerAsync(model, _currentContext.OrganizationId.Value); - await UpdateSecretsManagerAsync(model, _currentContext.OrganizationId.Value); + if (!string.IsNullOrEmpty(secretsManagerResult)) + { + return Ok(new { Message = secretsManagerResult }); + } - return new OkResult(); + return Ok(new { Message = "Subscription updated successfully." }); + } + catch (Exception ex) + { + return StatusCode(500, new { Message = "An error occurred while updating the subscription." }); + } } private async Task UpdatePasswordManagerAsync(OrganizationSubscriptionUpdateRequestModel model, Guid organizationId) @@ -67,15 +78,23 @@ public class OrganizationController : Controller } } - private async Task UpdateSecretsManagerAsync(OrganizationSubscriptionUpdateRequestModel model, Guid organizationId) + private async Task UpdateSecretsManagerAsync(OrganizationSubscriptionUpdateRequestModel model, Guid organizationId) { - if (model.SecretsManager != null) + if (model.SecretsManager == null) { - var organization = - await _organizationRepository.GetByIdAsync(organizationId); - - var organizationUpdate = model.SecretsManager.ToSecretsManagerSubscriptionUpdate(organization); - await _updateSecretsManagerSubscriptionCommand.UpdateSubscriptionAsync(organizationUpdate); + return string.Empty; } + + var organization = await _organizationRepository.GetByIdAsync(organizationId); + + if (!organization.UseSecretsManager) + { + return "Organization has no access to Secrets Manager."; + } + + var secretsManagerUpdate = model.SecretsManager.ToSecretsManagerSubscriptionUpdate(organization); + await _updateSecretsManagerSubscriptionCommand.UpdateSubscriptionAsync(secretsManagerUpdate); + + return string.Empty; } }