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.
67 lines
2.7 KiB
67 lines
2.7 KiB
using Bit.Core.Tools.Entities; |
|
using Bit.Core.Tools.Enums; |
|
using Bit.Core.Tools.Repositories; |
|
using Bit.Infrastructure.IntegrationTest.Comparers; |
|
using Xunit; |
|
|
|
namespace Bit.Infrastructure.IntegrationTest.Tools; |
|
|
|
public class SendRepositoryTests |
|
{ |
|
[DatabaseTheory, DatabaseData] |
|
public async Task CreateAsync_Works(ISendRepository sendRepository) |
|
{ |
|
var expirationDate = DateTime.UtcNow.AddDays(7); |
|
|
|
var createdSend = await sendRepository.CreateAsync(new Send |
|
{ |
|
Data = "{\"Text\": \"2.t|t|t\"}", // TODO: EF Should enforce this |
|
Type = SendType.Text, |
|
AccessCount = 0, |
|
Key = "2.t|t|t", // TODO: EF should enforce this |
|
ExpirationDate = expirationDate, |
|
DeletionDate = expirationDate.AddDays(7), |
|
}); |
|
|
|
Assert.NotNull(createdSend.ExpirationDate); |
|
Assert.Equal(expirationDate, createdSend.ExpirationDate!.Value, LaxDateTimeComparer.Default); |
|
|
|
var sendFromDatabase = await sendRepository.GetByIdAsync(createdSend.Id); |
|
Assert.NotNull(sendFromDatabase); |
|
Assert.Equal(expirationDate, sendFromDatabase.ExpirationDate!.Value, LaxDateTimeComparer.Default); |
|
Assert.Equal(SendType.Text, sendFromDatabase.Type); |
|
Assert.Equal(0, sendFromDatabase.AccessCount); |
|
Assert.Equal("2.t|t|t", sendFromDatabase.Key); |
|
Assert.Equal(expirationDate.AddDays(7), sendFromDatabase.DeletionDate, LaxDateTimeComparer.Default); |
|
Assert.Equal("{\"Text\": \"2.t|t|t\"}", sendFromDatabase.Data); |
|
} |
|
|
|
[DatabaseTheory, DatabaseData] |
|
// This test runs best on a fresh database and may fail on subsequent runs with other tests. |
|
public async Task GetByDeletionDateAsync_Works(ISendRepository sendRepository) |
|
{ |
|
var deletionDate = DateTime.UtcNow.AddYears(-1); |
|
|
|
var shouldDeleteSend = await sendRepository.CreateAsync(new Send |
|
{ |
|
Data = "{\"Text\": \"2.t|t|t\"}", // TODO: EF Should enforce this |
|
Type = SendType.Text, |
|
AccessCount = 0, |
|
Key = "2.t|t|t", // TODO: EF should enforce this |
|
DeletionDate = deletionDate.AddSeconds(-2), |
|
}); |
|
|
|
var shouldKeepSend = await sendRepository.CreateAsync(new Send |
|
{ |
|
Data = "{\"Text\": \"2.t|t|t\"}", // TODO: EF Should enforce this |
|
Type = SendType.Text, |
|
AccessCount = 0, |
|
Key = "2.t|t|t", // TODO: EF should enforce this |
|
DeletionDate = deletionDate.AddSeconds(2), |
|
}); |
|
|
|
var toDeleteSends = await sendRepository.GetManyByDeletionDateAsync(deletionDate); |
|
var toDeleteSend = Assert.Single(toDeleteSends); |
|
Assert.Equal(shouldDeleteSend.Id, toDeleteSend.Id); |
|
} |
|
}
|
|
|