diff --git a/test/Api.Test/Api.Test.csproj b/test/Api.Test/Api.Test.csproj index 50ca81773..df630cf23 100644 --- a/test/Api.Test/Api.Test.csproj +++ b/test/Api.Test/Api.Test.csproj @@ -14,6 +14,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/test/Api.Test/Controllers/SendsControllerTests.cs b/test/Api.Test/Controllers/SendsControllerTests.cs new file mode 100644 index 000000000..33786b88d --- /dev/null +++ b/test/Api.Test/Controllers/SendsControllerTests.cs @@ -0,0 +1,79 @@ +using AutoFixture.Xunit2; +using Bit.Api.Controllers; +using Bit.Core.Enums; +using Bit.Core.Models.Api; +using Bit.Core.Models.Table; +using Bit.Core.Repositories; +using Bit.Core.Services; +using Bit.Core.Settings; +using Bit.Core.Utilities; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using NSubstitute; +using System.Collections.Generic; +using System.Threading.Tasks; +using System; +using Xunit; + +namespace Bit.Api.Test.Controllers +{ + public class SendsControllerTests : IDisposable + { + + private readonly SendsController _sut; + private readonly GlobalSettings _globalSettings; + private readonly IUserService _userService; + private readonly ISendRepository _sendRepository; + private readonly ISendService _sendService; + private readonly ISendFileStorageService _sendFileStorageService; + private readonly ILogger _logger; + + public SendsControllerTests() + { + _userService = Substitute.For(); + _sendRepository = Substitute.For(); + _sendService = Substitute.For(); + _sendFileStorageService = Substitute.For(); + _globalSettings = new GlobalSettings(); + _logger = Substitute.For>(); + + _sut = new SendsController( + _sendRepository, + _userService, + _sendService, + _sendFileStorageService, + _logger, + _globalSettings + ); + } + + public void Dispose() + { + _sut?.Dispose(); + } + + [Theory, AutoData] + public async Task SendsController_WhenSendHidesEmail_CreatorIdentifierShouldBeNull( + Guid id, Send send, User user) + { + var accessId = CoreHelpers.Base64UrlEncode(id.ToByteArray()); + + send.Id = default; + send.Type = SendType.Text; + send.Data = JsonConvert.SerializeObject(new Dictionary()); + send.HideEmail = true; + + _sendService.AccessAsync(id, null).Returns((send, false, false)); + _userService.GetUserByIdAsync(Arg.Any()).Returns(user); + + var request = new SendAccessRequestModel(); + var actionResult = await _sut.Access(accessId, request); + var response = (actionResult as ObjectResult)?.Value as SendAccessResponseModel; + + Assert.NotNull(response); + Assert.Null(response.CreatorIdentifier); + } + } +} +