diff --git a/src/Core/Dirt/Models/Data/EventIntegrations/IntegrationTemplateContext.cs b/src/Core/Dirt/Models/Data/EventIntegrations/IntegrationTemplateContext.cs index d31f3a961c90..d1fbb616f39b 100644 --- a/src/Core/Dirt/Models/Data/EventIntegrations/IntegrationTemplateContext.cs +++ b/src/Core/Dirt/Models/Data/EventIntegrations/IntegrationTemplateContext.cs @@ -12,7 +12,7 @@ public class IntegrationTemplateContext(EventMessage eventMessage) public string DomainName => Event.DomainName; public string IpAddress => Event.IpAddress; - public DeviceType? DeviceType => Event.DeviceType; + public string? DeviceType => Event.DeviceType?.GetDisplayName(); public int? DeviceTypeId => Event.DeviceType is not null ? (int)Event.DeviceType : null; public Guid? ActingUserId => Event.ActingUserId; public Guid? OrganizationUserId => Event.OrganizationUserId; diff --git a/test/Core.Test/Dirt/Models/Data/EventIntegrations/IntegrationTemplateContextTests.cs b/test/Core.Test/Dirt/Models/Data/EventIntegrations/IntegrationTemplateContextTests.cs index 7bacb4046b7e..29ad015d88cb 100644 --- a/test/Core.Test/Dirt/Models/Data/EventIntegrations/IntegrationTemplateContextTests.cs +++ b/test/Core.Test/Dirt/Models/Data/EventIntegrations/IntegrationTemplateContextTests.cs @@ -2,6 +2,7 @@ using System.Text.Json; using Bit.Core.AdminConsole.Entities; using Bit.Core.Dirt.Models.Data.EventIntegrations; +using Bit.Core.Enums; using Bit.Core.Models.Data; using Bit.Core.Models.Data.Organizations.OrganizationUsers; using Bit.Test.Common.AutoFixture.Attributes; @@ -34,6 +35,43 @@ public void DateIso8601_ReturnsIso8601FormattedDate(EventMessage eventMessage) Assert.True(DateTime.TryParse(result, out _)); } + [Theory, BitAutoData] + public void DeviceType_WhenSet_ReturnsDisplayName(EventMessage eventMessage) + { + eventMessage.DeviceType = DeviceType.ChromeExtension; + var sut = new IntegrationTemplateContext(eventMessage); + + // Display name from [Display(Name = "...")], not the enum member identifier "ChromeExtension" + Assert.Equal("Chrome Extension", sut.DeviceType); + } + + [Theory, BitAutoData] + public void DeviceType_WhenNull_ReturnsNull(EventMessage eventMessage) + { + eventMessage.DeviceType = null; + var sut = new IntegrationTemplateContext(eventMessage); + + Assert.Null(sut.DeviceType); + } + + [Theory, BitAutoData] + public void DeviceTypeId_WhenSet_ReturnsNumericValue(EventMessage eventMessage) + { + eventMessage.DeviceType = DeviceType.ChromeExtension; + var sut = new IntegrationTemplateContext(eventMessage); + + Assert.Equal((int)DeviceType.ChromeExtension, sut.DeviceTypeId); + } + + [Theory, BitAutoData] + public void DeviceTypeId_WhenNull_ReturnsNull(EventMessage eventMessage) + { + eventMessage.DeviceType = null; + var sut = new IntegrationTemplateContext(eventMessage); + + Assert.Null(sut.DeviceTypeId); + } + [Theory, BitAutoData] public void UserName_WhenUserIsSet_ReturnsName(EventMessage eventMessage, OrganizationUserUserDetails user) { diff --git a/test/Core.Test/Dirt/Services/EventIntegrationHandlerTests.cs b/test/Core.Test/Dirt/Services/EventIntegrationHandlerTests.cs index 8a55875742f0..60bb1232ab6f 100644 --- a/test/Core.Test/Dirt/Services/EventIntegrationHandlerTests.cs +++ b/test/Core.Test/Dirt/Services/EventIntegrationHandlerTests.cs @@ -6,6 +6,7 @@ using Bit.Core.AdminConsole.Repositories; using Bit.Core.Dirt.Enums; using Bit.Core.Dirt.Models.Data.EventIntegrations; +using Bit.Core.Enums; using Bit.Core.Dirt.Repositories; using Bit.Core.Dirt.Services; using Bit.Core.Dirt.Services.Implementations; @@ -773,7 +774,7 @@ public async Task HandleEventAsync_SubstituteTemplateTags(EventMessage eventMess ""actingUserId"": ""{eventMessage.ActingUserId}"", ""installationId"": ""{eventMessage.InstallationId}"", ""date"": ""{eventMessage.Date.ToString("o")}"", - ""deviceType"": ""{eventMessage.DeviceType}"", + ""deviceType"": ""{eventMessage.DeviceType?.GetDisplayName()}"", ""deviceTypeId"": ""{deviceTypeId}"", ""ipAddress"": ""{eventMessage.IpAddress}"", ""systemUser"": ""{systemUser}"",