diff --git a/.github/renovate.json5 b/.github/renovate.json5 index bc377ed46c..62a483f4d2 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -80,7 +80,7 @@ { matchPackageNames: [ "AutoFixture.AutoNSubstitute", - "AutoFixture.Xunit2", + "AutoFixture.Xunit3", "BenchmarkDotNet", "BitPay.Light", "Braintree", @@ -98,8 +98,7 @@ "Stripe.net", "Swashbuckle.AspNetCore", "Swashbuckle.AspNetCore.SwaggerGen", - "xunit", - "xunit.runner.visualstudio", + "xunit.v3", ], description: "Billing owned dependencies", commitMessagePrefix: "[deps] Billing:", diff --git a/Directory.Build.props b/Directory.Build.props index 3e55b8a8cc..73a51fac8b 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -11,23 +11,29 @@ annotations enable true + $(WarningsNotAsErrors);xUnit1051 + + + + Exe + true + true - - + 17.8.0 - - 2.6.6 - - 2.5.6 - + + 3.0.1 + + 3.1.4 + 6.0.0 - + 5.1.0 - - 4.18.1 - + + 4.19.0 + 4.18.1 - \ No newline at end of file + diff --git a/bitwarden_license/test/Commercial.Core.Test/AdminConsole/AutoFixture/ProviderUserFixtures.cs b/bitwarden_license/test/Commercial.Core.Test/AdminConsole/AutoFixture/ProviderUserFixtures.cs index fc47e80c87..1651ba25e2 100644 --- a/bitwarden_license/test/Commercial.Core.Test/AdminConsole/AutoFixture/ProviderUserFixtures.cs +++ b/bitwarden_license/test/Commercial.Core.Test/AdminConsole/AutoFixture/ProviderUserFixtures.cs @@ -1,6 +1,6 @@ using System.Reflection; using AutoFixture; -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Core.AdminConsole.Enums.Provider; namespace Bit.Commercial.Core.Test.AdminConsole.AutoFixture; diff --git a/bitwarden_license/test/Commercial.Core.Test/Commercial.Core.Test.csproj b/bitwarden_license/test/Commercial.Core.Test/Commercial.Core.Test.csproj index 6c92db92b9..7249b441b9 100644 --- a/bitwarden_license/test/Commercial.Core.Test/Commercial.Core.Test.csproj +++ b/bitwarden_license/test/Commercial.Core.Test/Commercial.Core.Test.csproj @@ -5,12 +5,7 @@ - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/bitwarden_license/test/Commercial.Core.Test/SecretsManager/Queries/AccessPolicies/ProjectServiceAccountsAccessPoliciesUpdatesQueryTests.cs b/bitwarden_license/test/Commercial.Core.Test/SecretsManager/Queries/AccessPolicies/ProjectServiceAccountsAccessPoliciesUpdatesQueryTests.cs index ce11cde2b5..ec919d8ead 100644 --- a/bitwarden_license/test/Commercial.Core.Test/SecretsManager/Queries/AccessPolicies/ProjectServiceAccountsAccessPoliciesUpdatesQueryTests.cs +++ b/bitwarden_license/test/Commercial.Core.Test/SecretsManager/Queries/AccessPolicies/ProjectServiceAccountsAccessPoliciesUpdatesQueryTests.cs @@ -75,11 +75,11 @@ public class ProjectServiceAccountsAccessPoliciesUpdatesQueryTests Assert.Equal(data.ProjectId, result.ProjectId); Assert.Equal(data.OrganizationId, result.OrganizationId); - Assert.Single(result.ServiceAccountAccessPolicyUpdates.Where(x => - x.Operation == AccessPolicyOperation.Delete && x.AccessPolicy == currentPolicyToDelete)); - Assert.Single(result.ServiceAccountAccessPolicyUpdates.Where(x => + Assert.Single(result.ServiceAccountAccessPolicyUpdates, x => + x.Operation == AccessPolicyOperation.Delete && x.AccessPolicy == currentPolicyToDelete); + Assert.Single(result.ServiceAccountAccessPolicyUpdates, x => x.Operation == AccessPolicyOperation.Update && - x.AccessPolicy.GrantedProjectId == updatePolicy.GrantedProjectId)); + x.AccessPolicy.GrantedProjectId == updatePolicy.GrantedProjectId); Assert.Equal(result.ServiceAccountAccessPolicyUpdates.Count() - 2, result.ServiceAccountAccessPolicyUpdates.Count(x => x.Operation == AccessPolicyOperation.Create)); } diff --git a/bitwarden_license/test/Commercial.Core.Test/SecretsManager/Queries/AccessPolicies/SecretAccessPoliciesUpdatesQueryTests.cs b/bitwarden_license/test/Commercial.Core.Test/SecretsManager/Queries/AccessPolicies/SecretAccessPoliciesUpdatesQueryTests.cs index 0402a9086a..653218caa8 100644 --- a/bitwarden_license/test/Commercial.Core.Test/SecretsManager/Queries/AccessPolicies/SecretAccessPoliciesUpdatesQueryTests.cs +++ b/bitwarden_license/test/Commercial.Core.Test/SecretsManager/Queries/AccessPolicies/SecretAccessPoliciesUpdatesQueryTests.cs @@ -88,27 +88,27 @@ public class SecretAccessPoliciesUpdatesQueryTests Assert.Equal(data.SecretId, result.SecretId); Assert.Equal(data.OrganizationId, result.OrganizationId); - Assert.Single(result.UserAccessPolicyUpdates.Where(x => - x.Operation == AccessPolicyOperation.Delete && x.AccessPolicy == userPolicyChanges.Delete)); - Assert.Single(result.UserAccessPolicyUpdates.Where(x => + Assert.Single(result.UserAccessPolicyUpdates, x => + x.Operation == AccessPolicyOperation.Delete && x.AccessPolicy == userPolicyChanges.Delete); + Assert.Single(result.UserAccessPolicyUpdates, x => x.Operation == AccessPolicyOperation.Update && - x.AccessPolicy.OrganizationUserId == userPolicyChanges.Update.OrganizationUserId)); + x.AccessPolicy.OrganizationUserId == userPolicyChanges.Update.OrganizationUserId); Assert.Equal(result.UserAccessPolicyUpdates.Count() - 2, result.UserAccessPolicyUpdates.Count(x => x.Operation == AccessPolicyOperation.Create)); - Assert.Single(result.GroupAccessPolicyUpdates.Where(x => - x.Operation == AccessPolicyOperation.Delete && x.AccessPolicy == groupPolicyChanges.Delete)); - Assert.Single(result.GroupAccessPolicyUpdates.Where(x => + Assert.Single(result.GroupAccessPolicyUpdates, x => + x.Operation == AccessPolicyOperation.Delete && x.AccessPolicy == groupPolicyChanges.Delete); + Assert.Single(result.GroupAccessPolicyUpdates, x => x.Operation == AccessPolicyOperation.Update && - x.AccessPolicy.GroupId == groupPolicyChanges.Update.GroupId)); + x.AccessPolicy.GroupId == groupPolicyChanges.Update.GroupId); Assert.Equal(result.GroupAccessPolicyUpdates.Count() - 2, result.GroupAccessPolicyUpdates.Count(x => x.Operation == AccessPolicyOperation.Create)); - Assert.Single(result.ServiceAccountAccessPolicyUpdates.Where(x => - x.Operation == AccessPolicyOperation.Delete && x.AccessPolicy == serviceAccountPolicyChanges.Delete)); - Assert.Single(result.ServiceAccountAccessPolicyUpdates.Where(x => + Assert.Single(result.ServiceAccountAccessPolicyUpdates, x => + x.Operation == AccessPolicyOperation.Delete && x.AccessPolicy == serviceAccountPolicyChanges.Delete); + Assert.Single(result.ServiceAccountAccessPolicyUpdates, x => x.Operation == AccessPolicyOperation.Update && - x.AccessPolicy.ServiceAccountId == serviceAccountPolicyChanges.Update.ServiceAccountId)); + x.AccessPolicy.ServiceAccountId == serviceAccountPolicyChanges.Update.ServiceAccountId); Assert.Equal(result.ServiceAccountAccessPolicyUpdates.Count() - 2, result.ServiceAccountAccessPolicyUpdates.Count(x => x.Operation == AccessPolicyOperation.Create)); } diff --git a/bitwarden_license/test/Commercial.Core.Test/SecretsManager/Queries/AccessPolicies/ServiceAccountGrantedPolicyUpdatesQueryTests.cs b/bitwarden_license/test/Commercial.Core.Test/SecretsManager/Queries/AccessPolicies/ServiceAccountGrantedPolicyUpdatesQueryTests.cs index 64ee4cd34e..835baa0c0c 100644 --- a/bitwarden_license/test/Commercial.Core.Test/SecretsManager/Queries/AccessPolicies/ServiceAccountGrantedPolicyUpdatesQueryTests.cs +++ b/bitwarden_license/test/Commercial.Core.Test/SecretsManager/Queries/AccessPolicies/ServiceAccountGrantedPolicyUpdatesQueryTests.cs @@ -75,11 +75,11 @@ public class ServiceAccountGrantedPolicyUpdatesQueryTests Assert.Equal(data.ServiceAccountId, result.ServiceAccountId); Assert.Equal(data.OrganizationId, result.OrganizationId); - Assert.Single(result.ProjectGrantedPolicyUpdates.Where(x => - x.Operation == AccessPolicyOperation.Delete && x.AccessPolicy == currentPolicyToDelete)); - Assert.Single(result.ProjectGrantedPolicyUpdates.Where(x => + Assert.Single(result.ProjectGrantedPolicyUpdates, x => + x.Operation == AccessPolicyOperation.Delete && x.AccessPolicy == currentPolicyToDelete); + Assert.Single(result.ProjectGrantedPolicyUpdates, x => x.Operation == AccessPolicyOperation.Update && - x.AccessPolicy.GrantedProjectId == updatePolicy.GrantedProjectId)); + x.AccessPolicy.GrantedProjectId == updatePolicy.GrantedProjectId); Assert.Equal(result.ProjectGrantedPolicyUpdates.Count() - 2, result.ProjectGrantedPolicyUpdates.Count(x => x.Operation == AccessPolicyOperation.Create)); } diff --git a/bitwarden_license/test/SSO.Test/Controllers/AccountControllerTest.cs b/bitwarden_license/test/SSO.Test/Controllers/AccountControllerTest.cs index c04948e21f..aeba01fa80 100644 --- a/bitwarden_license/test/SSO.Test/Controllers/AccountControllerTest.cs +++ b/bitwarden_license/test/SSO.Test/Controllers/AccountControllerTest.cs @@ -23,7 +23,6 @@ using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.DependencyInjection; using NSubstitute; -using Xunit.Abstractions; using AuthenticationOptions = Duende.IdentityServer.Configuration.AuthenticationOptions; namespace Bit.SSO.Test.Controllers; diff --git a/bitwarden_license/test/SSO.Test/SSO.Test.csproj b/bitwarden_license/test/SSO.Test/SSO.Test.csproj index 4b509c9a50..260f9ece02 100644 --- a/bitwarden_license/test/SSO.Test/SSO.Test.csproj +++ b/bitwarden_license/test/SSO.Test/SSO.Test.csproj @@ -10,12 +10,7 @@ - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/bitwarden_license/test/Scim.IntegrationTest/Controllers/v2/GroupsControllerPatchTests.cs b/bitwarden_license/test/Scim.IntegrationTest/Controllers/v2/GroupsControllerPatchTests.cs index 66ce386d07..014a5813b9 100644 --- a/bitwarden_license/test/Scim.IntegrationTest/Controllers/v2/GroupsControllerPatchTests.cs +++ b/bitwarden_license/test/Scim.IntegrationTest/Controllers/v2/GroupsControllerPatchTests.cs @@ -16,15 +16,15 @@ public class GroupsControllerPatchTests : IClassFixture, _factory = factory; } - public Task InitializeAsync() + public ValueTask InitializeAsync() { var databaseContext = _factory.GetDatabaseContext(); _factory.ReinitializeDbForTests(databaseContext); - return Task.CompletedTask; + return ValueTask.CompletedTask; } - Task IAsyncLifetime.DisposeAsync() => Task.CompletedTask; + ValueTask IAsyncDisposable.DisposeAsync() => ValueTask.CompletedTask; [Fact] public async Task Patch_ReplaceDisplayName_Success() diff --git a/bitwarden_license/test/Scim.IntegrationTest/Controllers/v2/GroupsControllerTests.cs b/bitwarden_license/test/Scim.IntegrationTest/Controllers/v2/GroupsControllerTests.cs index 5f562a30c5..f276515f54 100644 --- a/bitwarden_license/test/Scim.IntegrationTest/Controllers/v2/GroupsControllerTests.cs +++ b/bitwarden_license/test/Scim.IntegrationTest/Controllers/v2/GroupsControllerTests.cs @@ -16,14 +16,14 @@ public class GroupsControllerTests : IClassFixture, IAsy _factory = factory; } - public Task InitializeAsync() + public ValueTask InitializeAsync() { var databaseContext = _factory.GetDatabaseContext(); _factory.ReinitializeDbForTests(databaseContext); - return Task.CompletedTask; + return ValueTask.CompletedTask; } - Task IAsyncLifetime.DisposeAsync() => Task.CompletedTask; + ValueTask IAsyncDisposable.DisposeAsync() => ValueTask.CompletedTask; [Fact] public async Task Get_Success() diff --git a/bitwarden_license/test/Scim.IntegrationTest/Controllers/v2/UsersControllerTests.cs b/bitwarden_license/test/Scim.IntegrationTest/Controllers/v2/UsersControllerTests.cs index 1f86d99b63..a1237db3c8 100644 --- a/bitwarden_license/test/Scim.IntegrationTest/Controllers/v2/UsersControllerTests.cs +++ b/bitwarden_license/test/Scim.IntegrationTest/Controllers/v2/UsersControllerTests.cs @@ -22,14 +22,14 @@ public class UsersControllerTests : IClassFixture, IAsyn _factory = factory; } - public Task InitializeAsync() + public ValueTask InitializeAsync() { var databaseContext = _factory.GetDatabaseContext(); _factory.ReinitializeDbForTests(databaseContext); - return Task.CompletedTask; + return ValueTask.CompletedTask; } - Task IAsyncLifetime.DisposeAsync() => Task.CompletedTask; + ValueTask IAsyncDisposable.DisposeAsync() => ValueTask.CompletedTask; [Fact] public async Task Get_Success() diff --git a/bitwarden_license/test/Scim.IntegrationTest/Scim.IntegrationTest.csproj b/bitwarden_license/test/Scim.IntegrationTest/Scim.IntegrationTest.csproj index 4fc79f2025..270a970701 100644 --- a/bitwarden_license/test/Scim.IntegrationTest/Scim.IntegrationTest.csproj +++ b/bitwarden_license/test/Scim.IntegrationTest/Scim.IntegrationTest.csproj @@ -10,14 +10,9 @@ all - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - + + diff --git a/bitwarden_license/test/Scim.Test/Scim.Test.csproj b/bitwarden_license/test/Scim.Test/Scim.Test.csproj index 2950103e7d..8ad2d23ecf 100644 --- a/bitwarden_license/test/Scim.Test/Scim.Test.csproj +++ b/bitwarden_license/test/Scim.Test/Scim.Test.csproj @@ -5,12 +5,7 @@ - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - + runtime; build; native; contentfiles; analyzers; buildtransitive all @@ -22,4 +17,4 @@ - \ No newline at end of file + diff --git a/test/Admin.Test/Admin.Test.csproj b/test/Admin.Test/Admin.Test.csproj index 585da019d0..19772fe8fc 100644 --- a/test/Admin.Test/Admin.Test.csproj +++ b/test/Admin.Test/Admin.Test.csproj @@ -8,13 +8,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive all - - - - all - runtime; build; native; contentfiles; analyzers - + diff --git a/test/Api.IntegrationTest/AdminConsole/Controllers/OrganizationUserControllerTests.cs b/test/Api.IntegrationTest/AdminConsole/Controllers/OrganizationUserControllerTests.cs index 7c61a88bd8..eedb4f8ed0 100644 --- a/test/Api.IntegrationTest/AdminConsole/Controllers/OrganizationUserControllerTests.cs +++ b/test/Api.IntegrationTest/AdminConsole/Controllers/OrganizationUserControllerTests.cs @@ -213,7 +213,7 @@ public class OrganizationUserControllerTests : IClassFixture CreateTestDataAsync() diff --git a/test/Api.IntegrationTest/AdminConsole/Controllers/OrganizationUsersControllerPerformanceTests.cs b/test/Api.IntegrationTest/AdminConsole/Controllers/OrganizationUsersControllerPerformanceTests.cs index d77a41f52e..2283a31f4d 100644 --- a/test/Api.IntegrationTest/AdminConsole/Controllers/OrganizationUsersControllerPerformanceTests.cs +++ b/test/Api.IntegrationTest/AdminConsole/Controllers/OrganizationUsersControllerPerformanceTests.cs @@ -3,7 +3,6 @@ using System.Net.Http.Headers; using Bit.Api.IntegrationTest.Factories; using Bit.Seeder.Recipes; using Xunit; -using Xunit.Abstractions; namespace Bit.Api.IntegrationTest.AdminConsole.Controllers; diff --git a/test/Api.IntegrationTest/AdminConsole/Controllers/OrganizationUsersControllerPutResetPasswordTests.cs b/test/Api.IntegrationTest/AdminConsole/Controllers/OrganizationUsersControllerPutResetPasswordTests.cs index cf842d1568..f802f24da0 100644 --- a/test/Api.IntegrationTest/AdminConsole/Controllers/OrganizationUsersControllerPutResetPasswordTests.cs +++ b/test/Api.IntegrationTest/AdminConsole/Controllers/OrganizationUsersControllerPutResetPasswordTests.cs @@ -42,7 +42,7 @@ public class OrganizationUsersControllerPutResetPasswordTests : IClassFixture diff --git a/test/Api.IntegrationTest/AdminConsole/Controllers/PoliciesControllerTests.cs b/test/Api.IntegrationTest/AdminConsole/Controllers/PoliciesControllerTests.cs index e4098ce9a9..54fca1fd39 100644 --- a/test/Api.IntegrationTest/AdminConsole/Controllers/PoliciesControllerTests.cs +++ b/test/Api.IntegrationTest/AdminConsole/Controllers/PoliciesControllerTests.cs @@ -39,7 +39,7 @@ public class PoliciesControllerTests : IClassFixture, IAs _loginHelper = new LoginHelper(_factory, _client); } - public async Task InitializeAsync() + public async ValueTask InitializeAsync() { _ownerEmail = $"integration-test{Guid.NewGuid()}@bitwarden.com"; await _factory.LoginWithNewAccount(_ownerEmail); @@ -50,10 +50,10 @@ public class PoliciesControllerTests : IClassFixture, IAs await _loginHelper.LoginAsync(_ownerEmail); } - public Task DisposeAsync() + public ValueTask DisposeAsync() { _client.Dispose(); - return Task.CompletedTask; + return ValueTask.CompletedTask; } [Fact] diff --git a/test/Api.IntegrationTest/AdminConsole/Import/ImportOrganizationUsersAndGroupsCommandTests.cs b/test/Api.IntegrationTest/AdminConsole/Import/ImportOrganizationUsersAndGroupsCommandTests.cs index 32c7f75a2b..08df8640d4 100644 --- a/test/Api.IntegrationTest/AdminConsole/Import/ImportOrganizationUsersAndGroupsCommandTests.cs +++ b/test/Api.IntegrationTest/AdminConsole/Import/ImportOrganizationUsersAndGroupsCommandTests.cs @@ -26,7 +26,7 @@ public class ImportOrganizationUsersAndGroupsCommandTests : IClassFixture, IAsy _loginHelper = new LoginHelper(_factory, _client); } - public async Task InitializeAsync() + public async ValueTask InitializeAsync() { // Create the owner account _ownerEmail = $"integration-test{Guid.NewGuid()}@bitwarden.com"; @@ -46,10 +46,10 @@ public class MembersControllerTests : IClassFixture, IAsy await _loginHelper.LoginWithOrganizationApiKeyAsync(_organization.Id); } - public Task DisposeAsync() + public ValueTask DisposeAsync() { _client.Dispose(); - return Task.CompletedTask; + return ValueTask.CompletedTask; } [Fact] diff --git a/test/Api.IntegrationTest/AdminConsole/Public/Controllers/PoliciesControllerTests.cs b/test/Api.IntegrationTest/AdminConsole/Public/Controllers/PoliciesControllerTests.cs index 0b5ab660b9..3fe1727a9e 100644 --- a/test/Api.IntegrationTest/AdminConsole/Public/Controllers/PoliciesControllerTests.cs +++ b/test/Api.IntegrationTest/AdminConsole/Public/Controllers/PoliciesControllerTests.cs @@ -32,7 +32,7 @@ public class PoliciesControllerTests : IClassFixture, IAs _loginHelper = new LoginHelper(_factory, _client); } - public async Task InitializeAsync() + public async ValueTask InitializeAsync() { // Create the owner account _ownerEmail = $"integration-test{Guid.NewGuid()}@bitwarden.com"; @@ -46,10 +46,10 @@ public class PoliciesControllerTests : IClassFixture, IAs await _loginHelper.LoginWithOrganizationApiKeyAsync(_organization.Id); } - public Task DisposeAsync() + public ValueTask DisposeAsync() { _client.Dispose(); - return Task.CompletedTask; + return ValueTask.CompletedTask; } [Fact] diff --git a/test/Api.IntegrationTest/Api.IntegrationTest.csproj b/test/Api.IntegrationTest/Api.IntegrationTest.csproj index a9d7fd502e..58d5eb50e3 100644 --- a/test/Api.IntegrationTest/Api.IntegrationTest.csproj +++ b/test/Api.IntegrationTest/Api.IntegrationTest.csproj @@ -4,12 +4,7 @@ - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/test/Api.IntegrationTest/Controllers/AccountsControllerTest.cs b/test/Api.IntegrationTest/Controllers/AccountsControllerTest.cs index 09ec5b010f..ad8f88bff6 100644 --- a/test/Api.IntegrationTest/Controllers/AccountsControllerTest.cs +++ b/test/Api.IntegrationTest/Controllers/AccountsControllerTest.cs @@ -51,16 +51,16 @@ public class AccountsControllerTest : IClassFixture, IAsy _passwordHasher = _factory.GetService>(); } - public async Task InitializeAsync() + public async ValueTask InitializeAsync() { _ownerEmail = $"integration-test{Guid.NewGuid()}@bitwarden.com"; await _factory.LoginWithNewAccount(_ownerEmail); } - public Task DisposeAsync() + public ValueTask DisposeAsync() { _client.Dispose(); - return Task.CompletedTask; + return ValueTask.CompletedTask; } [Fact] diff --git a/test/Api.IntegrationTest/Controllers/ConfigControllerTests.cs b/test/Api.IntegrationTest/Controllers/ConfigControllerTests.cs index 73fa3aba7d..bfe4c3201b 100644 --- a/test/Api.IntegrationTest/Controllers/ConfigControllerTests.cs +++ b/test/Api.IntegrationTest/Controllers/ConfigControllerTests.cs @@ -21,7 +21,7 @@ public class ConfigControllerTests : IClassFixture, IAsyn _client = _factory.CreateClient(); } - public async Task InitializeAsync() + public async ValueTask InitializeAsync() { _email = $"integration-test{Guid.NewGuid()}@bitwarden.com"; @@ -29,10 +29,10 @@ public class ConfigControllerTests : IClassFixture, IAsyn _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", tokens.Token); } - public Task DisposeAsync() + public ValueTask DisposeAsync() { _client.Dispose(); - return Task.CompletedTask; + return ValueTask.CompletedTask; } private async Task LoginAsync() diff --git a/test/Api.IntegrationTest/KeyManagement/Controllers/AccountsKeyManagementControllerTests.cs b/test/Api.IntegrationTest/KeyManagement/Controllers/AccountsKeyManagementControllerTests.cs index 1630bc0dc0..125d62b242 100644 --- a/test/Api.IntegrationTest/KeyManagement/Controllers/AccountsKeyManagementControllerTests.cs +++ b/test/Api.IntegrationTest/KeyManagement/Controllers/AccountsKeyManagementControllerTests.cs @@ -58,16 +58,16 @@ public class AccountsKeyManagementControllerTests : IClassFixture(); } - public async Task InitializeAsync() + public async ValueTask InitializeAsync() { _ownerEmail = $"integration-test{Guid.NewGuid()}@bitwarden.com"; await _factory.LoginWithNewAccount(_ownerEmail); } - public Task DisposeAsync() + public ValueTask DisposeAsync() { _client.Dispose(); - return Task.CompletedTask; + return ValueTask.CompletedTask; } [Theory] diff --git a/test/Api.IntegrationTest/NotificationCenter/Controllers/NotificationsControllerTests.cs b/test/Api.IntegrationTest/NotificationCenter/Controllers/NotificationsControllerTests.cs index ca04c9775d..ca1da061b2 100644 --- a/test/Api.IntegrationTest/NotificationCenter/Controllers/NotificationsControllerTests.cs +++ b/test/Api.IntegrationTest/NotificationCenter/Controllers/NotificationsControllerTests.cs @@ -49,7 +49,7 @@ public class NotificationsControllerTests : IClassFixture _userRepository = _factory.GetService(); } - public async Task InitializeAsync() + public async ValueTask InitializeAsync() { // Create the owner account _ownerEmail = $"integration-test{Guid.NewGuid()}@bitwarden.com"; @@ -63,7 +63,7 @@ public class NotificationsControllerTests : IClassFixture _notificationsWithStatuses = await CreateNotificationsWithStatusesAsync(); } - public Task DisposeAsync() + public ValueTask DisposeAsync() { _client.Dispose(); @@ -72,7 +72,7 @@ public class NotificationsControllerTests : IClassFixture _notificationRepository.DeleteAsync(notification); } - return Task.CompletedTask; + return ValueTask.CompletedTask; } [Theory] @@ -220,7 +220,7 @@ public class NotificationsControllerTests : IClassFixture } [Fact] - private async void MarkAsDeletedAsync_NotLoggedIn_Unauthorized() + private async Task MarkAsDeletedAsync_NotLoggedIn_Unauthorized() { var url = $"/notifications/{Guid.NewGuid().ToString()}/delete"; var response = await _client.PatchAsync(url, new StringContent("")); @@ -228,7 +228,7 @@ public class NotificationsControllerTests : IClassFixture } [Fact] - private async void MarkAsDeletedAsync_NonExistentNotificationId_NotFound() + private async Task MarkAsDeletedAsync_NonExistentNotificationId_NotFound() { await _loginHelper.LoginAsync(_ownerEmail); @@ -238,7 +238,7 @@ public class NotificationsControllerTests : IClassFixture } [Fact] - private async void MarkAsDeletedAsync_UserIdNotMatching_NotFound() + private async Task MarkAsDeletedAsync_UserIdNotMatching_NotFound() { var email = $"integration-test{Guid.NewGuid()}@bitwarden.com"; await _factory.LoginWithNewAccount(email); @@ -253,7 +253,7 @@ public class NotificationsControllerTests : IClassFixture } [Fact] - private async void MarkAsDeletedAsync_OrganizationIdNotMatchingUserNotPartOfOrganization_NotFound() + private async Task MarkAsDeletedAsync_OrganizationIdNotMatchingUserNotPartOfOrganization_NotFound() { var email = $"integration-test{Guid.NewGuid()}@bitwarden.com"; await _factory.LoginWithNewAccount(email); @@ -268,7 +268,7 @@ public class NotificationsControllerTests : IClassFixture } [Fact] - private async void MarkAsDeletedAsync_OrganizationIdNotMatchingUserPartOfDifferentOrganization_NotFound() + private async Task MarkAsDeletedAsync_OrganizationIdNotMatchingUserPartOfDifferentOrganization_NotFound() { var (organization, _) = await OrganizationTestHelpers.SignUpAsync(_factory, plan: PlanType.EnterpriseAnnually, ownerEmail: _ownerEmail, passwordManagerSeats: 10, @@ -287,7 +287,7 @@ public class NotificationsControllerTests : IClassFixture } [Fact] - private async void MarkAsDeletedAsync_NotificationStatusNotExisting_Created() + private async Task MarkAsDeletedAsync_NotificationStatusNotExisting_Created() { var notifications = await CreateNotificationsAsync(_organizationUserOwner.UserId); @@ -308,7 +308,7 @@ public class NotificationsControllerTests : IClassFixture [Theory] [InlineData(false)] [InlineData(true)] - private async void MarkAsDeletedAsync_NotificationStatusExisting_Updated(bool deletedDateNull) + private async Task MarkAsDeletedAsync_NotificationStatusExisting_Updated(bool deletedDateNull) { var notifications = await CreateNotificationsAsync(_organizationUserOwner.UserId); await _notificationStatusRepository.CreateAsync(new NotificationStatus @@ -334,7 +334,7 @@ public class NotificationsControllerTests : IClassFixture } [Fact] - private async void MarkAsReadAsync_NotLoggedIn_Unauthorized() + private async Task MarkAsReadAsync_NotLoggedIn_Unauthorized() { var url = $"/notifications/{Guid.NewGuid().ToString()}/read"; var response = await _client.PatchAsync(url, new StringContent("")); @@ -342,7 +342,7 @@ public class NotificationsControllerTests : IClassFixture } [Fact] - private async void MarkAsReadAsync_NonExistentNotificationId_NotFound() + private async Task MarkAsReadAsync_NonExistentNotificationId_NotFound() { await _loginHelper.LoginAsync(_ownerEmail); @@ -352,7 +352,7 @@ public class NotificationsControllerTests : IClassFixture } [Fact] - private async void MarkAsReadAsync_UserIdNotMatching_NotFound() + private async Task MarkAsReadAsync_UserIdNotMatching_NotFound() { var email = $"integration-test{Guid.NewGuid()}@bitwarden.com"; await _factory.LoginWithNewAccount(email); @@ -367,7 +367,7 @@ public class NotificationsControllerTests : IClassFixture } [Fact] - private async void MarkAsReadAsync_OrganizationIdNotMatchingUserNotPartOfOrganization_NotFound() + private async Task MarkAsReadAsync_OrganizationIdNotMatchingUserNotPartOfOrganization_NotFound() { var email = $"integration-test{Guid.NewGuid()}@bitwarden.com"; await _factory.LoginWithNewAccount(email); @@ -382,7 +382,7 @@ public class NotificationsControllerTests : IClassFixture } [Fact] - private async void MarkAsReadAsync_OrganizationIdNotMatchingUserPartOfDifferentOrganization_NotFound() + private async Task MarkAsReadAsync_OrganizationIdNotMatchingUserPartOfDifferentOrganization_NotFound() { var (organization, _) = await OrganizationTestHelpers.SignUpAsync(_factory, plan: PlanType.EnterpriseAnnually, ownerEmail: _ownerEmail, passwordManagerSeats: 10, @@ -401,7 +401,7 @@ public class NotificationsControllerTests : IClassFixture } [Fact] - private async void MarkAsReadAsync_NotificationStatusNotExisting_Created() + private async Task MarkAsReadAsync_NotificationStatusNotExisting_Created() { var notifications = await CreateNotificationsAsync(_organizationUserOwner.UserId); @@ -422,7 +422,7 @@ public class NotificationsControllerTests : IClassFixture [Theory] [InlineData(false)] [InlineData(true)] - private async void MarkAsReadAsync_NotificationStatusExisting_Updated(bool readDateNull) + private async Task MarkAsReadAsync_NotificationStatusExisting_Updated(bool readDateNull) { var notifications = await CreateNotificationsAsync(_organizationUserOwner.UserId); await _notificationStatusRepository.CreateAsync(new NotificationStatus diff --git a/test/Api.IntegrationTest/SecretsManager/Controllers/AccessPoliciesControllerTests.cs b/test/Api.IntegrationTest/SecretsManager/Controllers/AccessPoliciesControllerTests.cs index 77614574c1..6a1619a416 100644 --- a/test/Api.IntegrationTest/SecretsManager/Controllers/AccessPoliciesControllerTests.cs +++ b/test/Api.IntegrationTest/SecretsManager/Controllers/AccessPoliciesControllerTests.cs @@ -44,17 +44,17 @@ public class AccessPoliciesControllerTests : IClassFixture, IAsyn } - public async Task InitializeAsync() + public async ValueTask InitializeAsync() { _email = $"integration-test{Guid.NewGuid()}@bitwarden.com"; await _factory.LoginWithNewAccount(_email); _organizationHelper = new SecretsManagerOrganizationHelper(_factory, _email); } - public Task DisposeAsync() + public ValueTask DisposeAsync() { _client.Dispose(); - return Task.CompletedTask; + return ValueTask.CompletedTask; } [Theory] diff --git a/test/Api.IntegrationTest/SecretsManager/Controllers/ProjectsControllerTests.cs b/test/Api.IntegrationTest/SecretsManager/Controllers/ProjectsControllerTests.cs index 099dde5127..8f75a6d8f4 100644 --- a/test/Api.IntegrationTest/SecretsManager/Controllers/ProjectsControllerTests.cs +++ b/test/Api.IntegrationTest/SecretsManager/Controllers/ProjectsControllerTests.cs @@ -37,17 +37,17 @@ public class ProjectsControllerTests : IClassFixture, IAs _loginHelper = new LoginHelper(_factory, _client); } - public async Task InitializeAsync() + public async ValueTask InitializeAsync() { _email = $"integration-test{Guid.NewGuid()}@bitwarden.com"; await _factory.LoginWithNewAccount(_email); _organizationHelper = new SecretsManagerOrganizationHelper(_factory, _email); } - public Task DisposeAsync() + public ValueTask DisposeAsync() { _client.Dispose(); - return Task.CompletedTask; + return ValueTask.CompletedTask; } [Theory] diff --git a/test/Api.IntegrationTest/SecretsManager/Controllers/SecretsControllerTests.cs b/test/Api.IntegrationTest/SecretsManager/Controllers/SecretsControllerTests.cs index be95c0dc1e..966dd9d544 100644 --- a/test/Api.IntegrationTest/SecretsManager/Controllers/SecretsControllerTests.cs +++ b/test/Api.IntegrationTest/SecretsManager/Controllers/SecretsControllerTests.cs @@ -41,17 +41,17 @@ public class SecretsControllerTests : IClassFixture, IAsy _loginHelper = new LoginHelper(_factory, _client); } - public async Task InitializeAsync() + public async ValueTask InitializeAsync() { _email = $"integration-test{Guid.NewGuid()}@bitwarden.com"; await _factory.LoginWithNewAccount(_email); _organizationHelper = new SecretsManagerOrganizationHelper(_factory, _email); } - public Task DisposeAsync() + public ValueTask DisposeAsync() { _client.Dispose(); - return Task.CompletedTask; + return ValueTask.CompletedTask; } [Theory] diff --git a/test/Api.IntegrationTest/SecretsManager/Controllers/SecretsManagerEventsControllerTests.cs b/test/Api.IntegrationTest/SecretsManager/Controllers/SecretsManagerEventsControllerTests.cs index 036e307d39..6e0e1bacd6 100644 --- a/test/Api.IntegrationTest/SecretsManager/Controllers/SecretsManagerEventsControllerTests.cs +++ b/test/Api.IntegrationTest/SecretsManager/Controllers/SecretsManagerEventsControllerTests.cs @@ -28,17 +28,17 @@ public class SecretsManagerEventsControllerTests : IClassFixture(); } - public async Task InitializeAsync() + public async ValueTask InitializeAsync() { _email = $"integration-test{Guid.NewGuid()}@bitwarden.com"; await _factory.LoginWithNewAccount(_email); _organizationHelper = new SecretsManagerOrganizationHelper(_factory, _email); } - public Task DisposeAsync() + public ValueTask DisposeAsync() { _client.Dispose(); - return Task.CompletedTask; + return ValueTask.CompletedTask; } private async Task LoginAsync(string email) diff --git a/test/Api.IntegrationTest/SecretsManager/Controllers/SecretsManagerPortingControllerTests.cs b/test/Api.IntegrationTest/SecretsManager/Controllers/SecretsManagerPortingControllerTests.cs index ba41c1e862..86d5adf451 100644 --- a/test/Api.IntegrationTest/SecretsManager/Controllers/SecretsManagerPortingControllerTests.cs +++ b/test/Api.IntegrationTest/SecretsManager/Controllers/SecretsManagerPortingControllerTests.cs @@ -22,17 +22,17 @@ public class SecretsManagerPortingControllerTests : IClassFixture, _loginHelper = new LoginHelper(_factory, _client); } - public async Task InitializeAsync() + public async ValueTask InitializeAsync() { _email = $"integration-test{Guid.NewGuid()}@bitwarden.com"; await _factory.LoginWithNewAccount(_email); _organizationHelper = new SecretsManagerOrganizationHelper(_factory, _email); } - public Task DisposeAsync() + public ValueTask DisposeAsync() { _client.Dispose(); - return Task.CompletedTask; + return ValueTask.CompletedTask; } [Theory] diff --git a/test/Api.IntegrationTest/SecretsManager/Controllers/ServiceAccountsControllerTests.cs b/test/Api.IntegrationTest/SecretsManager/Controllers/ServiceAccountsControllerTests.cs index 6884de5b26..6556ffa2bd 100644 --- a/test/Api.IntegrationTest/SecretsManager/Controllers/ServiceAccountsControllerTests.cs +++ b/test/Api.IntegrationTest/SecretsManager/Controllers/ServiceAccountsControllerTests.cs @@ -48,17 +48,17 @@ public class ServiceAccountsControllerTests : IClassFixture, IAsyncL _userRepository = _factory.GetService(); } - public async Task InitializeAsync() + public async ValueTask InitializeAsync() { _ownerEmail = $"integration-test{Guid.NewGuid()}@bitwarden.com"; await _factory.LoginWithNewAccount(_ownerEmail); } - public Task DisposeAsync() + public ValueTask DisposeAsync() { _client.Dispose(); - return Task.CompletedTask; + return ValueTask.CompletedTask; } [Fact] diff --git a/test/Api.Test/AdminConsole/Authorization/HttpContextExtensionsTests.cs b/test/Api.Test/AdminConsole/Authorization/HttpContextExtensionsTests.cs index 428726aaac..57b8d2d7a4 100644 --- a/test/Api.Test/AdminConsole/Authorization/HttpContextExtensionsTests.cs +++ b/test/Api.Test/AdminConsole/Authorization/HttpContextExtensionsTests.cs @@ -1,4 +1,4 @@ -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Api.AdminConsole.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Routing; diff --git a/test/Api.Test/AdminConsole/Controllers/OrganizationsControllerTests.cs b/test/Api.Test/AdminConsole/Controllers/OrganizationsControllerTests.cs index 00fd3c3b4e..b06231f242 100644 --- a/test/Api.Test/AdminConsole/Controllers/OrganizationsControllerTests.cs +++ b/test/Api.Test/AdminConsole/Controllers/OrganizationsControllerTests.cs @@ -1,5 +1,5 @@ using System.Security.Claims; -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Api.AdminConsole.Controllers; using Bit.Api.Auth.Models.Request.Accounts; using Bit.Api.Models.Request.Organizations; diff --git a/test/Api.Test/Api.Test.csproj b/test/Api.Test/Api.Test.csproj index fb75246d4f..9e3496e94a 100644 --- a/test/Api.Test/Api.Test.csproj +++ b/test/Api.Test/Api.Test.csproj @@ -9,14 +9,9 @@ runtime; build; native; contentfiles; analyzers; buildtransitive all - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - + + diff --git a/test/Api.Test/Billing/Controllers/OrganizationsControllerTests.cs b/test/Api.Test/Billing/Controllers/OrganizationsControllerTests.cs index a776bbea22..ceacd9d465 100644 --- a/test/Api.Test/Billing/Controllers/OrganizationsControllerTests.cs +++ b/test/Api.Test/Billing/Controllers/OrganizationsControllerTests.cs @@ -1,5 +1,5 @@ using System.Security.Claims; -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Api.AdminConsole.Models.Request.Organizations; using Bit.Api.Billing.Controllers; using Bit.Api.Models.Request.Organizations; diff --git a/test/Api.Test/Controllers/ConfigControllerTests.cs b/test/Api.Test/Controllers/ConfigControllerTests.cs index 4df3520947..6abbccee14 100644 --- a/test/Api.Test/Controllers/ConfigControllerTests.cs +++ b/test/Api.Test/Controllers/ConfigControllerTests.cs @@ -1,4 +1,4 @@ -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Api.Controllers; using Bit.Core.Services; using Bit.Core.Settings; diff --git a/test/Api.Test/Tools/Controllers/SendsControllerTests.cs b/test/Api.Test/Tools/Controllers/SendsControllerTests.cs index 7210bddebb..8fcb3bfbe8 100644 --- a/test/Api.Test/Tools/Controllers/SendsControllerTests.cs +++ b/test/Api.Test/Tools/Controllers/SendsControllerTests.cs @@ -1,5 +1,5 @@ using System.Text.Json; -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Api.Tools.Controllers; using Bit.Api.Tools.Models.Request; using Bit.Api.Tools.Models.Response; diff --git a/test/Billing.Test/Billing.Test.csproj b/test/Billing.Test/Billing.Test.csproj index 4d7f887c90..d56128e0ef 100644 --- a/test/Billing.Test/Billing.Test.csproj +++ b/test/Billing.Test/Billing.Test.csproj @@ -5,19 +5,13 @@ - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - + runtime; build; native; contentfiles; analyzers; buildtransitive all - + diff --git a/test/Billing.Test/Controllers/PayPalControllerTests.cs b/test/Billing.Test/Controllers/PayPalControllerTests.cs index 7ec17bd85a..f03d84e63a 100644 --- a/test/Billing.Test/Controllers/PayPalControllerTests.cs +++ b/test/Billing.Test/Controllers/PayPalControllerTests.cs @@ -8,24 +8,26 @@ using Bit.Core.Entities; using Bit.Core.Enums; using Bit.Core.Repositories; using Bit.Core.Services; -using Divergic.Logging.Xunit; +using Bit.Test.Common; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Infrastructure; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Testing; using Microsoft.Extensions.Options; using Microsoft.Extensions.Primitives; using NSubstitute; using NSubstitute.ReturnsExtensions; using Xunit; -using Xunit.Abstractions; using Transaction = Bit.Core.Entities.Transaction; namespace Bit.Billing.Test.Controllers; public class PayPalControllerTests { - private readonly ITestOutputHelper _testOutputHelper; + private readonly ILogger _logger; + private readonly FakeLogCollector _fakeLogCollector; private readonly IOptions _billingSettings = Substitute.For>(); private readonly IMailService _mailService = Substitute.For(); @@ -38,68 +40,68 @@ public class PayPalControllerTests private const string _defaultWebhookKey = "webhook-key"; - public PayPalControllerTests(ITestOutputHelper testOutputHelper) + public PayPalControllerTests() { - _testOutputHelper = testOutputHelper; + var services = new ServiceCollection() + .AddLogging(b => + { + b.AddProvider(new XUnitLoggerProvider()); + b.AddFakeLogging(); + }) + .BuildServiceProvider(); + _logger = services.GetRequiredService>(); + _fakeLogCollector = services.GetFakeLogCollector(); } [Fact] public async Task PostIpn_NullKey_BadRequest() { - var logger = _testOutputHelper.BuildLoggerFor(); - - var controller = ConfigureControllerContextWith(logger, null, null); + var controller = ConfigureControllerContextWith(null, null); var result = await controller.PostIpn(); HasStatusCode(result, 400); - LoggedError(logger, "PayPal IPN: Key is missing"); + LoggedError("PayPal IPN: Key is missing"); } [Fact] public async Task PostIpn_IncorrectKey_BadRequest() { - var logger = _testOutputHelper.BuildLoggerFor(); - _billingSettings.Value.Returns(new BillingSettings { PayPal = { WebhookKey = "INCORRECT" } }); - var controller = ConfigureControllerContextWith(logger, _defaultWebhookKey, null); + var controller = ConfigureControllerContextWith(_defaultWebhookKey, null); var result = await controller.PostIpn(); HasStatusCode(result, 400); - LoggedError(logger, "PayPal IPN: Key is incorrect"); + LoggedError("PayPal IPN: Key is incorrect"); } [Fact] public async Task PostIpn_EmptyIPNBody_BadRequest() { - var logger = _testOutputHelper.BuildLoggerFor(); - _billingSettings.Value.Returns(new BillingSettings { PayPal = { WebhookKey = _defaultWebhookKey } }); - var controller = ConfigureControllerContextWith(logger, _defaultWebhookKey, null); + var controller = ConfigureControllerContextWith(_defaultWebhookKey, null); var result = await controller.PostIpn(); HasStatusCode(result, 400); - LoggedError(logger, "PayPal IPN: Request body is null or empty"); + LoggedError("PayPal IPN: Request body is null or empty"); } [Fact] public async Task PostIpn_IPNHasNoEntityId_BadRequest() { - var logger = _testOutputHelper.BuildLoggerFor(); - _billingSettings.Value.Returns(new BillingSettings { PayPal = { WebhookKey = _defaultWebhookKey } @@ -107,20 +109,18 @@ public class PayPalControllerTests var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.TransactionMissingEntityIds); - var controller = ConfigureControllerContextWith(logger, _defaultWebhookKey, ipnBody); + var controller = ConfigureControllerContextWith(_defaultWebhookKey, ipnBody); var result = await controller.PostIpn(); HasStatusCode(result, 400); - LoggedError(logger, "PayPal IPN (2PK15573S8089712Y): 'custom' did not contain a User ID or Organization ID or provider ID"); + LoggedError("PayPal IPN (2PK15573S8089712Y): 'custom' did not contain a User ID or Organization ID or provider ID"); } [Fact] public async Task PostIpn_OtherTransactionType_Unprocessed_Ok() { - var logger = _testOutputHelper.BuildLoggerFor(); - _billingSettings.Value.Returns(new BillingSettings { PayPal = { WebhookKey = _defaultWebhookKey } @@ -130,20 +130,18 @@ public class PayPalControllerTests var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.UnsupportedTransactionType); - var controller = ConfigureControllerContextWith(logger, _defaultWebhookKey, ipnBody); + var controller = ConfigureControllerContextWith(_defaultWebhookKey, ipnBody); var result = await controller.PostIpn(); HasStatusCode(result, 200); - LoggedWarning(logger, "PayPal IPN (2PK15573S8089712Y): Transaction type (other) not supported for payments"); + LoggedWarning("PayPal IPN (2PK15573S8089712Y): Transaction type (other) not supported for payments"); } [Fact] public async Task PostIpn_MismatchedReceiverID_Unprocessed_Ok() { - var logger = _testOutputHelper.BuildLoggerFor(); - _billingSettings.Value.Returns(new BillingSettings { PayPal = @@ -157,20 +155,18 @@ public class PayPalControllerTests var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.SuccessfulPayment); - var controller = ConfigureControllerContextWith(logger, _defaultWebhookKey, ipnBody); + var controller = ConfigureControllerContextWith(_defaultWebhookKey, ipnBody); var result = await controller.PostIpn(); HasStatusCode(result, 200); - LoggedWarning(logger, "PayPal IPN (2PK15573S8089712Y): Receiver ID (NHDYKLQ3L4LWL) does not match Bitwarden business ID (INCORRECT)"); + LoggedWarning("PayPal IPN (2PK15573S8089712Y): Receiver ID (NHDYKLQ3L4LWL) does not match Bitwarden business ID (INCORRECT)"); } [Fact] public async Task PostIpn_RefundMissingParent_Unprocessed_Ok() { - var logger = _testOutputHelper.BuildLoggerFor(); - _billingSettings.Value.Returns(new BillingSettings { PayPal = @@ -184,20 +180,18 @@ public class PayPalControllerTests var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.RefundMissingParentTransaction); - var controller = ConfigureControllerContextWith(logger, _defaultWebhookKey, ipnBody); + var controller = ConfigureControllerContextWith(_defaultWebhookKey, ipnBody); var result = await controller.PostIpn(); HasStatusCode(result, 200); - LoggedWarning(logger, "PayPal IPN (2PK15573S8089712Y): Parent transaction ID is required for refund"); + LoggedWarning("PayPal IPN (2PK15573S8089712Y): Parent transaction ID is required for refund"); } [Fact] public async Task PostIpn_eCheckPayment_Unprocessed_Ok() { - var logger = _testOutputHelper.BuildLoggerFor(); - _billingSettings.Value.Returns(new BillingSettings { PayPal = @@ -211,20 +205,18 @@ public class PayPalControllerTests var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.ECheckPayment); - var controller = ConfigureControllerContextWith(logger, _defaultWebhookKey, ipnBody); + var controller = ConfigureControllerContextWith(_defaultWebhookKey, ipnBody); var result = await controller.PostIpn(); HasStatusCode(result, 200); - LoggedWarning(logger, "PayPal IPN (2PK15573S8089712Y): Transaction was an eCheck payment"); + LoggedWarning("PayPal IPN (2PK15573S8089712Y): Transaction was an eCheck payment"); } [Fact] public async Task PostIpn_NonUSD_Unprocessed_Ok() { - var logger = _testOutputHelper.BuildLoggerFor(); - _billingSettings.Value.Returns(new BillingSettings { PayPal = @@ -238,20 +230,18 @@ public class PayPalControllerTests var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.NonUSDPayment); - var controller = ConfigureControllerContextWith(logger, _defaultWebhookKey, ipnBody); + var controller = ConfigureControllerContextWith(_defaultWebhookKey, ipnBody); var result = await controller.PostIpn(); HasStatusCode(result, 200); - LoggedWarning(logger, "PayPal IPN (2PK15573S8089712Y): Transaction was not in USD (CAD)"); + LoggedWarning("PayPal IPN (2PK15573S8089712Y): Transaction was not in USD (CAD)"); } [Fact] public async Task PostIpn_Completed_ExistingTransaction_Unprocessed_Ok() { - var logger = _testOutputHelper.BuildLoggerFor(); - _billingSettings.Value.Returns(new BillingSettings { PayPal = @@ -269,20 +259,18 @@ public class PayPalControllerTests GatewayType.PayPal, "2PK15573S8089712Y").Returns(new Transaction()); - var controller = ConfigureControllerContextWith(logger, _defaultWebhookKey, ipnBody); + var controller = ConfigureControllerContextWith(_defaultWebhookKey, ipnBody); var result = await controller.PostIpn(); HasStatusCode(result, 200); - LoggedWarning(logger, "PayPal IPN (2PK15573S8089712Y): Already processed this completed transaction"); + LoggedWarning("PayPal IPN (2PK15573S8089712Y): Already processed this completed transaction"); } [Fact] public async Task PostIpn_Completed_CreatesTransaction_Ok() { - var logger = _testOutputHelper.BuildLoggerFor(); - _billingSettings.Value.Returns(new BillingSettings { PayPal = @@ -300,7 +288,7 @@ public class PayPalControllerTests GatewayType.PayPal, "2PK15573S8089712Y").ReturnsNull(); - var controller = ConfigureControllerContextWith(logger, _defaultWebhookKey, ipnBody); + var controller = ConfigureControllerContextWith(_defaultWebhookKey, ipnBody); var result = await controller.PostIpn(); @@ -314,8 +302,6 @@ public class PayPalControllerTests [Fact] public async Task PostIpn_Completed_CreatesTransaction_CreditsOrganizationAccount_Ok() { - var logger = _testOutputHelper.BuildLoggerFor(); - _billingSettings.Value.Returns(new BillingSettings { PayPal = @@ -341,7 +327,7 @@ public class PayPalControllerTests _paymentService.CreditAccountAsync(organization, 48M).Returns(true); - var controller = ConfigureControllerContextWith(logger, _defaultWebhookKey, ipnBody); + var controller = ConfigureControllerContextWith(_defaultWebhookKey, ipnBody); var result = await controller.PostIpn(); @@ -362,8 +348,6 @@ public class PayPalControllerTests [Fact] public async Task PostIpn_Completed_CreatesTransaction_CreditsUserAccount_Ok() { - var logger = _testOutputHelper.BuildLoggerFor(); - _billingSettings.Value.Returns(new BillingSettings { PayPal = @@ -387,7 +371,7 @@ public class PayPalControllerTests _userRepository.GetByIdAsync(userId).Returns(user); - var controller = ConfigureControllerContextWith(logger, _defaultWebhookKey, ipnBody); + var controller = ConfigureControllerContextWith(_defaultWebhookKey, ipnBody); var result = await controller.PostIpn(); @@ -406,8 +390,6 @@ public class PayPalControllerTests [Fact] public async Task PostIpn_Refunded_ExistingTransaction_Unprocessed_Ok() { - var logger = _testOutputHelper.BuildLoggerFor(); - _billingSettings.Value.Returns(new BillingSettings { PayPal = @@ -425,13 +407,13 @@ public class PayPalControllerTests GatewayType.PayPal, "2PK15573S8089712Y").Returns(new Transaction()); - var controller = ConfigureControllerContextWith(logger, _defaultWebhookKey, ipnBody); + var controller = ConfigureControllerContextWith(_defaultWebhookKey, ipnBody); var result = await controller.PostIpn(); HasStatusCode(result, 200); - LoggedWarning(logger, "PayPal IPN (2PK15573S8089712Y): Already processed this refunded transaction"); + LoggedWarning("PayPal IPN (2PK15573S8089712Y): Already processed this refunded transaction"); await _transactionRepository.DidNotReceiveWithAnyArgs().ReplaceAsync(Arg.Any()); @@ -441,8 +423,6 @@ public class PayPalControllerTests [Fact] public async Task PostIpn_Refunded_MissingParentTransaction_Ok() { - var logger = _testOutputHelper.BuildLoggerFor(); - _billingSettings.Value.Returns(new BillingSettings { PayPal = @@ -464,13 +444,13 @@ public class PayPalControllerTests GatewayType.PayPal, "PARENT").ReturnsNull(); - var controller = ConfigureControllerContextWith(logger, _defaultWebhookKey, ipnBody); + var controller = ConfigureControllerContextWith(_defaultWebhookKey, ipnBody); var result = await controller.PostIpn(); HasStatusCode(result, 200); - LoggedWarning(logger, "PayPal IPN (2PK15573S8089712Y): Could not find parent transaction"); + LoggedWarning("PayPal IPN (2PK15573S8089712Y): Could not find parent transaction"); await _transactionRepository.DidNotReceiveWithAnyArgs().ReplaceAsync(Arg.Any()); @@ -480,8 +460,6 @@ public class PayPalControllerTests [Fact] public async Task PostIpn_Refunded_ReplacesParent_CreatesTransaction_Ok() { - var logger = _testOutputHelper.BuildLoggerFor(); - _billingSettings.Value.Returns(new BillingSettings { PayPal = @@ -511,7 +489,7 @@ public class PayPalControllerTests GatewayType.PayPal, "PARENT").Returns(parentTransaction); - var controller = ConfigureControllerContextWith(logger, _defaultWebhookKey, ipnBody); + var controller = ConfigureControllerContextWith(_defaultWebhookKey, ipnBody); var result = await controller.PostIpn(); @@ -530,13 +508,12 @@ public class PayPalControllerTests } private PayPalController ConfigureControllerContextWith( - ILogger logger, string webhookKey, string ipnBody) { var controller = new PayPalController( _billingSettings, - logger, + _logger, _mailService, _organizationRepository, _paymentService, @@ -578,16 +555,18 @@ public class PayPalControllerTests Assert.Equal(statusCode, statusCodeActionResult.StatusCode); } - private static void Logged(ICacheLogger logger, LogLevel logLevel, string message) + private void Logged(LogLevel logLevel, string message) { - Assert.NotNull(logger.Last); - Assert.Equal(logLevel, logger.Last!.LogLevel); - Assert.Equal(message, logger.Last!.Message); + var snapshot = _fakeLogCollector.GetSnapshot(true); + Assert.NotEmpty(snapshot); + var last = snapshot[^1]; + Assert.Equal(logLevel, last.Level); + Assert.Equal(message, last.Message); } - private static void LoggedError(ICacheLogger logger, string message) - => Logged(logger, LogLevel.Error, message); + private void LoggedError(string message) + => Logged(LogLevel.Error, message); - private static void LoggedWarning(ICacheLogger logger, string message) - => Logged(logger, LogLevel.Warning, message); + private void LoggedWarning(string message) + => Logged(LogLevel.Warning, message); } diff --git a/test/Common/AutoFixture/Attributes/BitAutoDataAttribute.cs b/test/Common/AutoFixture/Attributes/BitAutoDataAttribute.cs index 03a8cb466f..8752b96e8d 100644 --- a/test/Common/AutoFixture/Attributes/BitAutoDataAttribute.cs +++ b/test/Common/AutoFixture/Attributes/BitAutoDataAttribute.cs @@ -1,13 +1,12 @@ -#nullable enable - -using System.Reflection; +using System.Reflection; using AutoFixture; using Bit.Test.Common.Helpers; +using Xunit; using Xunit.Sdk; +using Xunit.v3; namespace Bit.Test.Common.AutoFixture.Attributes; -[DataDiscoverer("AutoFixture.Xunit2.NoPreDiscoveryDataDiscoverer", "AutoFixture.Xunit2")] public class BitAutoDataAttribute : DataAttribute { private readonly Func _createFixture; @@ -26,6 +25,23 @@ public class BitAutoDataAttribute : DataAttribute _fixedTestParameters = fixedTestParameters; } - public override IEnumerable GetData(MethodInfo testMethod) - => BitAutoDataAttributeHelpers.GetData(testMethod, _createFixture(), _fixedTestParameters); + protected IEnumerable GetDataCore(MethodInfo testMethod) + { + return BitAutoDataAttributeHelpers.GetData(testMethod, _createFixture(), _fixedTestParameters); + } + + public override ValueTask> GetData(MethodInfo testMethod, DisposalTracker disposalTracker) + { + var theoryData = new List(); + var data = GetDataCore(testMethod); + + foreach (var dataRow in data) + { + theoryData.Add(new TheoryDataRow(dataRow)); + } + + return new(theoryData); + } + + public override bool SupportsDiscoveryEnumeration() => false; } diff --git a/test/Common/AutoFixture/Attributes/BitMemberAutoDataAttribute.cs b/test/Common/AutoFixture/Attributes/BitMemberAutoDataAttribute.cs index 41ac06c03d..35f2bca9d9 100644 --- a/test/Common/AutoFixture/Attributes/BitMemberAutoDataAttribute.cs +++ b/test/Common/AutoFixture/Attributes/BitMemberAutoDataAttribute.cs @@ -1,10 +1,10 @@ -// FIXME: Update this file to be null safe and then delete the line below -#nullable disable - +using System.Diagnostics; using System.Reflection; using AutoFixture; using Bit.Test.Common.Helpers; using Xunit; +using Xunit.Sdk; +using Xunit.v3; namespace Bit.Test.Common.AutoFixture.Attributes; @@ -22,6 +22,27 @@ public class BitMemberAutoDataAttribute : MemberDataAttributeBase _createFixture = createFixture; } - protected override object[] ConvertDataItem(MethodInfo testMethod, object item) => - BitAutoDataAttributeHelpers.GetData(testMethod, _createFixture(), item as object[]).First(); + private MethodInfo? _testMethod; + + public override ValueTask> GetData(MethodInfo testMethod, DisposalTracker disposalTracker) + { + _testMethod = testMethod; + return base.GetData(testMethod, disposalTracker); + } + + protected override ITheoryDataRow ConvertDataRow(object dataRow) + { + // Unwrap a possible ITheoryDataRow + object?[] fixedItems; + if (dataRow is ITheoryDataRow theoryDataRow) + { + fixedItems = theoryDataRow.GetData(); + } + else + { + fixedItems = (dataRow as object?[])!; + } + Debug.Assert(_testMethod is not null, "GetData expected to be called first."); + return new TheoryDataRow(BitAutoDataAttributeHelpers.GetData(_testMethod, _createFixture(), fixedItems).First()); + } } diff --git a/test/Common/AutoFixture/Attributes/CustomAutoDataAttribute.cs b/test/Common/AutoFixture/Attributes/CustomAutoDataAttribute.cs index 40a8da48c5..32c3fd5611 100644 --- a/test/Common/AutoFixture/Attributes/CustomAutoDataAttribute.cs +++ b/test/Common/AutoFixture/Attributes/CustomAutoDataAttribute.cs @@ -1,15 +1,11 @@ -// FIXME: Update this file to be null safe and then delete the line below -#nullable disable - -using AutoFixture; -using AutoFixture.Xunit2; +using AutoFixture; +using AutoFixture.Xunit3; namespace Bit.Test.Common.AutoFixture.Attributes; public class CustomAutoDataAttribute : AutoDataAttribute { - public CustomAutoDataAttribute(params Type[] iCustomizationTypes) : this(iCustomizationTypes - .Select(t => (ICustomization)Activator.CreateInstance(t)).ToArray()) + public CustomAutoDataAttribute(params Type[] iCustomizationTypes) : this(CreateCustomizations(iCustomizationTypes)) { } public CustomAutoDataAttribute(params ICustomization[] customizations) : base(() => @@ -22,4 +18,22 @@ public class CustomAutoDataAttribute : AutoDataAttribute return fixture; }) { } + + private static ICustomization[] CreateCustomizations(Type[] customizationTypes) + { + var customizations = new ICustomization[customizationTypes.Length]; + for (var i = 0; i < customizationTypes.Length; i++) + { + var customizationType = customizationTypes[i]; + var customizationObj = Activator.CreateInstance(customizationTypes[i]); + if (customizationObj is not ICustomization customization) + { + throw new InvalidOperationException($"{customizationType.FullName} should implement ICustomization"); + } + + customizations[i] = customization; + } + + return customizations; + } } diff --git a/test/Common/AutoFixture/Attributes/EnvironmentDataAttribute.cs b/test/Common/AutoFixture/Attributes/EnvironmentDataAttribute.cs index d3a8368545..c3e79e4c9c 100644 --- a/test/Common/AutoFixture/Attributes/EnvironmentDataAttribute.cs +++ b/test/Common/AutoFixture/Attributes/EnvironmentDataAttribute.cs @@ -2,7 +2,9 @@ #nullable disable using System.Reflection; +using Xunit; using Xunit.Sdk; +using Xunit.v3; namespace Bit.Test.Common.AutoFixture.Attributes; @@ -24,7 +26,7 @@ public class EnvironmentDataAttribute : DataAttribute _environmentVariableNames = environmentVariableNames; } - public override IEnumerable GetData(MethodInfo testMethod) + public override ValueTask> GetData(MethodInfo testMethod, DisposalTracker disposalTracker) { var methodParameters = testMethod.GetParameters(); @@ -40,6 +42,7 @@ public class EnvironmentDataAttribute : DataAttribute values[i] = Convert.ChangeType(Environment.GetEnvironmentVariable(_environmentVariableNames[i]), methodParameters[i].ParameterType); } - return new[] { values }; + return new([new TheoryDataRow(values)]); } + public override bool SupportsDiscoveryEnumeration() => true; } diff --git a/test/Common/AutoFixture/Attributes/InlineCustomAutoDataAttribute.cs b/test/Common/AutoFixture/Attributes/InlineCustomAutoDataAttribute.cs index b9a1c2f6af..e1bf642cec 100644 --- a/test/Common/AutoFixture/Attributes/InlineCustomAutoDataAttribute.cs +++ b/test/Common/AutoFixture/Attributes/InlineCustomAutoDataAttribute.cs @@ -1,14 +1,13 @@ -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Xunit; -using Xunit.Sdk; namespace Bit.Test.Common.AutoFixture.Attributes; public class InlineCustomAutoDataAttribute : CompositeDataAttribute { - public InlineCustomAutoDataAttribute(Type[] iCustomizationTypes, params object[] values) : base(new DataAttribute[] { + public InlineCustomAutoDataAttribute(Type[] iCustomizationTypes, params object[] values) : base([ new InlineDataAttribute(values), new CustomAutoDataAttribute(iCustomizationTypes) - }) + ]) { } } diff --git a/test/Common/AutoFixture/Attributes/RepeatingPatternBitAutoDataAttribute.cs b/test/Common/AutoFixture/Attributes/RepeatingPatternBitAutoDataAttribute.cs index 48b8c1e92c..622ad912d9 100644 --- a/test/Common/AutoFixture/Attributes/RepeatingPatternBitAutoDataAttribute.cs +++ b/test/Common/AutoFixture/Attributes/RepeatingPatternBitAutoDataAttribute.cs @@ -1,5 +1,7 @@ #nullable enable using System.Reflection; +using Xunit; +using Xunit.Sdk; namespace Bit.Test.Common.AutoFixture.Attributes; @@ -66,23 +68,27 @@ public class RepeatingPatternBitAutoDataAttribute : BitAutoDataAttribute _repeatingDataList = AllValues([first, second, third]); } - public override IEnumerable GetData(MethodInfo testMethod) + public override ValueTask> GetData(MethodInfo testMethod, DisposalTracker disposalTracker) { + var dataRows = new List(); if (_repeatingDataList.Count == 0) { - yield return base.GetData(testMethod).First(); + dataRows.Add(new TheoryDataRow(base.GetDataCore(testMethod))); + return new(dataRows); } foreach (var repeatingData in _repeatingDataList) { - var bitData = base.GetData(testMethod).First(); + var bitData = base.GetDataCore(testMethod).First(); for (var i = 0; i < repeatingData.Length; i++) { bitData[i] = repeatingData[i]; } - yield return bitData; + dataRows.Add(new TheoryDataRow(bitData)); } + + return new(dataRows); } private static List AllValues(object?[][] parameterToPatternValues) diff --git a/test/Common/Common.csproj b/test/Common/Common.csproj index 2f11798cef..f5f2c20be6 100644 --- a/test/Common/Common.csproj +++ b/test/Common/Common.csproj @@ -5,17 +5,14 @@ + - - - all - runtime; build; native; contentfiles; analyzers - - + - + + diff --git a/test/Common/Helpers/BitAutoDataAttributeHelpers.cs b/test/Common/Helpers/BitAutoDataAttributeHelpers.cs index b2ee4c4211..452a89d0c7 100644 --- a/test/Common/Helpers/BitAutoDataAttributeHelpers.cs +++ b/test/Common/Helpers/BitAutoDataAttributeHelpers.cs @@ -4,7 +4,7 @@ using System.ComponentModel; using System.Reflection; using AutoFixture; using AutoFixture.Kernel; -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Test.Common.AutoFixture.Attributes; namespace Bit.Test.Common.Helpers; diff --git a/test/Infrastructure.IntegrationTest/XUnitLoggerProvider.cs b/test/Common/XUnitLoggerProvider.cs similarity index 96% rename from test/Infrastructure.IntegrationTest/XUnitLoggerProvider.cs rename to test/Common/XUnitLoggerProvider.cs index 43310496f5..8487f4be4b 100644 --- a/test/Infrastructure.IntegrationTest/XUnitLoggerProvider.cs +++ b/test/Common/XUnitLoggerProvider.cs @@ -1,7 +1,7 @@ using Microsoft.Extensions.Logging; using Xunit; -namespace Bit.Infrastructure.IntegrationTest; +namespace Bit.Test.Common; public sealed class XUnitLoggerProvider : ILoggerProvider { diff --git a/test/Core.IntegrationTest/Core.IntegrationTest.csproj b/test/Core.IntegrationTest/Core.IntegrationTest.csproj index 21b746c2fb..516c9d5651 100644 --- a/test/Core.IntegrationTest/Core.IntegrationTest.csproj +++ b/test/Core.IntegrationTest/Core.IntegrationTest.csproj @@ -11,11 +11,9 @@ - - + - - + diff --git a/test/Core.IntegrationTest/MailKitSmtpMailDeliveryServiceTests.cs b/test/Core.IntegrationTest/MailKitSmtpMailDeliveryServiceTests.cs index 1883036f9c..67e97c82c3 100644 --- a/test/Core.IntegrationTest/MailKitSmtpMailDeliveryServiceTests.cs +++ b/test/Core.IntegrationTest/MailKitSmtpMailDeliveryServiceTests.cs @@ -8,7 +8,6 @@ using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Rnwood.SmtpServer; using Rnwood.SmtpServer.Extensions.Auth; -using Xunit.Abstractions; namespace Bit.Core.IntegrationTest; diff --git a/test/Core.Test/AdminConsole/AutoFixture/CurrentContextOrganizationFixtures.cs b/test/Core.Test/AdminConsole/AutoFixture/CurrentContextOrganizationFixtures.cs index 1c809f604d..ef258f1fad 100644 --- a/test/Core.Test/AdminConsole/AutoFixture/CurrentContextOrganizationFixtures.cs +++ b/test/Core.Test/AdminConsole/AutoFixture/CurrentContextOrganizationFixtures.cs @@ -1,6 +1,6 @@ using System.Reflection; using AutoFixture; -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Core.Context; using Bit.Core.Enums; using Bit.Core.Models.Data; diff --git a/test/Core.Test/AdminConsole/AutoFixture/OrganizationPolicyDetailsCustomization.cs b/test/Core.Test/AdminConsole/AutoFixture/OrganizationPolicyDetailsCustomization.cs index cf16563b8c..57f80925b4 100644 --- a/test/Core.Test/AdminConsole/AutoFixture/OrganizationPolicyDetailsCustomization.cs +++ b/test/Core.Test/AdminConsole/AutoFixture/OrganizationPolicyDetailsCustomization.cs @@ -1,6 +1,6 @@ using System.Reflection; using AutoFixture; -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Core.AdminConsole.Enums; using Bit.Core.AdminConsole.Models.Data.Organizations.Policies; using Bit.Core.Enums; diff --git a/test/Core.Test/AdminConsole/AutoFixture/OrganizationUserFixtures.cs b/test/Core.Test/AdminConsole/AutoFixture/OrganizationUserFixtures.cs index 74bdbfc519..a73c5f4994 100644 --- a/test/Core.Test/AdminConsole/AutoFixture/OrganizationUserFixtures.cs +++ b/test/Core.Test/AdminConsole/AutoFixture/OrganizationUserFixtures.cs @@ -1,6 +1,6 @@ using System.Reflection; using AutoFixture; -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Core.Entities; using Bit.Core.Enums; diff --git a/test/Core.Test/AdminConsole/AutoFixture/OrganizationUserPolicyDetailsFixtures.cs b/test/Core.Test/AdminConsole/AutoFixture/OrganizationUserPolicyDetailsFixtures.cs index 634b234e70..382fff47df 100644 --- a/test/Core.Test/AdminConsole/AutoFixture/OrganizationUserPolicyDetailsFixtures.cs +++ b/test/Core.Test/AdminConsole/AutoFixture/OrganizationUserPolicyDetailsFixtures.cs @@ -1,6 +1,6 @@ using System.Reflection; using AutoFixture; -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Core.AdminConsole.Enums; using Bit.Core.Models.Data.Organizations.OrganizationUsers; diff --git a/test/Core.Test/AdminConsole/AutoFixture/PolicyDetailsFixtures.cs b/test/Core.Test/AdminConsole/AutoFixture/PolicyDetailsFixtures.cs index 39d7732198..5103b8a71e 100644 --- a/test/Core.Test/AdminConsole/AutoFixture/PolicyDetailsFixtures.cs +++ b/test/Core.Test/AdminConsole/AutoFixture/PolicyDetailsFixtures.cs @@ -1,6 +1,6 @@ using System.Reflection; using AutoFixture; -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Core.AdminConsole.Enums; using Bit.Core.AdminConsole.Models.Data.Organizations.Policies; using Bit.Core.Enums; diff --git a/test/Core.Test/AdminConsole/AutoFixture/PolicyFixtures.cs b/test/Core.Test/AdminConsole/AutoFixture/PolicyFixtures.cs index 09b112c43c..a293d618fe 100644 --- a/test/Core.Test/AdminConsole/AutoFixture/PolicyFixtures.cs +++ b/test/Core.Test/AdminConsole/AutoFixture/PolicyFixtures.cs @@ -1,6 +1,6 @@ using System.Reflection; using AutoFixture; -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Enums; diff --git a/test/Core.Test/AdminConsole/AutoFixture/PolicyUpdateFixtures.cs b/test/Core.Test/AdminConsole/AutoFixture/PolicyUpdateFixtures.cs index 4d00476645..70834e84f8 100644 --- a/test/Core.Test/AdminConsole/AutoFixture/PolicyUpdateFixtures.cs +++ b/test/Core.Test/AdminConsole/AutoFixture/PolicyUpdateFixtures.cs @@ -1,6 +1,6 @@ using System.Reflection; using AutoFixture; -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Core.AdminConsole.Enums; using Bit.Core.AdminConsole.Models.Data; using Bit.Core.AdminConsole.OrganizationFeatures.Policies.Models; diff --git a/test/Core.Test/AdminConsole/OrganizationAuth/Models/BatchAuthRequestUpdateProcessorTests.cs b/test/Core.Test/AdminConsole/OrganizationAuth/Models/BatchAuthRequestUpdateProcessorTests.cs index f65ac20fef..0441961376 100644 --- a/test/Core.Test/AdminConsole/OrganizationAuth/Models/BatchAuthRequestUpdateProcessorTests.cs +++ b/test/Core.Test/AdminConsole/OrganizationAuth/Models/BatchAuthRequestUpdateProcessorTests.cs @@ -53,7 +53,7 @@ public class BatchAuthRequestUpdateProcessorTests var sut = new BatchAuthRequestUpdateProcessor(authRequests, updates, configuration); Assert.NotEmpty(sut.Processors); sut.Process(errorHandler); - Assert.NotEmpty(sut.Processors.Where(p => p.ProcessedAuthRequest != null)); + Assert.Contains(sut.Processors, p => p.ProcessedAuthRequest != null); } [Theory] diff --git a/test/Core.Test/AdminConsole/OrganizationFeatures/Policies/PolicyRequirements/BasePolicyRequirementFactoryTests.cs b/test/Core.Test/AdminConsole/OrganizationFeatures/Policies/PolicyRequirements/BasePolicyRequirementFactoryTests.cs index e81459808d..ec7c2ef2b7 100644 --- a/test/Core.Test/AdminConsole/OrganizationFeatures/Policies/PolicyRequirements/BasePolicyRequirementFactoryTests.cs +++ b/test/Core.Test/AdminConsole/OrganizationFeatures/Policies/PolicyRequirements/BasePolicyRequirementFactoryTests.cs @@ -1,4 +1,4 @@ -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Core.AdminConsole.Enums; using Bit.Core.AdminConsole.Models.Data.Organizations.Policies; using Bit.Core.AdminConsole.OrganizationFeatures.Policies.PolicyRequirements; diff --git a/test/Core.Test/Auth/Models/Business/Tokenables/EmergencyAccessInviteTokenableTests.cs b/test/Core.Test/Auth/Models/Business/Tokenables/EmergencyAccessInviteTokenableTests.cs index 0e3f6742d1..41d54f19ab 100644 --- a/test/Core.Test/Auth/Models/Business/Tokenables/EmergencyAccessInviteTokenableTests.cs +++ b/test/Core.Test/Auth/Models/Business/Tokenables/EmergencyAccessInviteTokenableTests.cs @@ -1,4 +1,4 @@ -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Core.Auth.Entities; using Bit.Core.Auth.Models.Business.Tokenables; using Bit.Core.Tokens; diff --git a/test/Core.Test/Auth/Models/Business/Tokenables/OrgUserInviteTokenableTests.cs b/test/Core.Test/Auth/Models/Business/Tokenables/OrgUserInviteTokenableTests.cs index 866cdbfe29..278005bcb8 100644 --- a/test/Core.Test/Auth/Models/Business/Tokenables/OrgUserInviteTokenableTests.cs +++ b/test/Core.Test/Auth/Models/Business/Tokenables/OrgUserInviteTokenableTests.cs @@ -1,4 +1,4 @@ -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Core.Auth.Models.Business.Tokenables; using Bit.Core.Entities; using Bit.Core.Tokens; diff --git a/test/Core.Test/Auth/Models/Business/Tokenables/RegistrationEmailVerificationTokenableTests.cs b/test/Core.Test/Auth/Models/Business/Tokenables/RegistrationEmailVerificationTokenableTests.cs index a5a4b97537..141dd1d63e 100644 --- a/test/Core.Test/Auth/Models/Business/Tokenables/RegistrationEmailVerificationTokenableTests.cs +++ b/test/Core.Test/Auth/Models/Business/Tokenables/RegistrationEmailVerificationTokenableTests.cs @@ -1,4 +1,4 @@ -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Core.Tokens; namespace Bit.Core.Test.Auth.Models.Business.Tokenables; diff --git a/test/Core.Test/Auth/Models/Business/Tokenables/SsoEmail2faSessionTokenableTests.cs b/test/Core.Test/Auth/Models/Business/Tokenables/SsoEmail2faSessionTokenableTests.cs index 8d989710fc..edcd49b20d 100644 --- a/test/Core.Test/Auth/Models/Business/Tokenables/SsoEmail2faSessionTokenableTests.cs +++ b/test/Core.Test/Auth/Models/Business/Tokenables/SsoEmail2faSessionTokenableTests.cs @@ -1,4 +1,4 @@ -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Core.Auth.Models.Business.Tokenables; using Bit.Core.Entities; using Bit.Core.Tokens; diff --git a/test/Core.Test/Auth/Models/Business/Tokenables/SsoTokenableTests.cs b/test/Core.Test/Auth/Models/Business/Tokenables/SsoTokenableTests.cs index ab393203ab..8c202ec0f2 100644 --- a/test/Core.Test/Auth/Models/Business/Tokenables/SsoTokenableTests.cs +++ b/test/Core.Test/Auth/Models/Business/Tokenables/SsoTokenableTests.cs @@ -1,4 +1,4 @@ -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Core.AdminConsole.Entities; using Bit.Core.Auth.Models.Business.Tokenables; using Bit.Core.Tokens; diff --git a/test/Core.Test/Auth/Services/DuoUniversalTokenServiceTests.cs b/test/Core.Test/Auth/Services/DuoUniversalTokenServiceTests.cs index 4d205dc44b..9eb012fbdb 100644 --- a/test/Core.Test/Auth/Services/DuoUniversalTokenServiceTests.cs +++ b/test/Core.Test/Auth/Services/DuoUniversalTokenServiceTests.cs @@ -13,7 +13,7 @@ public class DuoUniversalTokenServiceTests [BitAutoData("", "ClientId", "ClientSecret")] [BitAutoData("api-valid.duosecurity.com", "", "ClientSecret")] [BitAutoData("api-valid.duosecurity.com", "ClientId", "")] - public async void ValidateDuoConfiguration_InvalidConfig_ReturnsFalse( + public async Task ValidateDuoConfiguration_InvalidConfig_ReturnsFalse( string host, string clientId, string clientSecret, SutProvider sutProvider) { // Arrange diff --git a/test/Core.Test/AutoFixture/Attributes/CiSkippedTheory.cs b/test/Core.Test/AutoFixture/Attributes/CiSkippedTheory.cs index 269988272b..22edc3db06 100644 --- a/test/Core.Test/AutoFixture/Attributes/CiSkippedTheory.cs +++ b/test/Core.Test/AutoFixture/Attributes/CiSkippedTheory.cs @@ -1,9 +1,12 @@ -namespace Bit.Core.Test.AutoFixture.Attributes; +using System.Runtime.CompilerServices; + +namespace Bit.Core.Test.AutoFixture.Attributes; public sealed class CiSkippedTheory : Xunit.TheoryAttribute { private static bool IsGithubActions() => Environment.GetEnvironmentVariable("CI") != null; - public CiSkippedTheory() + + public CiSkippedTheory([CallerFilePath] string? sourceFilePath = null, [CallerLineNumber] int sourceLineNumber = -1) : base(sourceFilePath, sourceLineNumber) { if (IsGithubActions()) { diff --git a/test/Core.Test/AutoFixture/CollectionAccessSelectionFixtures.cs b/test/Core.Test/AutoFixture/CollectionAccessSelectionFixtures.cs index 923939b47a..918db204a0 100644 --- a/test/Core.Test/AutoFixture/CollectionAccessSelectionFixtures.cs +++ b/test/Core.Test/AutoFixture/CollectionAccessSelectionFixtures.cs @@ -1,6 +1,6 @@ using System.Reflection; using AutoFixture; -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Core.Models.Data; namespace Bit.Core.Test.AutoFixture; diff --git a/test/Core.Test/AutoFixture/GlobalSettingsFixtures.cs b/test/Core.Test/AutoFixture/GlobalSettingsFixtures.cs index 020b097077..656f40458c 100644 --- a/test/Core.Test/AutoFixture/GlobalSettingsFixtures.cs +++ b/test/Core.Test/AutoFixture/GlobalSettingsFixtures.cs @@ -2,7 +2,7 @@ using System.Text; using AutoFixture; using AutoFixture.Kernel; -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Core; using Bit.Core.Test.Helpers.Factories; using Microsoft.AspNetCore.DataProtection; diff --git a/test/Core.Test/Core.Test.csproj b/test/Core.Test/Core.Test.csproj index b9e218205c..2fe6b4feda 100644 --- a/test/Core.Test/Core.Test.csproj +++ b/test/Core.Test/Core.Test.csproj @@ -8,15 +8,9 @@ runtime; build; native; contentfiles; analyzers; buildtransitive all - - - - - all - runtime; build; native; contentfiles; analyzers - - + + diff --git a/test/Core.Test/Platform/Push/NotificationHub/NotificationHubProxyTests.cs b/test/Core.Test/Platform/Push/NotificationHub/NotificationHubProxyTests.cs index 846b6e5fc4..f7ddcb809b 100644 --- a/test/Core.Test/Platform/Push/NotificationHub/NotificationHubProxyTests.cs +++ b/test/Core.Test/Platform/Push/NotificationHub/NotificationHubProxyTests.cs @@ -25,7 +25,7 @@ public class NotificationHubProxyTests [Theory] [MemberData(nameof(ClientMethods))] - public async void CallsAllClients(Func proxyMethod, Func clientMethod) + public async Task CallsAllClients(Func proxyMethod, Func clientMethod) { var clients = _clients.ToArray(); var proxy = new NotificationHubClientProxy(clients); diff --git a/test/Core.Test/Tokens/ExpiringTokenTests.cs b/test/Core.Test/Tokens/ExpiringTokenTests.cs index 9154b65b69..310df3737d 100644 --- a/test/Core.Test/Tokens/ExpiringTokenTests.cs +++ b/test/Core.Test/Tokens/ExpiringTokenTests.cs @@ -1,5 +1,5 @@ using System.Text.Json; -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Core.Utilities; using Xunit; diff --git a/test/Core.Test/Tokens/TokenTests.cs b/test/Core.Test/Tokens/TokenTests.cs index 1afad24127..57d7491df3 100644 --- a/test/Core.Test/Tokens/TokenTests.cs +++ b/test/Core.Test/Tokens/TokenTests.cs @@ -1,4 +1,4 @@ -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Core.Tokens; using Xunit; diff --git a/test/Core.Test/Tools/AutoFixture/SendFixtures.cs b/test/Core.Test/Tools/AutoFixture/SendFixtures.cs index 0d58ca1671..72f94e2f5d 100644 --- a/test/Core.Test/Tools/AutoFixture/SendFixtures.cs +++ b/test/Core.Test/Tools/AutoFixture/SendFixtures.cs @@ -1,6 +1,6 @@ using System.Reflection; using AutoFixture; -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Core.Tools.Entities; using Bit.Test.Common.AutoFixture.Attributes; @@ -37,4 +37,3 @@ internal class NewUserSendCustomizeAttribute : CustomizeAttribute public override ICustomization GetCustomization(ParameterInfo parameterInfo) => new NewUserSend(); } - diff --git a/test/Events.IntegrationTest/Controllers/CollectControllerTests.cs b/test/Events.IntegrationTest/Controllers/CollectControllerTests.cs index 14110ff7a8..2b90c5418c 100644 --- a/test/Events.IntegrationTest/Controllers/CollectControllerTests.cs +++ b/test/Events.IntegrationTest/Controllers/CollectControllerTests.cs @@ -18,7 +18,7 @@ public class CollectControllerTests : IAsyncLifetime private string _ownerEmail = null!; private Guid _ownerId; - public async Task InitializeAsync() + public async ValueTask InitializeAsync() { _factory = new EventsApplicationFactory(); _ownerEmail = $"integration-test+{Guid.NewGuid()}@bitwarden.com"; @@ -31,11 +31,11 @@ public class CollectControllerTests : IAsyncLifetime _ownerId = user!.Id; } - public Task DisposeAsync() + public ValueTask DisposeAsync() { _client?.Dispose(); _factory?.Dispose(); - return Task.CompletedTask; + return ValueTask.CompletedTask; } [Fact] diff --git a/test/Events.IntegrationTest/Events.IntegrationTest.csproj b/test/Events.IntegrationTest/Events.IntegrationTest.csproj index dbfe147892..ee63ec03cf 100644 --- a/test/Events.IntegrationTest/Events.IntegrationTest.csproj +++ b/test/Events.IntegrationTest/Events.IntegrationTest.csproj @@ -8,12 +8,7 @@ - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/test/Events.Test/Controllers/CollectControllerTests.cs b/test/Events.Test/Controllers/CollectControllerTests.cs index 325442d50e..410d79843a 100644 --- a/test/Events.Test/Controllers/CollectControllerTests.cs +++ b/test/Events.Test/Controllers/CollectControllerTests.cs @@ -1,4 +1,4 @@ -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Core.AdminConsole.Entities; using Bit.Core.Context; using Bit.Core.Enums; diff --git a/test/Events.Test/Events.Test.csproj b/test/Events.Test/Events.Test.csproj index 9d061dbf25..39f7a589da 100644 --- a/test/Events.Test/Events.Test.csproj +++ b/test/Events.Test/Events.Test.csproj @@ -8,15 +8,8 @@ runtime; build; native; contentfiles; analyzers; buildtransitive all - - - - all - runtime; build; native; contentfiles; analyzers - - + diff --git a/test/EventsProcessor.Test/EventsProcessor.Test.csproj b/test/EventsProcessor.Test/EventsProcessor.Test.csproj index 4ed0d34929..a69e8b6e1a 100644 --- a/test/EventsProcessor.Test/EventsProcessor.Test.csproj +++ b/test/EventsProcessor.Test/EventsProcessor.Test.csproj @@ -8,13 +8,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive all - - - - all - runtime; build; native; contentfiles; analyzers - + diff --git a/test/Icons.Test/Icons.Test.csproj b/test/Icons.Test/Icons.Test.csproj index 26f1913451..4bbc18118a 100644 --- a/test/Icons.Test/Icons.Test.csproj +++ b/test/Icons.Test/Icons.Test.csproj @@ -9,13 +9,8 @@ runtime; build; native; contentfiles; analyzers; buildtransitive all - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - + diff --git a/test/Identity.IntegrationTest/Identity.IntegrationTest.csproj b/test/Identity.IntegrationTest/Identity.IntegrationTest.csproj index 5c94fad1d1..165821a8e6 100644 --- a/test/Identity.IntegrationTest/Identity.IntegrationTest.csproj +++ b/test/Identity.IntegrationTest/Identity.IntegrationTest.csproj @@ -11,14 +11,9 @@ all - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - + + diff --git a/test/Identity.Test/AutoFixture/OrganizationUserFixtures.cs b/test/Identity.Test/AutoFixture/OrganizationUserFixtures.cs index e4d40601c5..50905fba2a 100644 --- a/test/Identity.Test/AutoFixture/OrganizationUserFixtures.cs +++ b/test/Identity.Test/AutoFixture/OrganizationUserFixtures.cs @@ -1,6 +1,6 @@ using System.Reflection; using AutoFixture; -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Core.Entities; using Bit.Core.Models.Data; using Bit.Core.Utilities; diff --git a/test/Identity.Test/AutoFixture/ProfileServiceFixtures.cs b/test/Identity.Test/AutoFixture/ProfileServiceFixtures.cs index aaf8b269d6..dc5cec128c 100644 --- a/test/Identity.Test/AutoFixture/ProfileServiceFixtures.cs +++ b/test/Identity.Test/AutoFixture/ProfileServiceFixtures.cs @@ -1,7 +1,7 @@ using System.Reflection; using System.Security.Claims; using AutoFixture; -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Core.Auth.Identity; using Duende.IdentityServer.Models; using Duende.IdentityServer.Validation; diff --git a/test/Identity.Test/AutoFixture/RequestValidationFixtures.cs b/test/Identity.Test/AutoFixture/RequestValidationFixtures.cs index 3063524a57..4b600935e1 100644 --- a/test/Identity.Test/AutoFixture/RequestValidationFixtures.cs +++ b/test/Identity.Test/AutoFixture/RequestValidationFixtures.cs @@ -1,6 +1,6 @@ using System.Reflection; using AutoFixture; -using AutoFixture.Xunit2; +using AutoFixture.Xunit3; using Bit.Identity.IdentityServer; using Duende.IdentityServer.Validation; diff --git a/test/Identity.Test/Identity.Test.csproj b/test/Identity.Test/Identity.Test.csproj index 496d652b30..76847faca8 100644 --- a/test/Identity.Test/Identity.Test.csproj +++ b/test/Identity.Test/Identity.Test.csproj @@ -5,19 +5,13 @@ - runtime; build; native; contentfiles; analyzers; buildtransitive all - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - + + diff --git a/test/Identity.Test/IdentityServer/DeviceValidatorTests.cs b/test/Identity.Test/IdentityServer/DeviceValidatorTests.cs index 7cb16da4ec..4df6b0df3d 100644 --- a/test/Identity.Test/IdentityServer/DeviceValidatorTests.cs +++ b/test/Identity.Test/IdentityServer/DeviceValidatorTests.cs @@ -57,7 +57,7 @@ public class DeviceValidatorTests } [Theory, BitAutoData] - public async void GetKnownDeviceAsync_UserNull_ReturnsFalse( + public async Task GetKnownDeviceAsync_UserNull_ReturnsFalse( Device device) { // Arrange @@ -71,7 +71,7 @@ public class DeviceValidatorTests } [Theory, BitAutoData] - public async void GetKnownDeviceAsync_DeviceNull_ReturnsFalse( + public async Task GetKnownDeviceAsync_DeviceNull_ReturnsFalse( User user) { // Arrange @@ -85,7 +85,7 @@ public class DeviceValidatorTests } [Theory, BitAutoData] - public async void GetKnownDeviceAsync_DeviceNotInDatabase_ReturnsFalse( + public async Task GetKnownDeviceAsync_DeviceNotInDatabase_ReturnsFalse( User user, Device device) { @@ -100,7 +100,7 @@ public class DeviceValidatorTests } [Theory, BitAutoData] - public async void GetKnownDeviceAsync_UserAndDeviceValid_ReturnsTrue( + public async Task GetKnownDeviceAsync_UserAndDeviceValid_ReturnsTrue( [AuthFixtures.ValidatedTokenRequest] ValidatedTokenRequest request, User user, Device device) @@ -157,7 +157,7 @@ public class DeviceValidatorTests } [Theory, BitAutoData] - public async void ValidateRequestDeviceAsync_DeviceNull_ContextModified_ReturnsFalse( + public async Task ValidateRequestDeviceAsync_DeviceNull_ContextModified_ReturnsFalse( CustomValidatorRequestContext context, [AuthFixtures.ValidatedTokenRequest] ValidatedTokenRequest request) { @@ -180,7 +180,7 @@ public class DeviceValidatorTests } [Theory, BitAutoData] - public async void ValidateRequestDeviceAsync_RequestDeviceKnown_ContextDeviceModified_ReturnsTrue( + public async Task ValidateRequestDeviceAsync_RequestDeviceKnown_ContextDeviceModified_ReturnsTrue( Device device, CustomValidatorRequestContext context, [AuthFixtures.ValidatedTokenRequest] ValidatedTokenRequest request) @@ -205,7 +205,7 @@ public class DeviceValidatorTests } [Theory, BitAutoData] - public async void ValidateRequestDeviceAsync_ContextDeviceKnown_ContextDeviceModified_ReturnsTrue( + public async Task ValidateRequestDeviceAsync_ContextDeviceKnown_ContextDeviceModified_ReturnsTrue( Device databaseDevice, CustomValidatorRequestContext context, [AuthFixtures.ValidatedTokenRequest] ValidatedTokenRequest request) @@ -229,7 +229,7 @@ public class DeviceValidatorTests } [Theory, BitAutoData] - public async void ValidateRequestDeviceAsync_ExistingUserNewDeviceLogin_SendNewDeviceLoginEmail_ReturnsTrue( + public async Task ValidateRequestDeviceAsync_ExistingUserNewDeviceLogin_SendNewDeviceLoginEmail_ReturnsTrue( CustomValidatorRequestContext context, [AuthFixtures.ValidatedTokenRequest] ValidatedTokenRequest request) { @@ -253,7 +253,7 @@ public class DeviceValidatorTests } [Theory, BitAutoData] - public async void ValidateRequestDeviceAsync_NewUserNewDeviceLogin_DoesNotSendNewDeviceLoginEmail_ReturnsTrue( + public async Task ValidateRequestDeviceAsync_NewUserNewDeviceLogin_DoesNotSendNewDeviceLoginEmail_ReturnsTrue( CustomValidatorRequestContext context, [AuthFixtures.ValidatedTokenRequest] ValidatedTokenRequest request) { @@ -277,7 +277,7 @@ public class DeviceValidatorTests } [Theory, BitAutoData] - public async void ValidateRequestDeviceAsynce_DisableNewDeviceLoginEmailTrue_DoesNotSendNewDeviceEmail_ReturnsTrue( + public async Task ValidateRequestDeviceAsynce_DisableNewDeviceLoginEmailTrue_DoesNotSendNewDeviceEmail_ReturnsTrue( CustomValidatorRequestContext context, [AuthFixtures.ValidatedTokenRequest] ValidatedTokenRequest request) { @@ -303,7 +303,7 @@ public class DeviceValidatorTests [BitAutoData("refresh_token")] [BitAutoData("authorization_code")] [BitAutoData("client_credentials")] - public async void ValidateRequestDeviceAsync_GrantTypeNotPassword_SavesDevice_ReturnsTrue( + public async Task ValidateRequestDeviceAsync_GrantTypeNotPassword_SavesDevice_ReturnsTrue( string grantType, CustomValidatorRequestContext context, [AuthFixtures.ValidatedTokenRequest] ValidatedTokenRequest request) @@ -331,7 +331,7 @@ public class DeviceValidatorTests [BitAutoData(true, true)] [BitAutoData(true, false)] - public async void ValidateRequestDeviceAsync_IsAuthRequest_UnknownDevice_Errors( + public async Task ValidateRequestDeviceAsync_IsAuthRequest_UnknownDevice_Errors( bool twoFactoRequired, bool ssoRequired, CustomValidatorRequestContext context, [AuthFixtures.ValidatedTokenRequest] ValidatedTokenRequest request) @@ -368,7 +368,7 @@ public class DeviceValidatorTests [BitAutoData(true, false)] [BitAutoData(true, true)] [BitAutoData(true, false)] - public async void ValidateRequestDeviceAsync_IsAuthRequest_NewDeviceOtp_Errors( + public async Task ValidateRequestDeviceAsync_IsAuthRequest_NewDeviceOtp_Errors( bool twoFactoRequired, bool ssoRequired, CustomValidatorRequestContext context, [AuthFixtures.ValidatedTokenRequest] ValidatedTokenRequest request) @@ -405,7 +405,7 @@ public class DeviceValidatorTests } [Theory, BitAutoData] - public async void ValidateRequestDeviceAsync_TwoFactorRequired_SavesDevice_ReturnsTrue( + public async Task ValidateRequestDeviceAsync_TwoFactorRequired_SavesDevice_ReturnsTrue( CustomValidatorRequestContext context, [AuthFixtures.ValidatedTokenRequest] ValidatedTokenRequest request) { @@ -427,7 +427,7 @@ public class DeviceValidatorTests } [Theory, BitAutoData] - public async void ValidateRequestDeviceAsync_SsoRequired_SavesDevice_ReturnsTrue( + public async Task ValidateRequestDeviceAsync_SsoRequired_SavesDevice_ReturnsTrue( CustomValidatorRequestContext context, [AuthFixtures.ValidatedTokenRequest] ValidatedTokenRequest request) { @@ -449,7 +449,7 @@ public class DeviceValidatorTests } [Theory, BitAutoData] - public async void HandleNewDeviceVerificationAsync_UserNull_ContextModified_ReturnsInvalidUser( + public async Task HandleNewDeviceVerificationAsync_UserNull_ContextModified_ReturnsInvalidUser( CustomValidatorRequestContext context, [AuthFixtures.ValidatedTokenRequest] ValidatedTokenRequest request) { @@ -474,7 +474,7 @@ public class DeviceValidatorTests } [Theory, BitAutoData] - public async void HandleNewDeviceVerificationAsync_VerifyDevicesFalse_ReturnsSuccess( + public async Task HandleNewDeviceVerificationAsync_VerifyDevicesFalse_ReturnsSuccess( CustomValidatorRequestContext context, [AuthFixtures.ValidatedTokenRequest] ValidatedTokenRequest request) { @@ -497,7 +497,7 @@ public class DeviceValidatorTests } [Theory, BitAutoData] - public async void HandleNewDeviceVerificationAsync_NewlyCreated_ReturnsSuccess( + public async Task HandleNewDeviceVerificationAsync_NewlyCreated_ReturnsSuccess( CustomValidatorRequestContext context, [AuthFixtures.ValidatedTokenRequest] ValidatedTokenRequest request) { @@ -521,7 +521,7 @@ public class DeviceValidatorTests } [Theory, BitAutoData] - public async void HandleNewDeviceVerificationAsync_UserHasCacheValue_ReturnsSuccess( + public async Task HandleNewDeviceVerificationAsync_UserHasCacheValue_ReturnsSuccess( CustomValidatorRequestContext context, [AuthFixtures.ValidatedTokenRequest] ValidatedTokenRequest request) { @@ -544,7 +544,7 @@ public class DeviceValidatorTests } [Theory, BitAutoData] - public async void HandleNewDeviceVerificationAsync_NewDeviceOtpValid_ReturnsSuccess( + public async Task HandleNewDeviceVerificationAsync_NewDeviceOtpValid_ReturnsSuccess( CustomValidatorRequestContext context, [AuthFixtures.ValidatedTokenRequest] ValidatedTokenRequest request) { @@ -574,7 +574,7 @@ public class DeviceValidatorTests [Theory] [BitAutoData("")] [BitAutoData("123456")] - public async void HandleNewDeviceVerificationAsync_NewDeviceOtpInvalid_ReturnsInvalidNewDeviceOtp( + public async Task HandleNewDeviceVerificationAsync_NewDeviceOtpInvalid_ReturnsInvalidNewDeviceOtp( string newDeviceOtp, CustomValidatorRequestContext context, [AuthFixtures.ValidatedTokenRequest] ValidatedTokenRequest request) @@ -603,7 +603,7 @@ public class DeviceValidatorTests } [Theory, BitAutoData] - public async void HandleNewDeviceVerificationAsync_UserHasNoDevices_ReturnsSuccess( + public async Task HandleNewDeviceVerificationAsync_UserHasNoDevices_ReturnsSuccess( CustomValidatorRequestContext context, [AuthFixtures.ValidatedTokenRequest] ValidatedTokenRequest request) { @@ -628,7 +628,7 @@ public class DeviceValidatorTests } [Theory, BitAutoData] - public async void HandleNewDeviceVerificationAsync_NewDeviceOtpEmpty_UserHasDevices_ReturnsNewDeviceVerificationRequired( + public async Task HandleNewDeviceVerificationAsync_NewDeviceOtpEmpty_UserHasDevices_ReturnsNewDeviceVerificationRequired( CustomValidatorRequestContext context, [AuthFixtures.ValidatedTokenRequest] ValidatedTokenRequest request) { diff --git a/test/Identity.Test/IdentityServer/TwoFactorAuthenticationValidatorTests.cs b/test/Identity.Test/IdentityServer/TwoFactorAuthenticationValidatorTests.cs index 53e9a00c9f..0fcce6aaf4 100644 --- a/test/Identity.Test/IdentityServer/TwoFactorAuthenticationValidatorTests.cs +++ b/test/Identity.Test/IdentityServer/TwoFactorAuthenticationValidatorTests.cs @@ -63,7 +63,7 @@ public class TwoFactorAuthenticationValidatorTests [Theory] [BitAutoData("password")] [BitAutoData("authorization_code")] - public async void RequiresTwoFactorAsync_IndividualOnly_Required_ReturnTrue( + public async Task RequiresTwoFactorAsync_IndividualOnly_Required_ReturnTrue( string grantType, [AuthFixtures.ValidatedTokenRequest] ValidatedTokenRequest request, User user) @@ -87,7 +87,7 @@ public class TwoFactorAuthenticationValidatorTests [Theory] [BitAutoData("client_credentials")] [BitAutoData("webauthn")] - public async void RequiresTwoFactorAsync_NotRequired_ReturnFalse( + public async Task RequiresTwoFactorAsync_NotRequired_ReturnFalse( string grantType, [AuthFixtures.ValidatedTokenRequest] ValidatedTokenRequest request, User user) @@ -106,7 +106,7 @@ public class TwoFactorAuthenticationValidatorTests [Theory] [BitAutoData("password")] [BitAutoData("authorization_code")] - public async void RequiresTwoFactorAsync_IndividualFalse_OrganizationRequired_ReturnTrue( + public async Task RequiresTwoFactorAsync_IndividualFalse_OrganizationRequired_ReturnTrue( string grantType, [AuthFixtures.ValidatedTokenRequest] ValidatedTokenRequest request, User user, @@ -154,7 +154,7 @@ public class TwoFactorAuthenticationValidatorTests [Theory] [BitAutoData] - public async void BuildTwoFactorResultAsync_NoProviders_ReturnsNull( + public async Task BuildTwoFactorResultAsync_NoProviders_ReturnsNull( User user, Organization organization) { @@ -174,7 +174,7 @@ public class TwoFactorAuthenticationValidatorTests [Theory] [BitAutoData] - public async void BuildTwoFactorResultAsync_OrganizationProviders_NotEnabled_ReturnsNull( + public async Task BuildTwoFactorResultAsync_OrganizationProviders_NotEnabled_ReturnsNull( User user, Organization organization) { @@ -194,7 +194,7 @@ public class TwoFactorAuthenticationValidatorTests [Theory] [BitAutoData] - public async void BuildTwoFactorResultAsync_OrganizationProviders_ReturnsNotNull( + public async Task BuildTwoFactorResultAsync_OrganizationProviders_ReturnsNotNull( User user, Organization organization) { @@ -217,7 +217,7 @@ public class TwoFactorAuthenticationValidatorTests [Theory] [BitAutoData] - public async void BuildTwoFactorResultAsync_IndividualProviders_NotEnabled_ReturnsNull( + public async Task BuildTwoFactorResultAsync_IndividualProviders_NotEnabled_ReturnsNull( User user) { // Arrange @@ -232,7 +232,7 @@ public class TwoFactorAuthenticationValidatorTests [Theory] [BitAutoData] - public async void BuildTwoFactorResultAsync_IndividualProviders_ReturnsNotNull( + public async Task BuildTwoFactorResultAsync_IndividualProviders_ReturnsNotNull( User user) { // Arrange @@ -252,7 +252,7 @@ public class TwoFactorAuthenticationValidatorTests [Theory] [BitAutoData(TwoFactorProviderType.Email)] - public async void BuildTwoFactorResultAsync_SetsSsoToken_ReturnsNotNull( + public async Task BuildTwoFactorResultAsync_SetsSsoToken_ReturnsNotNull( TwoFactorProviderType providerType, User user) { @@ -284,7 +284,7 @@ public class TwoFactorAuthenticationValidatorTests [BitAutoData(TwoFactorProviderType.Email)] [BitAutoData(TwoFactorProviderType.YubiKey)] [BitAutoData(TwoFactorProviderType.OrganizationDuo)] - public async void BuildTwoFactorResultAsync_IndividualProvider_ReturnMatchesType( + public async Task BuildTwoFactorResultAsync_IndividualProvider_ReturnMatchesType( TwoFactorProviderType providerType, User user) { @@ -313,7 +313,7 @@ public class TwoFactorAuthenticationValidatorTests [Theory] [BitAutoData] - public async void VerifyTwoFactorAsync_Individual_TypeNull_ReturnsFalse( + public async Task VerifyTwoFactorAsync_Individual_TypeNull_ReturnsFalse( User user, string token) { @@ -330,7 +330,7 @@ public class TwoFactorAuthenticationValidatorTests [Theory] [BitAutoData] - public async void VerifyTwoFactorAsync_Individual_NotEnabled_ReturnsFalse( + public async Task VerifyTwoFactorAsync_Individual_NotEnabled_ReturnsFalse( User user, string token) { @@ -348,7 +348,7 @@ public class TwoFactorAuthenticationValidatorTests [Theory] [BitAutoData] - public async void VerifyTwoFactorAsync_Organization_NotEnabled_ReturnsFalse( + public async Task VerifyTwoFactorAsync_Organization_NotEnabled_ReturnsFalse( User user, string token) { @@ -369,7 +369,7 @@ public class TwoFactorAuthenticationValidatorTests [BitAutoData(TwoFactorProviderType.Email)] [BitAutoData(TwoFactorProviderType.YubiKey)] [BitAutoData(TwoFactorProviderType.Remember)] - public async void VerifyTwoFactorAsync_Individual_ValidToken_ReturnsTrue( + public async Task VerifyTwoFactorAsync_Individual_ValidToken_ReturnsTrue( TwoFactorProviderType providerType, User user, string token) @@ -392,7 +392,7 @@ public class TwoFactorAuthenticationValidatorTests [BitAutoData(TwoFactorProviderType.Email)] [BitAutoData(TwoFactorProviderType.YubiKey)] [BitAutoData(TwoFactorProviderType.Remember)] - public async void VerifyTwoFactorAsync_Individual_InvalidToken_ReturnsFalse( + public async Task VerifyTwoFactorAsync_Individual_InvalidToken_ReturnsFalse( TwoFactorProviderType providerType, User user, string token) @@ -411,7 +411,7 @@ public class TwoFactorAuthenticationValidatorTests [Theory] [BitAutoData(TwoFactorProviderType.OrganizationDuo)] - public async void VerifyTwoFactorAsync_Organization_ValidToken_ReturnsTrue( + public async Task VerifyTwoFactorAsync_Organization_ValidToken_ReturnsTrue( TwoFactorProviderType providerType, User user, Organization organization, @@ -438,7 +438,7 @@ public class TwoFactorAuthenticationValidatorTests [Theory] [BitAutoData(TwoFactorProviderType.RecoveryCode)] - public async void VerifyTwoFactorAsync_RecoveryCode_ValidToken_ReturnsTrue( + public async Task VerifyTwoFactorAsync_RecoveryCode_ValidToken_ReturnsTrue( TwoFactorProviderType providerType, User user, Organization organization) @@ -458,7 +458,7 @@ public class TwoFactorAuthenticationValidatorTests [Theory] [BitAutoData(TwoFactorProviderType.RecoveryCode)] - public async void VerifyTwoFactorAsync_RecoveryCode_InvalidToken_ReturnsFalse( + public async Task VerifyTwoFactorAsync_RecoveryCode_InvalidToken_ReturnsFalse( TwoFactorProviderType providerType, User user, Organization organization) diff --git a/test/Infrastructure.Dapper.Test/Infrastructure.Dapper.Test.csproj b/test/Infrastructure.Dapper.Test/Infrastructure.Dapper.Test.csproj index fdef3c6cac..8579e46686 100644 --- a/test/Infrastructure.Dapper.Test/Infrastructure.Dapper.Test.csproj +++ b/test/Infrastructure.Dapper.Test/Infrastructure.Dapper.Test.csproj @@ -8,12 +8,7 @@ - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/test/Infrastructure.EFIntegration.Test/Infrastructure.EFIntegration.Test.csproj b/test/Infrastructure.EFIntegration.Test/Infrastructure.EFIntegration.Test.csproj index e63d3d7419..392b20e10b 100644 --- a/test/Infrastructure.EFIntegration.Test/Infrastructure.EFIntegration.Test.csproj +++ b/test/Infrastructure.EFIntegration.Test/Infrastructure.EFIntegration.Test.csproj @@ -7,14 +7,9 @@ runtime; build; native; contentfiles; analyzers; buildtransitive all - - - - all - runtime; build; native; contentfiles; analyzers - - + + diff --git a/test/Infrastructure.IntegrationTest/DatabaseDataAttribute.cs b/test/Infrastructure.IntegrationTest/DatabaseDataAttribute.cs index c458969748..fa9ef691c4 100644 --- a/test/Infrastructure.IntegrationTest/DatabaseDataAttribute.cs +++ b/test/Infrastructure.IntegrationTest/DatabaseDataAttribute.cs @@ -5,6 +5,7 @@ using Bit.Infrastructure.Dapper; using Bit.Infrastructure.EntityFramework; using Bit.Infrastructure.EntityFramework.Repositories; using Bit.Infrastructure.IntegrationTest.Services; +using Bit.Test.Common; using Microsoft.Extensions.Caching.Distributed; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -183,7 +184,7 @@ public class DatabaseDataAttribute : DataAttribute public override bool SupportsDiscoveryEnumeration() { - return true; + return false; } private class ServiceBasedTheoryDataRow : TheoryDataRowBase diff --git a/test/Infrastructure.IntegrationTest/Infrastructure.IntegrationTest.csproj b/test/Infrastructure.IntegrationTest/Infrastructure.IntegrationTest.csproj index a2215e3453..8782e17360 100644 --- a/test/Infrastructure.IntegrationTest/Infrastructure.IntegrationTest.csproj +++ b/test/Infrastructure.IntegrationTest/Infrastructure.IntegrationTest.csproj @@ -11,12 +11,7 @@ - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - runtime; build; native; contentfiles; analyzers; buildtransitive all @@ -30,6 +25,7 @@ + diff --git a/test/Notifications.Test/Notifications.Test.csproj b/test/Notifications.Test/Notifications.Test.csproj index a4bab9df98..a0abd45e2d 100644 --- a/test/Notifications.Test/Notifications.Test.csproj +++ b/test/Notifications.Test/Notifications.Test.csproj @@ -8,13 +8,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive all - - - - all - runtime; build; native; contentfiles; analyzers - + diff --git a/test/SharedWeb.Test/SharedWeb.Test.csproj b/test/SharedWeb.Test/SharedWeb.Test.csproj index c631ac9227..bfb05dd32a 100644 --- a/test/SharedWeb.Test/SharedWeb.Test.csproj +++ b/test/SharedWeb.Test/SharedWeb.Test.csproj @@ -8,14 +8,8 @@ runtime; build; native; contentfiles; analyzers; buildtransitive all - - - - all - runtime; build; native; contentfiles; analyzers - +