mirror of
https://github.com/bitwarden/server.git
synced 2025-07-04 17:42:49 -05:00
[AC-1139] Added unit test to test setting users with EditAssignedCollections with Manage permission when saving a collection
This commit is contained in:
@ -69,7 +69,7 @@ public class CollectionService : ICollectionService
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// If not using Flexible Collections
|
// If not using Flexible Collections
|
||||||
// all users with EditAssignedCollections permission should have Manage permission for the collection
|
// all Organization users with EditAssignedCollections permission should have Manage permission for the collection
|
||||||
var organizationUsers = await _organizationUserRepository
|
var organizationUsers = await _organizationUserRepository
|
||||||
.GetManyByOrganizationAsync(collection.OrganizationId, null);
|
.GetManyByOrganizationAsync(collection.OrganizationId, null);
|
||||||
foreach (var orgUser in organizationUsers.Where(ou => ou.GetPermissions()?.EditAssignedCollections ?? false))
|
foreach (var orgUser in organizationUsers.Where(ou => ou.GetPermissions()?.EditAssignedCollections ?? false))
|
||||||
|
@ -7,6 +7,7 @@ using Bit.Core.Repositories;
|
|||||||
using Bit.Core.Services;
|
using Bit.Core.Services;
|
||||||
using Bit.Core.Test.AutoFixture;
|
using Bit.Core.Test.AutoFixture;
|
||||||
using Bit.Core.Test.AutoFixture.OrganizationFixtures;
|
using Bit.Core.Test.AutoFixture.OrganizationFixtures;
|
||||||
|
using Bit.Core.Utilities;
|
||||||
using Bit.Test.Common.AutoFixture;
|
using Bit.Test.Common.AutoFixture;
|
||||||
using Bit.Test.Common.AutoFixture.Attributes;
|
using Bit.Test.Common.AutoFixture.Attributes;
|
||||||
using NSubstitute;
|
using NSubstitute;
|
||||||
@ -36,6 +37,39 @@ public class CollectionServiceTest
|
|||||||
Assert.True(collection.RevisionDate - utcNow < TimeSpan.FromSeconds(1));
|
Assert.True(collection.RevisionDate - utcNow < TimeSpan.FromSeconds(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Theory, BitAutoData]
|
||||||
|
public async Task SaveAsync_DefaultIdWithUsers_WithOneEditAssignedCollectionsUser_CreatesCollectionInTheRepository(
|
||||||
|
Collection collection, Organization organization,
|
||||||
|
[CollectionAccessSelectionCustomize] IEnumerable<CollectionAccessSelection> users,
|
||||||
|
SutProvider<CollectionService> sutProvider)
|
||||||
|
{
|
||||||
|
collection.Id = default;
|
||||||
|
collection.OrganizationId = organization.Id;
|
||||||
|
sutProvider.GetDependency<IOrganizationRepository>().GetByIdAsync(collection.OrganizationId).Returns(organization);
|
||||||
|
sutProvider.GetDependency<IOrganizationUserRepository>()
|
||||||
|
.GetManyByOrganizationAsync(collection.OrganizationId, Arg.Any<OrganizationUserType?>())
|
||||||
|
.Returns(new List<OrganizationUser>
|
||||||
|
{
|
||||||
|
users.Select(x => new OrganizationUser
|
||||||
|
{
|
||||||
|
Id = x.Id,
|
||||||
|
Type = OrganizationUserType.Custom,
|
||||||
|
Permissions = CoreHelpers.ClassToJsonData(new Permissions { EditAssignedCollections = true })
|
||||||
|
}).First()
|
||||||
|
});
|
||||||
|
var utcNow = DateTime.UtcNow;
|
||||||
|
|
||||||
|
await sutProvider.Sut.SaveAsync(collection, null, users);
|
||||||
|
|
||||||
|
await sutProvider.GetDependency<ICollectionRepository>().Received()
|
||||||
|
.CreateAsync(collection, Arg.Is<List<CollectionAccessSelection>>(l => l == null),
|
||||||
|
Arg.Is<List<CollectionAccessSelection>>(l => l.Count(i => i.Manage == true) == 1));
|
||||||
|
await sutProvider.GetDependency<IEventService>().Received()
|
||||||
|
.LogCollectionEventAsync(collection, EventType.Collection_Created);
|
||||||
|
Assert.True(collection.CreationDate - utcNow < TimeSpan.FromSeconds(1));
|
||||||
|
Assert.True(collection.RevisionDate - utcNow < TimeSpan.FromSeconds(1));
|
||||||
|
}
|
||||||
|
|
||||||
[Theory, BitAutoData]
|
[Theory, BitAutoData]
|
||||||
public async Task SaveAsync_DefaultIdWithGroupsAndUsers_CreateCollectionWithGroupsAndUsersInRepository(Collection collection,
|
public async Task SaveAsync_DefaultIdWithGroupsAndUsers_CreateCollectionWithGroupsAndUsersInRepository(Collection collection,
|
||||||
[CollectionAccessSelectionCustomize(true)] IEnumerable<CollectionAccessSelection> groups, IEnumerable<CollectionAccessSelection> users, Organization organization, SutProvider<CollectionService> sutProvider)
|
[CollectionAccessSelectionCustomize(true)] IEnumerable<CollectionAccessSelection> groups, IEnumerable<CollectionAccessSelection> users, Organization organization, SutProvider<CollectionService> sutProvider)
|
||||||
|
Reference in New Issue
Block a user