You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.9 KiB
84 lines
2.9 KiB
using Bit.Core.AdminConsole.Entities; |
|
using Bit.Core.Billing.Enums; |
|
using Bit.Core.Entities; |
|
using Bit.Core.Enums; |
|
using Bit.Core.Repositories; |
|
using Bit.Core.Vault.Entities; |
|
using Bit.Core.Vault.Enums; |
|
using Bit.Core.Vault.Repositories; |
|
using Xunit; |
|
|
|
namespace Bit.Infrastructure.IntegrationTest.Vault.Repositories; |
|
|
|
public class CollectionCipherRepositoryTests |
|
{ |
|
[Theory, DatabaseData] |
|
public async Task GetManySharedByOrganizationIdAsync_OnlyReturnsSharedCollections( |
|
IOrganizationRepository organizationRepository, |
|
ICollectionRepository collectionRepository, |
|
ICipherRepository cipherRepository, |
|
ICollectionCipherRepository collectionCipherRepository) |
|
{ |
|
// Arrange |
|
var organization = await organizationRepository.CreateAsync(new Organization |
|
{ |
|
Name = "Test Org", |
|
PlanType = PlanType.EnterpriseAnnually, |
|
Plan = "Enterprise", |
|
BillingEmail = "billing@example.com" |
|
}); |
|
|
|
var sharedCollection = await collectionRepository.CreateAsync(new Collection |
|
{ |
|
Name = "Shared Collection", |
|
OrganizationId = organization.Id, |
|
Type = CollectionType.SharedCollection |
|
}); |
|
|
|
var defaultUserCollection = await collectionRepository.CreateAsync(new Collection |
|
{ |
|
Name = "Default User Collection", |
|
OrganizationId = organization.Id, |
|
Type = CollectionType.DefaultUserCollection |
|
}); |
|
|
|
var sharedCipher = await cipherRepository.CreateAsync(new Cipher |
|
{ |
|
Type = CipherType.Login, |
|
OrganizationId = organization.Id, |
|
Data = "" |
|
}); |
|
|
|
var defaultCipher = await cipherRepository.CreateAsync(new Cipher |
|
{ |
|
Type = CipherType.Login, |
|
OrganizationId = organization.Id, |
|
Data = "" |
|
}); |
|
|
|
await collectionCipherRepository.AddCollectionsForManyCiphersAsync( |
|
organization.Id, |
|
new[] { sharedCipher.Id }, |
|
new[] { sharedCollection.Id }); |
|
|
|
await collectionCipherRepository.AddCollectionsForManyCiphersAsync( |
|
organization.Id, |
|
new[] { defaultCipher.Id }, |
|
new[] { defaultUserCollection.Id }); |
|
|
|
// Act |
|
var result = await collectionCipherRepository.GetManySharedByOrganizationIdAsync(organization.Id); |
|
|
|
// Assert |
|
Assert.Single(result); |
|
Assert.Equal(sharedCollection.Id, result.First().CollectionId); |
|
Assert.DoesNotContain(result, cc => cc.CollectionId == defaultUserCollection.Id); |
|
|
|
// Cleanup |
|
await cipherRepository.DeleteAsync(sharedCipher); |
|
await cipherRepository.DeleteAsync(defaultCipher); |
|
await collectionRepository.DeleteAsync(sharedCollection); |
|
await collectionRepository.DeleteAsync(defaultUserCollection); |
|
await organizationRepository.DeleteAsync(organization); |
|
} |
|
}
|
|
|