From 7029f2a53f0d5f18e1d695ed8de999d2d520a332 Mon Sep 17 00:00:00 2001 From: Jimmy Vo Date: Thu, 16 Jul 2026 16:45:14 -0400 Subject: [PATCH 1/3] [PM-38749] Add endpoint to update SupportsConfirmation and inviteBlob --- .../OrganizationInviteLinksController.cs | 12 ++++++ ...reateOrganizationInviteLinkRequestModel.cs | 2 +- ...freshOrganizationInviteLinkRequestModel.cs | 2 +- .../UpdateInviteSupportConfirmRequestModel.cs | 29 +++++++++++++ .../IUpdateInviteSupportConfirmCommand.cs | 16 +++++++ .../RefreshOrganizationInviteLinkRequest.cs | 2 +- .../UpdateInviteSupportConfirmCommand.cs | 43 +++++++++++++++++++ .../UpdateInviteSupportConfirmRequest.cs | 16 +++++++ ...OrganizationServiceCollectionExtensions.cs | 1 + 9 files changed, 120 insertions(+), 3 deletions(-) create mode 100644 src/Api/AdminConsole/Models/Request/Organizations/UpdateInviteSupportConfirmRequestModel.cs create mode 100644 src/Core/AdminConsole/OrganizationFeatures/InviteLinks/Interfaces/IUpdateInviteSupportConfirmCommand.cs create mode 100644 src/Core/AdminConsole/OrganizationFeatures/InviteLinks/UpdateInviteSupportConfirmCommand.cs create mode 100644 src/Core/AdminConsole/OrganizationFeatures/InviteLinks/UpdateInviteSupportConfirmRequest.cs diff --git a/src/Api/AdminConsole/Controllers/OrganizationInviteLinksController.cs b/src/Api/AdminConsole/Controllers/OrganizationInviteLinksController.cs index 0a4c51ce9c65..0b0b91e2d419 100644 --- a/src/Api/AdminConsole/Controllers/OrganizationInviteLinksController.cs +++ b/src/Api/AdminConsole/Controllers/OrganizationInviteLinksController.cs @@ -19,6 +19,7 @@ public class OrganizationInviteLinksController( IGetOrganizationInviteLinkQuery getOrganizationInviteLinkQuery, IGetOrganizationInviteLinkStatusQuery getOrganizationInviteLinkStatusQuery, IUpdateOrganizationInviteLinkCommand updateOrganizationInviteLinkCommand, + IUpdateInviteSupportConfirmCommand updateInviteSupportConfirmCommand, IDeleteOrganizationInviteLinkCommand deleteOrganizationInviteLinkCommand, IRefreshOrganizationInviteLinkCommand refreshOrganizationInviteLinkCommand, IValidateOrganizationInviteLinkEmailDomainQuery validateOrganizationInviteLinkEmailDomainQuery, @@ -97,6 +98,17 @@ public async Task Update(Guid orgId, [FromBody] UpdateOrganizationInvit TypedResults.Ok(new OrganizationInviteLinkResponseModel(link))); } + [HttpPut("support-confirm")] + [Authorize] + public async Task UpdateInviteSupportConfirm(Guid orgId, [FromBody] UpdateInviteSupportConfirmRequestModel model) + { + var result = await updateInviteSupportConfirmCommand.UpdateAsync( + model.ToCommandRequest(orgId)); + + return Handle(result, link => + TypedResults.Ok(new OrganizationInviteLinkResponseModel(link))); + } + [HttpDelete("")] [Authorize] public async Task Delete(Guid orgId) diff --git a/src/Api/AdminConsole/Models/Request/Organizations/CreateOrganizationInviteLinkRequestModel.cs b/src/Api/AdminConsole/Models/Request/Organizations/CreateOrganizationInviteLinkRequestModel.cs index 01e4070c1aa9..def606419f35 100644 --- a/src/Api/AdminConsole/Models/Request/Organizations/CreateOrganizationInviteLinkRequestModel.cs +++ b/src/Api/AdminConsole/Models/Request/Organizations/CreateOrganizationInviteLinkRequestModel.cs @@ -23,7 +23,7 @@ public class CreateOrganizationInviteLinkRequestModel public required string Invite { get; set; } /// - /// Indicates if the link supports user auto confirmation (not supported yet). + /// Whether this invite link can be used to confirm a user. /// [Required] public required bool SupportsConfirmation { get; set; } diff --git a/src/Api/AdminConsole/Models/Request/Organizations/RefreshOrganizationInviteLinkRequestModel.cs b/src/Api/AdminConsole/Models/Request/Organizations/RefreshOrganizationInviteLinkRequestModel.cs index 45ad3694e9b4..15be07f69dfa 100644 --- a/src/Api/AdminConsole/Models/Request/Organizations/RefreshOrganizationInviteLinkRequestModel.cs +++ b/src/Api/AdminConsole/Models/Request/Organizations/RefreshOrganizationInviteLinkRequestModel.cs @@ -15,7 +15,7 @@ public class RefreshOrganizationInviteLinkRequestModel public required string Invite { get; set; } /// - /// Indicates if the link supports user auto confirmation (not supported yet). + /// Whether this invite link can be used to confirm a user. /// [Required] public required bool SupportsConfirmation { get; set; } diff --git a/src/Api/AdminConsole/Models/Request/Organizations/UpdateInviteSupportConfirmRequestModel.cs b/src/Api/AdminConsole/Models/Request/Organizations/UpdateInviteSupportConfirmRequestModel.cs new file mode 100644 index 000000000000..1286cfd0ec8e --- /dev/null +++ b/src/Api/AdminConsole/Models/Request/Organizations/UpdateInviteSupportConfirmRequestModel.cs @@ -0,0 +1,29 @@ +using System.ComponentModel.DataAnnotations; +using Bit.Core.AdminConsole.OrganizationFeatures.InviteLinks; +using Bit.Core.Utilities; + +namespace Bit.Api.AdminConsole.Models.Request.Organizations; + +public class UpdateInviteSupportConfirmRequestModel +{ + /// + /// An opaque cryptographic blob. The server only stores and transports it, so its format is not + /// validated here. + /// + [Required] + [EncryptedStringLength(3000)] + public required string Invite { get; set; } + + /// + /// Whether this invite link can be used to confirm a user. + /// + [Required] + public required bool SupportsConfirmation { get; set; } + + public UpdateInviteSupportConfirmRequest ToCommandRequest(Guid organizationId) => new() + { + OrganizationId = organizationId, + Invite = Invite, + SupportsConfirmation = SupportsConfirmation, + }; +} diff --git a/src/Core/AdminConsole/OrganizationFeatures/InviteLinks/Interfaces/IUpdateInviteSupportConfirmCommand.cs b/src/Core/AdminConsole/OrganizationFeatures/InviteLinks/Interfaces/IUpdateInviteSupportConfirmCommand.cs new file mode 100644 index 000000000000..09d779ca3e43 --- /dev/null +++ b/src/Core/AdminConsole/OrganizationFeatures/InviteLinks/Interfaces/IUpdateInviteSupportConfirmCommand.cs @@ -0,0 +1,16 @@ +using Bit.Core.AdminConsole.Entities; +using Bit.Core.AdminConsole.Utilities.v2.Results; + +namespace Bit.Core.AdminConsole.OrganizationFeatures.InviteLinks.Interfaces; + +public interface IUpdateInviteSupportConfirmCommand +{ + /// + /// Updates only the blob and + /// flag for the specified organization's invite link. + /// + /// The details for the invite link update. + /// The updated , or an error if the organization does not support + /// invite links or a link does not exist. + Task> UpdateAsync(UpdateInviteSupportConfirmRequest request); +} diff --git a/src/Core/AdminConsole/OrganizationFeatures/InviteLinks/RefreshOrganizationInviteLinkRequest.cs b/src/Core/AdminConsole/OrganizationFeatures/InviteLinks/RefreshOrganizationInviteLinkRequest.cs index cde50120644c..6967d8158a06 100644 --- a/src/Core/AdminConsole/OrganizationFeatures/InviteLinks/RefreshOrganizationInviteLinkRequest.cs +++ b/src/Core/AdminConsole/OrganizationFeatures/InviteLinks/RefreshOrganizationInviteLinkRequest.cs @@ -10,7 +10,7 @@ public record RefreshOrganizationInviteLinkRequest public required string Invite { get; init; } /// - /// Indicates if the link supports user auto confirmation (not supported yet). + /// Whether this invite link can be used to confirm a user. /// public required bool SupportsConfirmation { get; init; } } diff --git a/src/Core/AdminConsole/OrganizationFeatures/InviteLinks/UpdateInviteSupportConfirmCommand.cs b/src/Core/AdminConsole/OrganizationFeatures/InviteLinks/UpdateInviteSupportConfirmCommand.cs new file mode 100644 index 000000000000..c2bf439521d2 --- /dev/null +++ b/src/Core/AdminConsole/OrganizationFeatures/InviteLinks/UpdateInviteSupportConfirmCommand.cs @@ -0,0 +1,43 @@ +using Bit.Core.AdminConsole.AbilitiesCache; +using Bit.Core.AdminConsole.Entities; +using Bit.Core.AdminConsole.OrganizationFeatures.InviteLinks.Interfaces; +using Bit.Core.AdminConsole.Repositories; +using Bit.Core.AdminConsole.Utilities.v2.Results; + +namespace Bit.Core.AdminConsole.OrganizationFeatures.InviteLinks; + +public class UpdateInviteSupportConfirmCommand( + IOrganizationInviteLinkRepository organizationInviteLinkRepository, + IOrganizationAbilityCacheService organizationAbilityCacheService, + TimeProvider timeProvider) + : IUpdateInviteSupportConfirmCommand +{ + public async Task> UpdateAsync( + UpdateInviteSupportConfirmRequest request) + { + if (!await OrganizationHasInviteLinksAbilityAsync(request.OrganizationId)) + { + return new InviteLinkNotAvailable(); + } + + var inviteLink = await organizationInviteLinkRepository.GetByOrganizationIdAsync(request.OrganizationId); + if (inviteLink is null) + { + return new InviteLinkNotFound(); + } + + inviteLink.Invite = request.Invite; + inviteLink.SupportsConfirmation = request.SupportsConfirmation; + inviteLink.RevisionDate = timeProvider.GetUtcNow().UtcDateTime; + + await organizationInviteLinkRepository.ReplaceAsync(inviteLink); + + return inviteLink; + } + + private async Task OrganizationHasInviteLinksAbilityAsync(Guid organizationId) + { + var ability = await organizationAbilityCacheService.GetOrganizationAbilityAsync(organizationId); + return ability is not null && ability.UseInviteLinks; + } +} diff --git a/src/Core/AdminConsole/OrganizationFeatures/InviteLinks/UpdateInviteSupportConfirmRequest.cs b/src/Core/AdminConsole/OrganizationFeatures/InviteLinks/UpdateInviteSupportConfirmRequest.cs new file mode 100644 index 000000000000..40925a86c2c6 --- /dev/null +++ b/src/Core/AdminConsole/OrganizationFeatures/InviteLinks/UpdateInviteSupportConfirmRequest.cs @@ -0,0 +1,16 @@ +namespace Bit.Core.AdminConsole.OrganizationFeatures.InviteLinks; + +public record UpdateInviteSupportConfirmRequest +{ + public required Guid OrganizationId { get; init; } + + /// + /// The invite link cryptographic blob. + /// + public required string Invite { get; init; } + + /// + /// Whether this invite link can be used to confirm a user. + /// + public required bool SupportsConfirmation { get; init; } +} diff --git a/src/Core/OrganizationFeatures/OrganizationServiceCollectionExtensions.cs b/src/Core/OrganizationFeatures/OrganizationServiceCollectionExtensions.cs index a6231fabb12e..01c01562ae9c 100644 --- a/src/Core/OrganizationFeatures/OrganizationServiceCollectionExtensions.cs +++ b/src/Core/OrganizationFeatures/OrganizationServiceCollectionExtensions.cs @@ -207,6 +207,7 @@ private static void AddOrganizationInviteLinkCommandsQueries(this IServiceCollec services.TryAddScoped(); services.TryAddScoped(); services.TryAddScoped(); + services.TryAddScoped(); services.TryAddScoped(); services.TryAddScoped(); services.TryAddScoped(); From 75bb09c9d7df1d4716ee05ab5dfd295332999da7 Mon Sep 17 00:00:00 2001 From: Jimmy Vo Date: Thu, 16 Jul 2026 17:49:03 -0400 Subject: [PATCH 2/3] [PM-38749] Add tests --- .../OrganizationInviteLinksControllerTests.cs | 55 +++++++ .../OrganizationInviteLinksControllerTests.cs | 85 ++++++++++ .../UpdateInviteSupportConfirmCommandTests.cs | 153 ++++++++++++++++++ 3 files changed, 293 insertions(+) create mode 100644 test/Core.Test/AdminConsole/OrganizationFeatures/InviteLinks/UpdateInviteSupportConfirmCommandTests.cs diff --git a/test/Api.IntegrationTest/AdminConsole/Controllers/OrganizationInviteLinksControllerTests.cs b/test/Api.IntegrationTest/AdminConsole/Controllers/OrganizationInviteLinksControllerTests.cs index 6257b06bb5b3..7447f4a37316 100644 --- a/test/Api.IntegrationTest/AdminConsole/Controllers/OrganizationInviteLinksControllerTests.cs +++ b/test/Api.IntegrationTest/AdminConsole/Controllers/OrganizationInviteLinksControllerTests.cs @@ -183,6 +183,61 @@ public async Task CreateThenUpdateThenGet_AsOwner_ReturnsCreatedAndOkAndOk() Assert.Equal(["example.com", "new.com"], content.AllowedDomains); } + [Fact] + public async Task UpdateInviteSupportConfirmThenGet_AsOwner_UpdatesOnlyInviteAndSupportsConfirmation() + { + // Arrange + var createRequest = new CreateOrganizationInviteLinkRequestModel + { + AllowedDomains = ["acme.com"], + Invite = _invite, + SupportsConfirmation = false, + }; + + var createResponse = await _client.PostAsJsonAsync( + $"/organizations/{_organization.Id}/invite-link", createRequest); + + Assert.Equal(HttpStatusCode.Created, createResponse.StatusCode); + + var created = await createResponse.Content.ReadFromJsonAsync(); + Assert.NotNull(created); + + const string updatedInvite = "updated-invite-blob"; + var updateRequest = new UpdateInviteSupportConfirmRequestModel + { + Invite = updatedInvite, + SupportsConfirmation = true, + }; + + // Act + var updateResponse = await _client.PutAsJsonAsync( + $"/organizations/{_organization.Id}/invite-link/support-confirm", updateRequest); + + // Assert + Assert.Equal(HttpStatusCode.OK, updateResponse.StatusCode); + + var updated = await updateResponse.Content.ReadFromJsonAsync(); + Assert.NotNull(updated); + Assert.Equal(created.Id, updated.Id); + Assert.Equal(created.Code, updated.Code); + Assert.Equal(_organization.Id, updated.OrganizationId); + Assert.Equal(updatedInvite, updated.Invite); + Assert.True(updated.SupportsConfirmation); + Assert.Equal(["acme.com"], updated.AllowedDomains); + + var getResponse = await _client.GetAsync($"/organizations/{_organization.Id}/invite-link"); + + Assert.Equal(HttpStatusCode.OK, getResponse.StatusCode); + + var content = await getResponse.Content.ReadFromJsonAsync(); + Assert.NotNull(content); + Assert.Equal(created.Id, content.Id); + Assert.Equal(created.Code, content.Code); + Assert.Equal(updatedInvite, content.Invite); + Assert.True(content.SupportsConfirmation); + Assert.Equal(["acme.com"], content.AllowedDomains); + } + [Fact] public async Task Delete_AsOwner_ReturnsNoContentAndRemovesLink() { diff --git a/test/Api.Test/AdminConsole/Controllers/OrganizationInviteLinksControllerTests.cs b/test/Api.Test/AdminConsole/Controllers/OrganizationInviteLinksControllerTests.cs index 3ed917c06d91..f81c86ff2ab1 100644 --- a/test/Api.Test/AdminConsole/Controllers/OrganizationInviteLinksControllerTests.cs +++ b/test/Api.Test/AdminConsole/Controllers/OrganizationInviteLinksControllerTests.cs @@ -222,6 +222,91 @@ public async Task Update_WithValidationError_Returns400( Assert.NotNull(badRequestResult.Value); } + [Theory, BitAutoData] + public async Task UpdateInviteSupportConfirm_WithValidInput_ReturnsOk( + Guid orgId, + OrganizationInviteLink inviteLink, + SutProvider sutProvider) + { + // Arrange + inviteLink.OrganizationId = orgId; + inviteLink.AllowedDomains = "[\"acme.com\"]"; + + var model = new UpdateInviteSupportConfirmRequestModel + { + Invite = "new-invite-blob", + SupportsConfirmation = true, + }; + + sutProvider.GetDependency() + .UpdateAsync(Arg.Any()) + .Returns(new CommandResult(inviteLink)); + + // Act + var result = await sutProvider.Sut.UpdateInviteSupportConfirm(orgId, model); + + // Assert + var okResult = Assert.IsType>(result); + Assert.NotNull(okResult.Value); + Assert.Equal(inviteLink.Id, okResult.Value.Id); + Assert.Equal(orgId, okResult.Value.OrganizationId); + + await sutProvider.GetDependency() + .Received(1) + .UpdateAsync(Arg.Is(r => + r.OrganizationId == orgId && + r.Invite == "new-invite-blob" && + r.SupportsConfirmation == true)); + } + + [Theory, BitAutoData] + public async Task UpdateInviteSupportConfirm_WhenNoLinkExists_ReturnsNotFound( + Guid orgId, + SutProvider sutProvider) + { + // Arrange + var model = new UpdateInviteSupportConfirmRequestModel + { + Invite = "new-invite-blob", + SupportsConfirmation = true, + }; + + sutProvider.GetDependency() + .UpdateAsync(Arg.Any()) + .Returns(new CommandResult(new InviteLinkNotFound())); + + // Act + var result = await sutProvider.Sut.UpdateInviteSupportConfirm(orgId, model); + + // Assert + var notFoundResult = Assert.IsType>(result); + Assert.NotNull(notFoundResult.Value); + } + + [Theory, BitAutoData] + public async Task UpdateInviteSupportConfirm_WhenInviteLinkNotAvailable_Returns400( + Guid orgId, + SutProvider sutProvider) + { + // Arrange + var model = new UpdateInviteSupportConfirmRequestModel + { + Invite = "new-invite-blob", + SupportsConfirmation = true, + }; + + sutProvider.GetDependency() + .UpdateAsync(Arg.Any()) + .Returns(new CommandResult(new InviteLinkNotAvailable())); + + // Act + var result = await sutProvider.Sut.UpdateInviteSupportConfirm(orgId, model); + + // Assert + var badRequestResult = Assert.IsType>(result); + Assert.NotNull(badRequestResult.Value); + } + [Theory, BitAutoData] public async Task GetStatus_WithValidQuery_Success( GetOrganizationInviteLinkStatusRequestModel model, diff --git a/test/Core.Test/AdminConsole/OrganizationFeatures/InviteLinks/UpdateInviteSupportConfirmCommandTests.cs b/test/Core.Test/AdminConsole/OrganizationFeatures/InviteLinks/UpdateInviteSupportConfirmCommandTests.cs new file mode 100644 index 000000000000..64291dc87711 --- /dev/null +++ b/test/Core.Test/AdminConsole/OrganizationFeatures/InviteLinks/UpdateInviteSupportConfirmCommandTests.cs @@ -0,0 +1,153 @@ +using Bit.Core.AdminConsole.AbilitiesCache; +using Bit.Core.AdminConsole.Entities; +using Bit.Core.AdminConsole.OrganizationFeatures.InviteLinks; +using Bit.Core.AdminConsole.Repositories; +using Bit.Core.Models.Data.Organizations; +using Bit.Test.Common.AutoFixture; +using Bit.Test.Common.AutoFixture.Attributes; +using Microsoft.Extensions.Time.Testing; +using NSubstitute; +using Xunit; + +namespace Bit.Core.Test.AdminConsole.OrganizationFeatures.InviteLinks; + +[SutProviderCustomize] +public class UpdateInviteSupportConfirmCommandTests +{ + private static SutProvider GetSutProvider() => + new SutProvider() + .WithFakeTimeProvider() + .Create(); + + [Theory, BitAutoData] + public async Task UpdateAsync_WithValidInput_UpdatesOnlyInviteAndSupportsConfirmation(Guid organizationId) + { + // Arrange + var sutProvider = GetSutProvider(); + var now = new DateTime(2026, 7, 16, 12, 0, 0, DateTimeKind.Utc); + sutProvider.GetDependency().SetUtcNow(now); + + SetupAbility(sutProvider, organizationId); + + var originalCreationDate = now.AddDays(-5); + var existingLink = new OrganizationInviteLink + { + Id = Guid.NewGuid(), + Code = Guid.NewGuid(), + OrganizationId = organizationId, + Invite = "old-invite-blob", + SupportsConfirmation = false, + CreationDate = originalCreationDate, + RevisionDate = originalCreationDate, + }; + existingLink.SetAllowedDomains(["acme.com"]); + var originalAllowedDomains = existingLink.AllowedDomains; + + sutProvider.GetDependency() + .GetByOrganizationIdAsync(organizationId) + .Returns(existingLink); + + var request = CreateRequest(organizationId, "new-invite-blob", supportsConfirmation: true); + + // Act + var result = await sutProvider.Sut.UpdateAsync(request); + + // Assert + Assert.True(result.IsSuccess); + var link = result.AsSuccess; + Assert.Same(existingLink, link); + Assert.Equal("new-invite-blob", link.Invite); + Assert.True(link.SupportsConfirmation); + Assert.Equal(now, link.RevisionDate); + Assert.Equal(originalCreationDate, link.CreationDate); + Assert.Equal(originalAllowedDomains, link.AllowedDomains); + + await sutProvider.GetDependency() + .Received(1) + .ReplaceAsync(existingLink); + } + + [Theory, BitAutoData] + public async Task UpdateAsync_WithNoExistingLink_ReturnsNotFoundError(Guid organizationId) + { + // Arrange + var sutProvider = GetSutProvider(); + SetupAbility(sutProvider, organizationId); + sutProvider.GetDependency() + .GetByOrganizationIdAsync(organizationId) + .Returns((OrganizationInviteLink?)null); + + var request = CreateRequest(organizationId, "new-invite-blob", supportsConfirmation: true); + + // Act + var result = await sutProvider.Sut.UpdateAsync(request); + + // Assert + Assert.True(result.IsError); + Assert.IsType(result.AsError); + + await sutProvider.GetDependency() + .DidNotReceiveWithAnyArgs() + .ReplaceAsync(default!); + } + + [Theory, BitAutoData] + public async Task UpdateAsync_WithoutUseInviteLinksAbility_ReturnsNotAvailableError(Guid organizationId) + { + // Arrange + var sutProvider = GetSutProvider(); + SetupAbility(sutProvider, organizationId, useInviteLinks: false); + + var request = CreateRequest(organizationId, "new-invite-blob", supportsConfirmation: true); + + // Act + var result = await sutProvider.Sut.UpdateAsync(request); + + // Assert + Assert.True(result.IsError); + Assert.IsType(result.AsError); + + await sutProvider.GetDependency() + .DidNotReceiveWithAnyArgs() + .GetByOrganizationIdAsync(default); + } + + [Theory, BitAutoData] + public async Task UpdateAsync_WithNullAbility_ReturnsNotAvailableError(Guid organizationId) + { + // Arrange + var sutProvider = GetSutProvider(); + sutProvider.GetDependency() + .GetOrganizationAbilityAsync(organizationId) + .Returns((OrganizationAbility?)null); + + var request = CreateRequest(organizationId, "new-invite-blob", supportsConfirmation: true); + + // Act + var result = await sutProvider.Sut.UpdateAsync(request); + + // Assert + Assert.True(result.IsError); + Assert.IsType(result.AsError); + } + + private static void SetupAbility( + SutProvider sutProvider, + Guid organizationId, + bool useInviteLinks = true) + { + sutProvider.GetDependency() + .GetOrganizationAbilityAsync(organizationId) + .Returns(new OrganizationAbility { UseInviteLinks = useInviteLinks }); + } + + private static UpdateInviteSupportConfirmRequest CreateRequest( + Guid organizationId, + string invite, + bool supportsConfirmation) => new() + { + OrganizationId = organizationId, + Invite = invite, + SupportsConfirmation = supportsConfirmation, + }; +} From 1ec5c4b8bb1cf2209bd199fcb3017738d113e761 Mon Sep 17 00:00:00 2001 From: Jimmy Vo Date: Fri, 17 Jul 2026 10:09:22 -0400 Subject: [PATCH 3/3] Potential fix for pull request finding 'Unnecessarily complex Boolean expression' Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com> --- .../Controllers/OrganizationInviteLinksControllerTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Api.Test/AdminConsole/Controllers/OrganizationInviteLinksControllerTests.cs b/test/Api.Test/AdminConsole/Controllers/OrganizationInviteLinksControllerTests.cs index f81c86ff2ab1..a2a958631563 100644 --- a/test/Api.Test/AdminConsole/Controllers/OrganizationInviteLinksControllerTests.cs +++ b/test/Api.Test/AdminConsole/Controllers/OrganizationInviteLinksControllerTests.cs @@ -256,7 +256,7 @@ await sutProvider.GetDependency() .UpdateAsync(Arg.Is(r => r.OrganizationId == orgId && r.Invite == "new-invite-blob" && - r.SupportsConfirmation == true)); + r.SupportsConfirmation)); } [Theory, BitAutoData]