mirror of
https://github.com/bitwarden/server.git
synced 2025-07-01 08:02:49 -05:00
Hide email address in Sends (#1234)
* Add send HideEmail to tables and models * Respect HideEmail setting for Sends * Recreate SendView to include new HideEmail column * Enforce new Send policy * Insert default value for new HideEmail column * Delete c95d7598-71cc-4eab-8b08-aced0045198b.json * Remove unrelated files * Revert disableSendPolicy, add sendOptionsPolicy * Minor style fixes * Update SQL project with Send.HideEmail column * unit test SendOptionsPolicy.DisableHideEmail * Add SendOptionsPolicy to Portal * Make HideEmail nullable, fix migrator script * Remove NOT NULL constraint from HideEmail * Fix style * Make HideEmail nullable * minor fixes to model and error message * Move SendOptionsExemption banner Co-authored-by: Chad Scharf <3904944+cscharf@users.noreply.github.com>
This commit is contained in:
@ -12,12 +12,15 @@ using Bit.Core.Test.AutoFixture;
|
||||
using Bit.Core.Test.AutoFixture.SendFixtures;
|
||||
using NSubstitute;
|
||||
using Xunit;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace Bit.Core.Test.Services
|
||||
{
|
||||
public class SendServiceTests
|
||||
{
|
||||
private void SaveSendAsync_Setup(SendType sendType, bool canManagePolicies,
|
||||
// Disable Send policy check
|
||||
|
||||
private void SaveSendAsync_DisableSend_Setup(SendType sendType, bool canManagePolicies,
|
||||
SutProvider<SendService> sutProvider, Send send, List<Policy> policies)
|
||||
{
|
||||
send.Id = default;
|
||||
@ -36,7 +39,7 @@ namespace Bit.Core.Test.Services
|
||||
public async void SaveSendAsync_DisableSend_CantManagePolicies_throws(SendType sendType,
|
||||
SutProvider<SendService> sutProvider, Send send, List<Policy> policies)
|
||||
{
|
||||
SaveSendAsync_Setup(sendType, canManagePolicies: false, sutProvider, send, policies);
|
||||
SaveSendAsync_DisableSend_Setup(sendType, canManagePolicies: false, sutProvider, send, policies);
|
||||
|
||||
await Assert.ThrowsAsync<BadRequestException>(() => sutProvider.Sut.SaveSendAsync(send));
|
||||
}
|
||||
@ -47,7 +50,7 @@ namespace Bit.Core.Test.Services
|
||||
public async void SaveSendAsync_DisableSend_DisabledPolicy_CantManagePolicies_success(SendType sendType,
|
||||
SutProvider<SendService> sutProvider, Send send, List<Policy> policies)
|
||||
{
|
||||
SaveSendAsync_Setup(sendType, canManagePolicies: false, sutProvider, send, policies);
|
||||
SaveSendAsync_DisableSend_Setup(sendType, canManagePolicies: false, sutProvider, send, policies);
|
||||
foreach (var policy in policies.Where(p => p.Type == PolicyType.DisableSend))
|
||||
{
|
||||
policy.Enabled = false;
|
||||
@ -64,7 +67,75 @@ namespace Bit.Core.Test.Services
|
||||
public async void SaveSendAsync_DisableSend_CanManagePolicies_success(SendType sendType,
|
||||
SutProvider<SendService> sutProvider, Send send, List<Policy> policies)
|
||||
{
|
||||
SaveSendAsync_Setup(sendType, canManagePolicies: true, sutProvider, send, policies);
|
||||
SaveSendAsync_DisableSend_Setup(sendType, canManagePolicies: true, sutProvider, send, policies);
|
||||
|
||||
await sutProvider.Sut.SaveSendAsync(send);
|
||||
|
||||
await sutProvider.GetDependency<ISendRepository>().Received(1).CreateAsync(send);
|
||||
}
|
||||
|
||||
// SendOptionsPolicy.DisableHideEmail check
|
||||
|
||||
private void SaveSendAsync_DisableHideEmail_Setup(SendType sendType, bool canManagePolicies,
|
||||
SutProvider<SendService> sutProvider, Send send, List<Policy> policies)
|
||||
{
|
||||
send.Id = default;
|
||||
send.Type = sendType;
|
||||
send.HideEmail = true;
|
||||
|
||||
var dataObj = new SendOptionsPolicyData();
|
||||
dataObj.DisableHideEmail = true;
|
||||
|
||||
policies.First().Type = PolicyType.SendOptions;
|
||||
policies.First().Enabled = true;
|
||||
policies.First().Data = JsonConvert.SerializeObject(dataObj);
|
||||
|
||||
sutProvider.GetDependency<IPolicyRepository>().GetManyByUserIdAsync(send.UserId.Value).Returns(policies);
|
||||
sutProvider.GetDependency<ICurrentContext>().ManagePolicies(Arg.Any<Guid>()).Returns(canManagePolicies);
|
||||
}
|
||||
|
||||
|
||||
[Theory]
|
||||
[InlineUserSendAutoData(SendType.File)]
|
||||
[InlineUserSendAutoData(SendType.Text)]
|
||||
public async void SaveSendAsync_DisableHideEmail_CantManagePolicies_throws(SendType sendType,
|
||||
SutProvider<SendService> sutProvider, Send send, List<Policy> policies)
|
||||
{
|
||||
SaveSendAsync_DisableHideEmail_Setup(sendType, canManagePolicies: false, sutProvider, send, policies);
|
||||
|
||||
await Assert.ThrowsAsync<BadRequestException>(() => sutProvider.Sut.SaveSendAsync(send));
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineUserSendAutoData(SendType.File)]
|
||||
[InlineUserSendAutoData(SendType.Text)]
|
||||
public async void SaveSendAsync_DisableHideEmail_CantManagePolicies_success(SendType sendType,
|
||||
SutProvider<SendService> sutProvider, Send send, List<Policy> policies)
|
||||
{
|
||||
SaveSendAsync_DisableHideEmail_Setup(sendType, canManagePolicies: false, sutProvider, send, policies);
|
||||
|
||||
var policyData = new SendOptionsPolicyData();
|
||||
policyData.DisableHideEmail = false;
|
||||
var policyDataSerialized = JsonConvert.SerializeObject(policyData);
|
||||
|
||||
foreach (var policy in policies.Where(p => p.Type == PolicyType.SendOptions))
|
||||
{
|
||||
policies.First().Enabled = true;
|
||||
policies.First().Data = policyDataSerialized;
|
||||
}
|
||||
|
||||
await sutProvider.Sut.SaveSendAsync(send);
|
||||
|
||||
await sutProvider.GetDependency<ISendRepository>().Received(1).CreateAsync(send);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineUserSendAutoData(SendType.File)]
|
||||
[InlineUserSendAutoData(SendType.Text)]
|
||||
public async void SaveSendAsync_DisableHideEmail_CanManagePolicies_success(SendType sendType,
|
||||
SutProvider<SendService> sutProvider, Send send, List<Policy> policies)
|
||||
{
|
||||
SaveSendAsync_DisableHideEmail_Setup(sendType, canManagePolicies: true, sutProvider, send, policies);
|
||||
|
||||
await sutProvider.Sut.SaveSendAsync(send);
|
||||
|
||||
|
Reference in New Issue
Block a user