mirror of
https://github.com/bitwarden/server.git
synced 2025-02-08 00:31:27 +01:00
Properly handle new policy enrollments in the public API (#4003)
* Test the use case * Properly instantiate model from null * Rename query parameter
This commit is contained in:
parent
9827ee5f6a
commit
19a7aa500d
@ -83,7 +83,7 @@ public class PoliciesController : Controller
|
|||||||
/// </remarks>
|
/// </remarks>
|
||||||
/// <param name="type">The type of policy to be updated.</param>
|
/// <param name="type">The type of policy to be updated.</param>
|
||||||
/// <param name="model">The request model.</param>
|
/// <param name="model">The request model.</param>
|
||||||
[HttpPut("{id}")]
|
[HttpPut("{type}")]
|
||||||
[ProducesResponseType(typeof(PolicyResponseModel), (int)HttpStatusCode.OK)]
|
[ProducesResponseType(typeof(PolicyResponseModel), (int)HttpStatusCode.OK)]
|
||||||
[ProducesResponseType(typeof(ErrorResponseModel), (int)HttpStatusCode.BadRequest)]
|
[ProducesResponseType(typeof(ErrorResponseModel), (int)HttpStatusCode.BadRequest)]
|
||||||
[ProducesResponseType((int)HttpStatusCode.NotFound)]
|
[ProducesResponseType((int)HttpStatusCode.NotFound)]
|
||||||
@ -93,7 +93,7 @@ public class PoliciesController : Controller
|
|||||||
_currentContext.OrganizationId.Value, type);
|
_currentContext.OrganizationId.Value, type);
|
||||||
if (policy == null)
|
if (policy == null)
|
||||||
{
|
{
|
||||||
policy = model.ToPolicy(_currentContext.OrganizationId.Value);
|
policy = model.ToPolicy(_currentContext.OrganizationId.Value, type);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1,15 +1,19 @@
|
|||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using Bit.Core.AdminConsole.Entities;
|
using Bit.Core.AdminConsole.Entities;
|
||||||
|
using Bit.Core.AdminConsole.Enums;
|
||||||
|
|
||||||
namespace Bit.Api.AdminConsole.Public.Models.Request;
|
namespace Bit.Api.AdminConsole.Public.Models.Request;
|
||||||
|
|
||||||
public class PolicyUpdateRequestModel : PolicyBaseModel
|
public class PolicyUpdateRequestModel : PolicyBaseModel
|
||||||
{
|
{
|
||||||
public Policy ToPolicy(Guid orgId)
|
public Policy ToPolicy(Guid orgId, PolicyType type)
|
||||||
{
|
{
|
||||||
return ToPolicy(new Policy
|
return ToPolicy(new Policy
|
||||||
{
|
{
|
||||||
OrganizationId = orgId
|
OrganizationId = orgId,
|
||||||
|
Enabled = Enabled.GetValueOrDefault(),
|
||||||
|
Data = Data != null ? JsonSerializer.Serialize(Data) : null,
|
||||||
|
Type = type
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,33 @@
|
|||||||
|
using Bit.Api.AdminConsole.Public.Controllers;
|
||||||
|
using Bit.Api.AdminConsole.Public.Models.Request;
|
||||||
|
using Bit.Api.AdminConsole.Public.Models.Response;
|
||||||
|
using Bit.Core.AdminConsole.Entities;
|
||||||
|
using Bit.Core.AdminConsole.Enums;
|
||||||
|
using Bit.Core.AdminConsole.Repositories;
|
||||||
|
using Bit.Core.Context;
|
||||||
|
using Bit.Test.Common.AutoFixture;
|
||||||
|
using Bit.Test.Common.AutoFixture.Attributes;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using NSubstitute;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace Bit.Api.Test.AdminConsole.Public.Controllers;
|
||||||
|
|
||||||
|
[ControllerCustomize(typeof(PoliciesController))]
|
||||||
|
[SutProviderCustomize]
|
||||||
|
public class PoliciesControllerTests
|
||||||
|
{
|
||||||
|
[Theory]
|
||||||
|
[BitAutoData]
|
||||||
|
[BitAutoData(PolicyType.SendOptions)]
|
||||||
|
public async Task Put_NewPolicy_AppliesCorrectType(PolicyType type, Organization organization, PolicyUpdateRequestModel model, SutProvider<PoliciesController> sutProvider)
|
||||||
|
{
|
||||||
|
sutProvider.GetDependency<ICurrentContext>().OrganizationId.Returns(organization.Id);
|
||||||
|
sutProvider.GetDependency<IPolicyRepository>().GetByOrganizationIdTypeAsync(organization.Id, type).Returns((Policy)null);
|
||||||
|
|
||||||
|
var response = await sutProvider.Sut.Put(type, model) as JsonResult;
|
||||||
|
var responseValue = response.Value as PolicyResponseModel;
|
||||||
|
|
||||||
|
Assert.Equal(type, responseValue.Type);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user