From 55308a1b562efc3760868a433f9a6075f3509ffc Mon Sep 17 00:00:00 2001 From: Norbert Truchsess Date: Mon, 16 Sep 2024 12:30:13 +0200 Subject: [PATCH] adjust unit-tests --- .../BusinessLogic/UserUploadBusinessLogic.cs | 6 +- .../BusinessLogic/UserBusinessLogicTests.cs | 92 ++++++++++++------- 2 files changed, 60 insertions(+), 38 deletions(-) diff --git a/src/administration/Administration.Service/BusinessLogic/UserUploadBusinessLogic.cs b/src/administration/Administration.Service/BusinessLogic/UserUploadBusinessLogic.cs index 2739abbdd3..a1b4576c3c 100644 --- a/src/administration/Administration.Service/BusinessLogic/UserUploadBusinessLogic.cs +++ b/src/administration/Administration.Service/BusinessLogic/UserUploadBusinessLogic.cs @@ -41,7 +41,6 @@ public class UserUploadBusinessLogic : IUserUploadBusinessLogic private readonly UserSettings _settings; private readonly IIdentityData _identityData; private readonly IErrorMessageService _errorMessageService; - private readonly IPortalRepositories _portalRepositories; /// /// Constructor. @@ -51,21 +50,18 @@ public class UserUploadBusinessLogic : IUserUploadBusinessLogic /// Access to the identity Service /// ErrorMessage Service /// Settings - /// Portal Repositories public UserUploadBusinessLogic( IUserProvisioningService userProvisioningService, IMailingProcessCreation mailingProcessCreation, IIdentityService identityService, IErrorMessageService errorMessageService, - IOptions settings, - IPortalRepositories portalRepositories) + IOptions settings) { _userProvisioningService = userProvisioningService; _mailingProcessCreation = mailingProcessCreation; _identityData = identityService.IdentityData; _errorMessageService = errorMessageService; _settings = settings.Value; - _portalRepositories = portalRepositories; } public ValueTask UploadOwnCompanyIdpUsersAsync(Guid identityProviderId, IFormFile document, CancellationToken cancellationToken) diff --git a/tests/administration/Administration.Service.Tests/BusinessLogic/UserBusinessLogicTests.cs b/tests/administration/Administration.Service.Tests/BusinessLogic/UserBusinessLogicTests.cs index 8a73d0fe70..c8880aa92b 100644 --- a/tests/administration/Administration.Service.Tests/BusinessLogic/UserBusinessLogicTests.cs +++ b/tests/administration/Administration.Service.Tests/BusinessLogic/UserBusinessLogicTests.cs @@ -76,7 +76,7 @@ public class UserBusinessLogicTests private readonly IIdentityData _identity; private readonly ICollection _addedRoles = new HashSet(); private readonly ICollection _removedRoles = new HashSet(); - private readonly Func _processLine; + private readonly Func?, (Guid CompanyUserId, string UserName, string? Password, Exception? Error)> _processLine; private readonly Func _companyUserSelectFunction; private readonly Exception _error; private readonly UserSettings _settings; @@ -122,7 +122,7 @@ public UserBusinessLogicTests() _createdCentralCompanyId = Guid.NewGuid(); _displayName = _fixture.Create(); - _processLine = A.Fake>(); + _processLine = A.Fake?, (Guid CompanyUserId, string UserName, string? Password, Exception? Error)>>(); _companyUserSelectFunction = A.Fake>(); _identity = A.Fake(); @@ -276,12 +276,15 @@ public async Task TestUserCreationCreationError() CreateUserCreationInfo() }; - A.CallTo(() => _processLine(A.That.Matches(u => - u.FirstName == userCreationInfo.firstName && - u.LastName == userCreationInfo.lastName && - u.Email == userCreationInfo.eMail - ))).ReturnsLazily( - (UserCreationRoleDataIdpInfo creationInfo) => _fixture.Build<(Guid CompanyUserId, string UserName, string? Password, Exception? Error)>() + A.CallTo(() => _processLine( + A._, + A.That.Matches(u => + u.FirstName == userCreationInfo.firstName && + u.LastName == userCreationInfo.lastName && + u.Email == userCreationInfo.eMail), + A>._) + ).ReturnsLazily((CompanyNameIdpAliasData _, UserCreationRoleDataIdpInfo creationInfo, Action? _) => + _fixture.Build<(Guid CompanyUserId, string UserName, string? Password, Exception? Error)>() .With(x => x.UserName, creationInfo.UserName) .With(x => x.Error, error) .Create()); @@ -299,11 +302,14 @@ public async Task TestUserCreationCreationError() var result = await sut.CreateOwnCompanyUsersAsync(userList).ToListAsync(); - A.CallTo(() => _processLine(A.That.Matches(u => - u.FirstName == userCreationInfo.firstName && - u.LastName == userCreationInfo.lastName && - u.Email == userCreationInfo.eMail - ))).MustHaveHappenedOnceExactly(); + A.CallTo(() => _processLine( + A._, + A.That.Matches(u => + u.FirstName == userCreationInfo.firstName && + u.LastName == userCreationInfo.lastName && + u.Email == userCreationInfo.eMail), + A>._) + ).MustHaveHappenedOnceExactly(); A.CallTo(() => _mockLogger.Log(A.That.IsEqualTo(LogLevel.Error), A._, A._)).MustHaveHappenedOnceExactly(); @@ -331,11 +337,14 @@ public async Task TestUserCreationCreationThrows() CreateUserCreationInfo() }; - A.CallTo(() => _processLine(A.That.Matches(u => - u.FirstName == userCreationInfo.firstName && - u.LastName == userCreationInfo.lastName && - u.Email == userCreationInfo.eMail - ))).Throws(() => expected); + A.CallTo(() => _processLine( + A._, + A.That.Matches(u => + u.FirstName == userCreationInfo.firstName && + u.LastName == userCreationInfo.lastName && + u.Email == userCreationInfo.eMail), + A>._) + ).Throws(() => expected); var sut = new UserBusinessLogic( null!, @@ -352,11 +361,14 @@ public async Task TestUserCreationCreationThrows() var error = await Assert.ThrowsAsync(Act); - A.CallTo(() => _processLine(A.That.Matches(u => + A.CallTo(() => _processLine( + A._, + A.That.Matches(u => u.FirstName == userCreationInfo.firstName && u.LastName == userCreationInfo.lastName && - u.Email == userCreationInfo.eMail - ))).MustHaveHappenedOnceExactly(); + u.Email == userCreationInfo.eMail), + A>._) + ).MustHaveHappenedOnceExactly(); A.CallTo(() => _mockLogger.Log(A.That.IsEqualTo(LogLevel.Error), A._, A._)).MustNotHaveHappened(); A.CallTo(() => _mailingProcessCreation.CreateMailProcess(A._, "NewUserTemplate", A>._)) @@ -433,8 +445,12 @@ public async Task TestCreateOwnCompanyIdpUserAsyncError() var userCreationInfoIdp = CreateUserCreationInfoIdp(); - A.CallTo(() => _processLine(A.That.Matches(u => u.FirstName == userCreationInfoIdp.FirstName))).ReturnsLazily( - (UserCreationRoleDataIdpInfo creationInfo) => _fixture.Build<(Guid CompanyUserId, string UserName, string? Password, Exception? Error)>() + A.CallTo(() => _processLine( + A._, + A.That.Matches(u => u.FirstName == userCreationInfoIdp.FirstName), + A>._) + ).ReturnsLazily((CompanyNameIdpAliasData _, UserCreationRoleDataIdpInfo creationInfo, Action? onSuccess) => + _fixture.Build<(Guid CompanyUserId, string UserName, string? Password, Exception? Error)>() .With(x => x.UserName, creationInfo.UserName) .With(x => x.Error, _error) .Create()); @@ -465,7 +481,11 @@ public async Task TestCreateOwnCompanyIdpUserAsyncThrows() var userCreationInfoIdp = CreateUserCreationInfoIdp(); - A.CallTo(() => _processLine(A.That.Matches(u => u.FirstName == userCreationInfoIdp.FirstName))).Throws(_error); + A.CallTo(() => _processLine( + A._, + A.That.Matches(u => u.FirstName == userCreationInfoIdp.FirstName), + A>._) + ).Throws(_error); var sut = new UserBusinessLogic( null!, @@ -1153,7 +1173,7 @@ public async Task GetOwnCompanyAppUsersAsync_ReturnsExpectedResult() A.CallTo(() => _identity.IdentityId).Returns(userId); A.CallTo(() => _userRepository.GetOwnCompanyAppUsersPaginationSourceAsync(A._, A._, A>._, A>._, A._)) - .Returns((skip, take) => Task.FromResult(new Pagination.Source(companyUsers.Count(), companyUsers.Skip(skip).Take(take)))); + .Returns((skip, take) => Task.FromResult?>(new Pagination.Source(companyUsers.Count(), companyUsers.Skip(skip).Take(take)))); var sut = new UserBusinessLogic(null!, null!, null!, _portalRepositories, _identityService, null!, null!, null!, A.Fake>()); // Act @@ -1178,7 +1198,7 @@ public async Task GetOwnCompanyAppUsersAsync_SecondPage_ReturnsExpectedResult() A.CallTo(() => _identity.IdentityId).Returns(userId); A.CallTo(() => _userRepository.GetOwnCompanyAppUsersPaginationSourceAsync(A._, A._, A>._, A>._, A._)) - .Returns((skip, take) => Task.FromResult(new Pagination.Source(companyUsers.Count(), companyUsers.Skip(skip).Take(take)))); + .Returns((skip, take) => Task.FromResult?>(new Pagination.Source(companyUsers.Count(), companyUsers.Skip(skip).Take(take)))); var sut = new UserBusinessLogic(null!, null!, null!, _portalRepositories, _identityService, null!, null!, null!, A.Fake>()); // Act @@ -1541,16 +1561,22 @@ private void SetupFakesForUserCreation(bool isBulkUserCreation) } A.CallTo(() => _userProvisioningService.CreateOwnCompanyIdpUsersAsync(A._, A>._, A>._, A._)) - .ReturnsLazily((CompanyNameIdpAliasData _, IAsyncEnumerable userCreationInfos, Action _, CancellationToken _) => - userCreationInfos.Select(userCreationInfo => _processLine(userCreationInfo))); + .ReturnsLazily((CompanyNameIdpAliasData idpAliasData, IAsyncEnumerable userCreationInfos, Action? onSuccess, CancellationToken _) => + userCreationInfos.Select(userCreationInfo => _processLine(idpAliasData, userCreationInfo, onSuccess))); A.CallTo(() => _userProvisioningService.GetIdentityProviderDisplayName(A._)).Returns(_displayName); - A.CallTo(() => _processLine(A._)).ReturnsLazily( - (UserCreationRoleDataIdpInfo creationInfo) => _fixture.Build<(Guid CompanyUserId, string UserName, string? Password, Exception? Error)>() - .With(x => x.UserName, creationInfo.UserName) - .With(x => x.Error, default(Exception?)) - .Create()); + A.CallTo(() => _processLine(A._, A._, A>._)) + .ReturnsLazily((CompanyNameIdpAliasData aliasData, UserCreationRoleDataIdpInfo creationInfo, Action? onSucess) => + { + var password = aliasData.IsSharedIdp ? _fixture.Create() : null; + onSucess?.Invoke(new(creationInfo, password)); + return _fixture.Build<(Guid CompanyUserId, string UserName, string? Password, Exception? Error)>() + .With(x => x.UserName, creationInfo.UserName) + .With(x => x.Password, password) + .With(x => x.Error, default(Exception?)) + .Create(); + }); } private void SetupFakesForUserDeletion()