Ejemplo n.º 1
0
    public async Task GetEntityChangesWithUsernameAsync()
    {
        // Arrange
        var userId       = new Guid("4456fb0d-74cc-4807-9eee-23e551e6cb06");
        var userId2      = new Guid("4456fb0d-74cc-4807-9eee-23e551e6cb06");
        var ipAddress    = "153.1.7.61";
        var firstComment = "first Comment";

        var firstUser  = "******";
        var secondUser = "******";

        var entityId   = Guid.NewGuid().ToString();
        var entityType = "Volo.Abp.AuditLogging.TestEntity";

        var log1 = new AuditLogInfo
        {
            UserId               = userId,
            ImpersonatorUserId   = Guid.NewGuid(),
            ImpersonatorTenantId = Guid.NewGuid(),
            ExecutionTime        = DateTime.Today,
            ExecutionDuration    = 42,
            ClientIpAddress      = ipAddress,
            ClientName           = "MyDesktop",
            BrowserInfo          = "Chrome",
            Comments             = new List <string> {
                firstComment, "Second Comment"
            },
            UserName      = firstUser,
            EntityChanges =
            {
                new EntityChangeInfo
                {
                    EntityId           = entityId,
                    EntityTypeFullName = entityType,
                    ChangeType         = EntityChangeType.Created,
                    ChangeTime         = DateTime.Now,
                    PropertyChanges    = new List <EntityPropertyChangeInfo>
                    {
                        new EntityPropertyChangeInfo
                        {
                            PropertyTypeFullName = typeof(string).FullName,
                            PropertyName         = "Name",
                            NewValue             = "New value",
                            OriginalValue        = null
                        }
                    }
                },
                new EntityChangeInfo
                {
                    EntityId           = Guid.NewGuid().ToString(),
                    EntityTypeFullName = "Volo.Abp.AuditLogging.TestEntity",
                    ChangeType         = EntityChangeType.Created,
                    ChangeTime         = DateTime.Now,
                    PropertyChanges    = new List <EntityPropertyChangeInfo>
                    {
                        new EntityPropertyChangeInfo
                        {
                            PropertyTypeFullName = typeof(string).FullName,
                            PropertyName         = "Name",
                            NewValue             = "New value",
                            OriginalValue        = null
                        }
                    }
                }
            }
        };

        var log2 = new AuditLogInfo
        {
            UserId               = userId2,
            ImpersonatorUserId   = Guid.NewGuid(),
            ImpersonatorTenantId = Guid.NewGuid(),
            ExecutionTime        = DateTime.Today,
            ExecutionDuration    = 42,
            ClientIpAddress      = ipAddress,
            ClientName           = "MyDesktop",
            BrowserInfo          = "Chrome",
            Comments             = new List <string> {
                firstComment, "Second Comment"
            },
            HttpStatusCode = (int?)HttpStatusCode.Accepted,
            UserName       = secondUser,
            EntityChanges  =
            {
                new EntityChangeInfo
                {
                    EntityId           = entityId,
                    EntityTypeFullName = entityType,
                    ChangeType         = EntityChangeType.Updated,
                    ChangeTime         = DateTime.Now,
                    PropertyChanges    = new List <EntityPropertyChangeInfo>
                    {
                        new EntityPropertyChangeInfo
                        {
                            PropertyTypeFullName = typeof(string).FullName,
                            PropertyName         = "Name",
                            NewValue             = "New value",
                            OriginalValue        = null
                        }
                    }
                }
            }
        };

        await AuditLogRepository.InsertAsync(await AuditLogInfoToAuditLogConverter.ConvertAsync(log1));

        await AuditLogRepository.InsertAsync(await AuditLogInfoToAuditLogConverter.ConvertAsync(log2));

        //Assert
        var entityHistory = await AuditLogRepository.GetEntityChangesWithUsernameAsync(entityId, entityType);

        entityHistory.Count.ShouldBe(2);
        var firstUserChange = entityHistory.First(x => x.UserName == firstUser);

        firstUserChange.ShouldNotBeNull();
        firstUserChange.EntityChange.ShouldNotBeNull();
        firstUserChange.EntityChange.ChangeType.ShouldBe(EntityChangeType.Created);

        var secondUserChange = entityHistory.First(x => x.UserName == secondUser);

        secondUserChange.ShouldNotBeNull();
        secondUserChange.EntityChange.ShouldNotBeNull();
        secondUserChange.EntityChange.ChangeType.ShouldBe(EntityChangeType.Updated);
    }