Skip to content

Commit

Permalink
Fix failed store proc tests
Browse files Browse the repository at this point in the history
- Replace incorrect models to simplify compatibility with the stored proc.

- Fix logic issues and update tests to ensure consistency between stored proc and Entity Framework.
  • Loading branch information
JimmyVo16 committed Jan 3, 2025
1 parent 5728d1f commit d49ba8b
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -147,13 +147,13 @@ from s in sJoin.DefaultIfEmpty()
using var scope = ServiceScopeFactory.CreateScope();
var dbContext = GetDatabaseContext(scope);

var unverifiedDomainsInLast72Hours = await dbContext.OrganizationDomains
.Where(x => x.CreationDate.Date >= DateTime.UtcNow.AddDays(-4).Date
var threeDaysOldUnverifiedDomains = await dbContext.OrganizationDomains
.Where(x => x.CreationDate.Date == DateTime.UtcNow.AddDays(-4).Date
&& x.VerifiedDate == null)

Check warning on line 152 in src/Infrastructure.EntityFramework/Repositories/OrganizationDomainRepository.cs

View check run for this annotation

Codecov / codecov/patch

src/Infrastructure.EntityFramework/Repositories/OrganizationDomainRepository.cs#L150-L152

Added lines #L150 - L152 were not covered by tests
.AsNoTracking()
.ToListAsync();

return Mapper.Map<List<Core.Entities.OrganizationDomain>>(unverifiedDomainsInLast72Hours);
return Mapper.Map<List<Core.Entities.OrganizationDomain>>(threeDaysOldUnverifiedDomains);

Check warning on line 156 in src/Infrastructure.EntityFramework/Repositories/OrganizationDomainRepository.cs

View check run for this annotation

Codecov / codecov/patch

src/Infrastructure.EntityFramework/Repositories/OrganizationDomainRepository.cs#L156

Added line #L156 was not covered by tests
}

public async Task<bool> DeleteExpiredAsync(int expirationPeriod)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@

using Bit.Core.AdminConsole.Entities;
using Bit.Core.Entities;
using Bit.Core.Repositories;
using Bit.Infrastructure.EntityFramework.AdminConsole.Models;
using Bit.Infrastructure.EntityFramework.Models;
using Xunit;

namespace Bit.Infrastructure.IntegrationTest.Repositories;

public class OrganizationDomainRepositoryTests
{
[DatabaseTheory, DatabaseData]
public async Task GetExpiredOrganizationDomainsAsync_ShouldReturnExpiredOrganizationDomains(
public async Task GetExpiredOrganizationDomainsAsync_ShouldReturn3DaysOldUnverifiedDomains(
IUserRepository userRepository,
IOrganizationRepository organizationRepository,
IOrganizationDomainRepository organizationDomainRepository)
Expand Down Expand Up @@ -40,21 +39,28 @@ public async Task GetExpiredOrganizationDomainsAsync_ShouldReturnExpiredOrganiza
DomainName = $"domain2+{id}@example.com",
Txt = "btw+12345"
};
var dummyInterval = 1;
organizationDomain1.SetNextRunDate(dummyInterval);

var beforeValidationDate = DateTime.UtcNow.AddDays(-4).Date;

await organizationDomainRepository.CreateAsync(organizationDomain1);
var organization2 = await organizationRepository.CreateAsync(new Organization
{
Name = $"Test Org {id}",
BillingEmail = user1.Email,
Plan = "Test",
PrivateKey = "privatekey",

CreationDate = beforeValidationDate
});
var organizationDomain2 = new OrganizationDomain
{
OrganizationId = organization2.Id,
DomainName = $"domain2+{id}@example.com",
Txt = "btw+12345"
Txt = "btw+12345",
CreationDate = beforeValidationDate
};
organizationDomain2.SetNextRunDate(dummyInterval);
await organizationDomainRepository.CreateAsync(organizationDomain2);

// Act
Expand All @@ -69,7 +75,7 @@ public async Task GetExpiredOrganizationDomainsAsync_ShouldReturnExpiredOrganiza
}

[DatabaseTheory, DatabaseData]
public async Task GetExpiredOrganizationDomainsAsync_ShouldReturnNotReturnDomainsPast72Hours(
public async Task GetExpiredOrganizationDomainsAsync_ShouldNotReturnDomainsUnder3DaysOld(
IUserRepository userRepository,
IOrganizationRepository organizationRepository,
IOrganizationDomainRepository organizationDomainRepository)
Expand All @@ -94,14 +100,16 @@ public async Task GetExpiredOrganizationDomainsAsync_ShouldReturnNotReturnDomain

});

var pastDateForValidation = DateTime.UtcNow.AddDays(-6).Date;
var beforeValidationDate = DateTime.UtcNow.AddDays(-1).Date;
var organizationDomain = new OrganizationDomain
{
OrganizationId = organization.Id,
DomainName = $"domain{id}@example.com",
Txt = "btw+12345",
CreationDate = pastDateForValidation
CreationDate = beforeValidationDate
};
var dummyInterval = 1;
organizationDomain.SetNextRunDate(dummyInterval);
await organizationDomainRepository.CreateAsync(organizationDomain);

// Act
Expand All @@ -112,7 +120,6 @@ public async Task GetExpiredOrganizationDomainsAsync_ShouldReturnNotReturnDomain
Assert.Null(expectedDomain2);
}


[DatabaseTheory, DatabaseData]
public async Task GetExpiredOrganizationDomainsAsync_ShouldNotReturnVerifiedDomains(
IUserRepository userRepository,
Expand Down Expand Up @@ -146,6 +153,9 @@ public async Task GetExpiredOrganizationDomainsAsync_ShouldNotReturnVerifiedDoma
Txt = "btw+12345"
};
organizationDomain1.SetVerifiedDate();
var dummyInterval = 1;

organizationDomain1.SetNextRunDate(dummyInterval);

await organizationDomainRepository.CreateAsync(organizationDomain1);

Expand All @@ -163,6 +173,7 @@ public async Task GetExpiredOrganizationDomainsAsync_ShouldNotReturnVerifiedDoma
DomainName = $"domain2+{id}@example.com",
Txt = "btw+12345"
};
organizationDomain2.SetNextRunDate(dummyInterval);
organizationDomain2.SetVerifiedDate();

await organizationDomainRepository.CreateAsync(organizationDomain2);
Expand Down

0 comments on commit d49ba8b

Please sign in to comment.