mirror of
https://github.com/bitwarden/server
synced 2026-01-30 16:23:37 +00:00
Added a ValidateModel method to enforce validation rules for policy data. Updated error messages to provide clearer feedback on validation failures. Enhanced unit tests to cover new validation scenarios for MinLength and MinComplexity properties.
87 lines
2.9 KiB
C#
87 lines
2.9 KiB
C#
using Bit.Core.AdminConsole.Enums;
|
|
using Bit.Core.AdminConsole.OrganizationFeatures.Policies.Models;
|
|
using Bit.Core.AdminConsole.Utilities;
|
|
using Bit.Core.Exceptions;
|
|
using Xunit;
|
|
|
|
namespace Bit.Core.Test.AdminConsole.Utilities;
|
|
|
|
public class PolicyDataValidatorTests
|
|
{
|
|
[Fact]
|
|
public void ValidateAndSerialize_NullData_ReturnsNull()
|
|
{
|
|
var result = PolicyDataValidator.ValidateAndSerialize(null, PolicyType.MasterPassword);
|
|
|
|
Assert.Null(result);
|
|
}
|
|
|
|
[Fact]
|
|
public void ValidateAndSerialize_ValidData_ReturnsSerializedJson()
|
|
{
|
|
var data = new Dictionary<string, object>
|
|
{
|
|
{ "minLength", 12 },
|
|
{ "minComplexity", 4 }
|
|
};
|
|
|
|
var result = PolicyDataValidator.ValidateAndSerialize(data, PolicyType.MasterPassword);
|
|
|
|
Assert.NotNull(result);
|
|
Assert.Contains("\"minLength\":12", result);
|
|
Assert.Contains("\"minComplexity\":4", result);
|
|
}
|
|
|
|
[Fact]
|
|
public void ValidateAndSerialize_InvalidDataType_ThrowsBadRequestException()
|
|
{
|
|
var data = new Dictionary<string, object> { { "minLength", "not a number" } };
|
|
|
|
var exception = Assert.Throws<BadRequestException>(() =>
|
|
PolicyDataValidator.ValidateAndSerialize(data, PolicyType.MasterPassword));
|
|
|
|
Assert.Contains("Invalid data for MasterPassword policy", exception.Message);
|
|
Assert.Contains("minLength", exception.Message);
|
|
}
|
|
|
|
[Fact]
|
|
public void ValidateAndDeserializeMetadata_NullMetadata_ReturnsEmptyMetadataModel()
|
|
{
|
|
var result = PolicyDataValidator.ValidateAndDeserializeMetadata(null, PolicyType.SingleOrg);
|
|
|
|
Assert.IsType<EmptyMetadataModel>(result);
|
|
}
|
|
|
|
[Fact]
|
|
public void ValidateAndDeserializeMetadata_ValidMetadata_ReturnsModel()
|
|
{
|
|
var metadata = new Dictionary<string, object> { { "defaultUserCollectionName", "collection name" } };
|
|
|
|
var result = PolicyDataValidator.ValidateAndDeserializeMetadata(metadata, PolicyType.OrganizationDataOwnership);
|
|
|
|
Assert.IsType<OrganizationModelOwnershipPolicyModel>(result);
|
|
}
|
|
|
|
[Fact]
|
|
public void ValidateAndSerialize_ExcessiveMinLength_ThrowsBadRequestException()
|
|
{
|
|
var data = new Dictionary<string, object> { { "minLength", 129 } };
|
|
|
|
var exception = Assert.Throws<BadRequestException>(() =>
|
|
PolicyDataValidator.ValidateAndSerialize(data, PolicyType.MasterPassword));
|
|
|
|
Assert.Contains("Invalid data for MasterPassword policy", exception.Message);
|
|
}
|
|
|
|
[Fact]
|
|
public void ValidateAndSerialize_ExcessiveMinComplexity_ThrowsBadRequestException()
|
|
{
|
|
var data = new Dictionary<string, object> { { "minComplexity", 5 } };
|
|
|
|
var exception = Assert.Throws<BadRequestException>(() =>
|
|
PolicyDataValidator.ValidateAndSerialize(data, PolicyType.MasterPassword));
|
|
|
|
Assert.Contains("Invalid data for MasterPassword policy", exception.Message);
|
|
}
|
|
}
|