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.Test.Unit.Biz.TestData; using Strata.CoreLib.Claims.Extensions; using Strata.Testing.Categories; namespace Strata.Analytics.Test.Unit.Biz.Extracts { [NUnit.Framework.Category(TestCategory.Unit)] [Parallelizable(ParallelScope.Self)] public class ExtractCreateTest { [Test] public async Task Extract_CurrentUserAssignedAsEditor_GivenUserIsNotStrata() { // arrange var claimsPrincipal = IClaimsPrincipalAccessorMock.GetClaimsPrincipalAccessor(); var dbContext = AnalyticsDbContextMock.GetAnalyticsDbContext(claimsPrincipal); var extractService = new ExtractService(dbContext, claimsPrincipal, AutoMapperMock.GetAutoMapper()); // act var extract = await extractService.CreateAsync(new ExtractCreateInfo() { Name = "Extract1", Content = "{\"dataSourceId\":1,\"rows\":[],\"columnGroups\":[{\"groupId\":\"ABCD1\",\"values\":[],\"dimensions\":[],\"sortOrder\":0}],\"filters\":[],\"queryConfig\":{\"rows\":[],\"values\":[],\"filterGroups\":[],\"withTotals\":false,\"rowLimit\":25}}" }, CancellationToken.None); // assert extract.CreatedByUserGuid.Should().Be(claimsPrincipal.GetUserGuid()); extract.CurrentUserRole.Should().Be(ExtractRole.Editor); dbContext.ExtractRoleAssignments.Should().HaveCount(1); dbContext.ExtractRoleAssignments.FirstOrDefault().IdentityGuid.Should().Be(claimsPrincipal.GetUserGuid()); dbContext.ExtractRoleAssignments.FirstOrDefault().Role.Should().Be(ExtractRole.Editor); } [Test] public async Task Extract_CurrentUserAssignedAsEditorButNoRoleAssignmentsCreated_GivenUserIsStrata() { // arrange var claimsPrincipal = IClaimsPrincipalAccessorMock.GetClaimsPrincipalAccessor(5, true); var dbContext = AnalyticsDbContextMock.GetAnalyticsDbContext(claimsPrincipal); var extractService = new ExtractService(dbContext, claimsPrincipal, AutoMapperMock.GetAutoMapper()); // act var extract = await extractService.CreateAsync(new ExtractCreateInfo() { Name = "Extract1", Content = "{\"dataSourceId\":1,\"rows\":[],\"columnGroups\":[{\"groupId\":\"ABCD1\",\"values\":[],\"dimensions\":[],\"sortOrder\":0}],\"filters\":[],\"queryConfig\":{\"rows\":[],\"values\":[],\"filterGroups\":[],\"withTotals\":false,\"rowLimit\":25}}" }, CancellationToken.None); // assert extract.CreatedByUserGuid.Should().Be(claimsPrincipal.GetUserGuid()); extract.CurrentUserRole.Should().Be(ExtractRole.Editor); dbContext.ExtractRoleAssignments.Should().HaveCount(0); } } }