Пример #1
0
    public async Task Should_Save_An_Audit_Log()
    {
        //Arrange
        var userId       = new Guid("4456fb0d-74cc-4807-9eee-23e551e6cb06");
        var ipAddress    = "153.1.7.61";
        var firstComment = "first Comment";

        var auditLog = new AuditLogInfo
        {
            UserId                 = userId,
            ImpersonatorUserId     = Guid.NewGuid(),
            ImpersonatorTenantId   = Guid.NewGuid(),
            ImpersonatorTenantName = "default",
            ImpersonatorUserName   = "******",
            ExecutionTime          = DateTime.Today,
            ExecutionDuration      = 42,
            ClientIpAddress        = ipAddress,
            ClientName             = "MyDesktop",
            BrowserInfo            = "Chrome",
            Comments               = new List <string> {
                firstComment, "Second Comment"
            },
            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
                        }
                    }
                }
            }
        };

        //Act
        await _auditingStore.SaveAsync(auditLog);

        //Assert

        var insertedLog = (await _auditLogRepository.GetListAsync(true))
                          .FirstOrDefault(al => al.UserId == userId);

        insertedLog.ShouldNotBeNull();
        insertedLog.ClientIpAddress.ShouldBe(ipAddress);
        insertedLog.Comments.ShouldStartWith(firstComment);
        insertedLog.EntityChanges.Count.ShouldBeGreaterThan(0);
        insertedLog.EntityChanges.First().PropertyChanges.Count.ShouldBeGreaterThan(0);
    }
Пример #2
0
 /// <summary>
 ///     Should save audits to a persistent store.
 /// </summary>
 /// <param name="auditingStore">Auditing store</param>
 /// <param name="auditInfo">Audit informations</param>
 public static void Save <TTenantId, TUserId>(this IAuditingStore <TTenantId, TUserId> auditingStore,
                                              AuditInfo <TTenantId, TUserId> auditInfo)
     where TTenantId : struct
     where TUserId : struct
 {
     AsyncHelper.RunSync(() => auditingStore.SaveAsync(auditInfo));
 }
Пример #3
0
        public async Task SaveAsync(AuditInfo auditInfo)
        {
            using (var uow = _unitOfWorkManager.Begin())
            {
                await _auditingStore.SaveAsync(auditInfo);

                await uow.CompleteAsync();
            }
        }
Пример #4
0
        internal async Task SaveAsync(DisposableSaveHandle saveHandle)
        {
            BeforeSave(saveHandle);

            if (ShouldSave(saveHandle.Info))
            {
                await _auditingStore.SaveAsync(saveHandle.Info);
            }
        }
Пример #5
0
 /// <summary>
 /// Should save audits to a persistent store.
 /// </summary>
 /// <param name="auditingStore">Auditing store</param>
 /// <param name="auditInfo">Audit informations</param>
 public static void Save(this IAuditingStore auditingStore, AuditInfo auditInfo)
 {
     AsyncHelper.RunSync(() => auditingStore.SaveAsync(auditInfo));
 }