109 lines
5.1 KiB
C#
109 lines
5.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using FluentAssertions;
|
|
using NUnit.Framework;
|
|
using Strata.Analytics.Biz.Extracts.Models;
|
|
using Strata.Analytics.Biz.Extracts.Services;
|
|
using Strata.Analytics.Models.Security;
|
|
using Strata.Analytics.Models.Utils;
|
|
using Strata.Analytics.Test.Unit.Biz.TestData;
|
|
using Strata.Testing.Categories;
|
|
|
|
namespace Strata.Analytics.Test.Unit.Biz.Extracts
|
|
{
|
|
[NUnit.Framework.Category(TestCategory.Unit)]
|
|
[Parallelizable(ParallelScope.Self)]
|
|
public class ExtractRoleAssignmentTest
|
|
{
|
|
|
|
[Test]
|
|
public async Task ExtractRoleAssignment_Created_GivenRoleAssignmentWithIdentityIsNotAlreadyInDatabase()
|
|
{
|
|
// arrange
|
|
var claimsPrincipal = IClaimsPrincipalAccessorMock.GetClaimsPrincipalAccessor();
|
|
var dbContext = AnalyticsDbContextMock.GetAnalyticsDbContext(claimsPrincipal);
|
|
var extractService = new ExtractService(dbContext, claimsPrincipal, AutoMapperMock.GetAutoMapper());
|
|
|
|
var batch = new Batch<ExtractRoleAssignmentSaveInfo, Guid>()
|
|
{
|
|
Updates = new List<ExtractRoleAssignmentSaveInfo>()
|
|
{
|
|
new ExtractRoleAssignmentSaveInfo() { IdentityGuid = Guid.NewGuid(), IdentityName="Admin", IdentityType=IdentityType.User, Role=ExtractRole.Editor}
|
|
}
|
|
};
|
|
|
|
// act
|
|
await extractService.SaveRoleAssignmentsAsync(5, batch, CancellationToken.None);
|
|
|
|
// assert
|
|
dbContext.ExtractRoleAssignments.Should().HaveCount(1);
|
|
dbContext.ExtractRoleAssignments.FirstOrDefault().ExtractId.Should().Be(5);
|
|
dbContext.ExtractRoleAssignments.FirstOrDefault().IdentityGuid.Should().Be(batch.Updates.First().IdentityGuid);
|
|
dbContext.ExtractRoleAssignments.FirstOrDefault().IdentityName.Should().Be(batch.Updates.First().IdentityName);
|
|
dbContext.ExtractRoleAssignments.FirstOrDefault().Role.Should().Be(batch.Updates.First().Role);
|
|
}
|
|
|
|
[Test]
|
|
public async Task ExtractRoleAssignment_Updated_GivenRoleAssignmentWithIdentityIsAlreadyInDatabase()
|
|
{
|
|
// arrange
|
|
var strataId = 5;
|
|
var claimsPrincipal = IClaimsPrincipalAccessorMock.GetClaimsPrincipalAccessor(strataId);
|
|
var dbContext = AnalyticsDbContextMock.GetAnalyticsDbContext(claimsPrincipal);
|
|
var extractService = new ExtractService(dbContext, claimsPrincipal, AutoMapperMock.GetAutoMapper());
|
|
|
|
var existingRoleAssigment = new ExtractRoleAssignment() { StrataId = strataId, ExtractId = 5, IdentityGuid = Guid.NewGuid(), IdentityName = "Admin", IdentityType = IdentityType.User, Role = ExtractRole.Viewer };
|
|
dbContext.ExtractRoleAssignments.Add(existingRoleAssigment);
|
|
await dbContext.SaveChangesAsync();
|
|
|
|
// change role to Editor
|
|
var batch = new Batch<ExtractRoleAssignmentSaveInfo, Guid>()
|
|
{
|
|
Updates = new List<ExtractRoleAssignmentSaveInfo>()
|
|
{
|
|
new ExtractRoleAssignmentSaveInfo() { IdentityGuid = existingRoleAssigment.IdentityGuid, IdentityName="Admin", IdentityType=IdentityType.User, Role=ExtractRole.Editor}
|
|
}
|
|
};
|
|
|
|
// act
|
|
await extractService.SaveRoleAssignmentsAsync(5, batch, CancellationToken.None);
|
|
|
|
// assert
|
|
dbContext.ExtractRoleAssignments.Should().HaveCount(1);
|
|
dbContext.ExtractRoleAssignments.FirstOrDefault().ExtractId.Should().Be(5);
|
|
dbContext.ExtractRoleAssignments.FirstOrDefault().IdentityGuid.Should().Be(batch.Updates.First().IdentityGuid);
|
|
dbContext.ExtractRoleAssignments.FirstOrDefault().IdentityName.Should().Be(batch.Updates.First().IdentityName);
|
|
dbContext.ExtractRoleAssignments.FirstOrDefault().Role.Should().Be(batch.Updates.First().Role);
|
|
}
|
|
|
|
[Test]
|
|
public async Task ExtractRoleAssignment_Deleted_GivenIdentityGuidIsPartOfBatchDeletes()
|
|
{
|
|
// arrange
|
|
var strataId = 5;
|
|
var claimsPrincipal = IClaimsPrincipalAccessorMock.GetClaimsPrincipalAccessor(strataId);
|
|
var dbContext = AnalyticsDbContextMock.GetAnalyticsDbContext(claimsPrincipal);
|
|
var extractService = new ExtractService(dbContext, claimsPrincipal, AutoMapperMock.GetAutoMapper());
|
|
|
|
var existingRoleAssigment = new ExtractRoleAssignment() { StrataId = strataId, ExtractId = 5, IdentityGuid = Guid.NewGuid(), IdentityName = "Admin", IdentityType = IdentityType.User, Role = ExtractRole.Editor };
|
|
dbContext.ExtractRoleAssignments.Add(existingRoleAssigment);
|
|
await dbContext.SaveChangesAsync();
|
|
|
|
var batch = new Batch<ExtractRoleAssignmentSaveInfo, Guid>()
|
|
{
|
|
Deletes = new List<Guid>() { existingRoleAssigment.IdentityGuid }
|
|
};
|
|
|
|
// act
|
|
await extractService.SaveRoleAssignmentsAsync(5, batch, CancellationToken.None);
|
|
|
|
// assert
|
|
dbContext.ExtractRoleAssignments.Should().HaveCount(0);
|
|
}
|
|
|
|
}
|
|
}
|