Пример #1
0
    protected virtual async Task SaveLogAsync(AuditLogInfo auditInfo)
    {
        using var uow = UnitOfWorkManager.Begin(true);
        await AuditLogRepository.InsertAsync(await Converter.ConvertAsync(auditInfo));

        await uow.CompleteAsync();
    }
Пример #2
0
        protected virtual async Task SaveLogAsync(AuditLogInfo auditInfo)
        {
            using (var uow = UnitOfWorkManager.Begin(true)) {
                await AuditLogRepository.InsertAsync(new AuditLog (GuidGenerator, auditInfo));

                await uow.SaveChangesAsync();
            }
        }
Пример #3
0
        public async Task GetSpecifiedEntityChangeListAsync()
        {
            // 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 deletedEntityChangeTime = new DateTime(2000, 05, 05, 05, 05, 05);
            var createdEntityChangeTime = new DateTime(2005, 05, 05, 05, 05, 05);
            var updatedEntityChangeTime = new DateTime(2010, 05, 05, 05, 05, 05);

            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      = "******",
                EntityChanges =
                {
                    new EntityChangeInfo
                    {
                        EntityId           = Guid.NewGuid().ToString(),
                        EntityTypeFullName = "Volo.Abp.AuditLogging.TestEntity_Deleted",
                        ChangeType         = EntityChangeType.Deleted,
                        ChangeTime         = deletedEntityChangeTime,
                        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_Created",
                        ChangeType         = EntityChangeType.Created,
                        ChangeTime         = createdEntityChangeTime,
                        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.BadGateway,
                EntityChanges  =
                {
                    new EntityChangeInfo
                    {
                        EntityId           = Guid.NewGuid().ToString(),
                        EntityTypeFullName = "Volo.Abp.AuditLogging.TestEntity_Updated",
                        ChangeType         = EntityChangeType.Updated,
                        ChangeTime         = updatedEntityChangeTime,
                        PropertyChanges    = new List <EntityPropertyChangeInfo>
                        {
                            new EntityPropertyChangeInfo
                            {
                                PropertyTypeFullName = typeof(string).FullName,
                                PropertyName         = "Name",
                                NewValue             = "New value",
                                OriginalValue        = null
                            }
                        }
                    }
                }
            };

            await AuditLogRepository.InsertAsync(new AuditLog(GuidGenerator, log1));

            await AuditLogRepository.InsertAsync(new AuditLog(GuidGenerator, log2));

            //Assert
            var entityChanges = await AuditLogRepository.GetEntityChangeListAsync(changeType : EntityChangeType.Created);

            entityChanges.ShouldNotBeNull();
            entityChanges.Count.ShouldBe(1);
        }
Пример #4
0
        public async Task GetAverageExecutionDurationPerDayAsync()
        {
            // 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 log1 = new AuditLogInfo
            {
                UserId               = userId,
                ImpersonatorUserId   = Guid.NewGuid(),
                ImpersonatorTenantId = Guid.NewGuid(),
                ExecutionTime        = DateTime.SpecifyKind(DateTime.Parse("2020-01-01 01:00:00"), DateTimeKind.Utc),
                ExecutionDuration    = 45,
                ClientIpAddress      = ipAddress,
                ClientName           = "MyDesktop",
                BrowserInfo          = "Chrome",
                Comments             = new List <string> {
                    firstComment, "Second Comment"
                },
                UserName      = "******",
                EntityChanges =
                {
                    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
                            }
                        }
                    },
                    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.SpecifyKind(DateTime.Parse("2020-01-01 03:00:00"), DateTimeKind.Utc),
                ExecutionDuration    = 55,
                ClientIpAddress      = ipAddress,
                ClientName           = "MyDesktop",
                BrowserInfo          = "Chrome",
                Comments             = new List <string> {
                    firstComment, "Second Comment"
                },
                HttpStatusCode = (int?)HttpStatusCode.BadGateway,
                EntityChanges  =
                {
                    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
                            }
                        }
                    }
                }
            };

            await AuditLogRepository.InsertAsync(new AuditLog(GuidGenerator, log1));

            await AuditLogRepository.InsertAsync(new AuditLog(GuidGenerator, log2));

            //Assert
            var date    = DateTime.Parse("2020-01-01");
            var results = await AuditLogRepository.GetAverageExecutionDurationPerDayAsync(date, date);

            results.Count.ShouldBe(1);
            results.Values.First().ShouldBe(50); // (45 + 55) / 2
        }
Пример #5
0
        public async Task GetListAsync()
        {
            // 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 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      = "******",
                EntityChanges =
                {
                    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
                            }
                        }
                    },
                    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.BadGateway,
                EntityChanges  =
                {
                    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
                            }
                        }
                    }
                }
            };

            await AuditLogRepository.InsertAsync(new AuditLog(GuidGenerator, log1)).ConfigureAwait(false);

            await AuditLogRepository.InsertAsync(new AuditLog(GuidGenerator, log2)).ConfigureAwait(false);

            //Assert
            var logs = await AuditLogRepository.GetListAsync().ConfigureAwait(false);

            logs.ShouldNotBeNull();
            logs.ShouldContain(x => x.UserId == userId);
            logs.ShouldContain(x => x.UserId == userId2);
        }
Пример #6
0
    public async Task GetEntityChangeWithUsernameAsync()
    {
        // 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 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      = "******",
            EntityChanges =
            {
                new EntityChangeInfo
                {
                    EntityId           = Guid.NewGuid().ToString(),
                    EntityTypeFullName = "Volo.Abp.AuditLogging.TestEntity_Deleted",
                    ChangeType         = EntityChangeType.Deleted,
                    ChangeTime         = new DateTime(1995, 3, 27),
                    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_Created",
                    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.BadGateway,
            UserName       = "******",
            EntityChanges  =
            {
                new EntityChangeInfo
                {
                    EntityId           = Guid.NewGuid().ToString(),
                    EntityTypeFullName = "Volo.Abp.AuditLogging.TestEntity_Updated",
                    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));

        var entityChanges = await AuditLogRepository.GetEntityChangeListAsync();

        var entityHistory =
            await AuditLogRepository.GetEntityChangeWithUsernameAsync(entityChanges.First().Id);

        entityHistory.EntityChange.ChangeTime.ShouldBe(entityChanges.First().ChangeTime);
        entityHistory.UserName.ShouldNotBeNull();
    }
Пример #7
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(new AuditLog(GuidGenerator, log1));

            await AuditLogRepository.InsertAsync(new AuditLog(GuidGenerator, 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);
        }