Использовать каталог AuditFields в тестах
ci / build-test (pull_request) Successful in 2m59s

This commit is contained in:
2026-09-13 20:32:24 +03:00
parent 71bbdd4dd5
commit 8dde35de49
9 changed files with 22 additions and 22 deletions
@@ -76,11 +76,11 @@ public sealed class AuditRecordDtoExtensionsTests
[Fact]
public void DetailValue_ReturnsToThenFrom()
{
var setRecord = Record(AuditService.ToDetailJson([AuditDetails.Set("login", "admin")]));
var changeRecord = Record(AuditService.ToDetailJson([AuditDetails.Change("login", "old", "new")]));
var setRecord = Record(AuditService.ToDetailJson([AuditDetails.Set(AuditFields.Login, "admin")]));
var changeRecord = Record(AuditService.ToDetailJson([AuditDetails.Change(AuditFields.Login, "old", "new")]));
Assert.Equal("admin", setRecord.DetailValue("login"));
Assert.Equal("new", changeRecord.DetailValue("login"));
Assert.Equal("admin", setRecord.DetailValue(AuditFields.Login));
Assert.Equal("new", changeRecord.DetailValue(AuditFields.Login));
Assert.Null(setRecord.DetailValue("missing"));
}
@@ -111,7 +111,7 @@ public sealed class AuditServiceTests
[Fact]
public void ToDetailJson_SerializesChangeFields()
{
string json = AuditService.ToDetailJson([AuditDetails.Set("login", "Admin")]);
string json = AuditService.ToDetailJson([AuditDetails.Set(AuditFields.Login, "Admin")]);
Assert.Contains("\"field\":\"login\"", json);
Assert.Contains("\"to\":\"Admin\"", json);
@@ -96,7 +96,7 @@ public sealed class SuspiciousActivityServiceTests
ActorId: actor,
TenantId: Tenant,
Ip: $"10.1.0.{i + 1}",
DetailJson: AuditService.ToDetailJson([AuditDetails.Set("login", "user")]),
DetailJson: AuditService.ToDetailJson([AuditDetails.Set(AuditFields.Login, "user")]),
At: Now.AddMinutes(-i)),
CancellationToken.None);
}
@@ -124,7 +124,7 @@ public sealed class SuspiciousActivityServiceTests
ActorId: null,
TenantId: Tenant,
Ip: $"10.2.0.{i + 1}",
DetailJson: AuditService.ToDetailJson([AuditDetails.Set("login", $"user{i}")]),
DetailJson: AuditService.ToDetailJson([AuditDetails.Set(AuditFields.Login, $"user{i}")]),
At: Now.AddMinutes(-i)),
CancellationToken.None);
}
@@ -252,7 +252,7 @@ public sealed class SuspiciousActivityServiceTests
ActorId: null,
TenantId: null,
Ip: ip,
DetailJson: AuditService.ToDetailJson([AuditDetails.Set("login", login)]),
DetailJson: AuditService.ToDetailJson([AuditDetails.Set(AuditFields.Login, login)]),
At: Now.AddMinutes(-minutesAgo)),
CancellationToken.None);
}
@@ -271,7 +271,7 @@ public sealed class SuspiciousActivityServiceTests
ActorId: null,
TenantId: null,
Ip: ip,
DetailJson: AuditService.ToDetailJson([AuditDetails.Set("login", login)]),
DetailJson: AuditService.ToDetailJson([AuditDetails.Set(AuditFields.Login, login)]),
At: Now.AddMinutes(-minutesAgo)),
CancellationToken.None);
}
@@ -307,8 +307,8 @@ public sealed class JoinEndpointHttpTests
string code)
{
Assert.NotNull(record.DetailJson);
Assert.Equal(email, record.DetailValue("email"));
Assert.Equal(SessionTokens.HashToken(code), record.DetailValue("codeHash"));
Assert.Equal(email, record.DetailValue(AuditFields.Email));
Assert.Equal(SessionTokens.HashToken(code), record.DetailValue(AuditFields.CodeHash));
}
@@ -93,7 +93,7 @@ public sealed class OperatorAnalyticsEndpointsHttpTests
ActorId: null,
TenantId: ActiveTenant,
Ip: "10.9.0.1",
DetailJson: AuditService.ToDetailJson([AuditDetails.Set("login", "brute")]),
DetailJson: AuditService.ToDetailJson([AuditDetails.Set(AuditFields.Login, "brute")]),
At: DateTimeOffset.UtcNow.AddMinutes(-i)),
CancellationToken.None);
}
@@ -290,7 +290,7 @@ public sealed class OperatorAuditEndpointsHttpTests
ActorId: Guid.NewGuid(),
TenantId: tenantId,
Ip: null,
DetailJson: AuditService.ToDetailJson([AuditDetails.Change("status", "active", "suspended")]),
DetailJson: AuditService.ToDetailJson([AuditDetails.Change(AuditFields.Status, "active", "suspended")]),
At: DateTimeOffset.UtcNow),
CancellationToken.None);
@@ -247,8 +247,8 @@ public sealed class OperatorInvitesEndpointsHttpTests
string code)
{
Assert.NotNull(record.DetailJson);
Assert.Equal(email, record.DetailValue("email"));
Assert.Equal(SessionTokens.HashToken(code), record.DetailValue("codeHash"));
Assert.Equal(email, record.DetailValue(AuditFields.Email));
Assert.Equal(SessionTokens.HashToken(code), record.DetailValue(AuditFields.CodeHash));
}
// Логинит оператора (ожидается 200).
@@ -89,8 +89,8 @@ public sealed class OperatorSettingsEndpointsHttpTests
Assert.Null(record.TenantId);
Assert.NotNull(record.DetailJson);
Assert.DoesNotContain("abcdefghijklmnop", record.DetailJson);
Assert.Equal("1234567", record.DetailValue("apiId"));
Assert.Equal("true", record.DetailValue("apiHashSet"));
Assert.Equal("1234567", record.DetailValue(AuditFields.ApiId));
Assert.Equal("true", record.DetailValue(AuditFields.ApiHashSet));
},
auditStore);
}
@@ -126,7 +126,7 @@ public sealed class OperatorTenantsEndpointsHttpTests
Assert.Equal(operatorStore.Operators.Single().Id, createdAudit.ActorId);
Assert.Equal(createdId, createdAudit.TenantId);
Assert.NotNull(createdAudit.DetailJson);
Assert.Equal(NewTenantName, createdAudit.DetailValue("name"));
Assert.Equal(NewTenantName, createdAudit.DetailValue(AuditFields.Name));
},
auditStore);
}
@@ -363,7 +363,7 @@ public sealed class OperatorTenantsEndpointsHttpTests
Assert.Equal(operatorStore.Operators.Single().Id, started.ActorId);
Assert.Equal(TenantId, started.TenantId);
Assert.NotNull(started.DetailJson);
Assert.Equal(TenantUserLogin, started.DetailValue("targetLogin"));
Assert.Equal(TenantUserLogin, started.DetailValue(AuditFields.TargetLogin));
HttpClient userClient = CreateClient(baseAddress);
using (HttpResponseMessage me = await GetWithTenantCookieAsync(userClient, baseAddress, sessionToken, "/api/auth/me"))
@@ -506,17 +506,17 @@ public sealed class OperatorTenantsEndpointsHttpTests
Assert.Equal(AuditActorTypes.Operator, record.ActorType);
Assert.Equal(operatorStore.Operators.Single().Id, record.ActorId);
Assert.Equal(TenantId, record.TenantId);
Assert.Equal(status, record.DetailValue("status"));
Assert.Equal(status, record.DetailValue(AuditFields.Status));
}
// Статус из деталей записи tenant_status_changed.
private static string? StatusOf(AuditRecordDto record) => record.DetailValue("status");
private static string? StatusOf(AuditRecordDto record) => record.DetailValue(AuditFields.Status);
// Проверяет детали записи аудита: параметр login.
private static void AssertDetailLogin(AuditRecordDto record, string login)
{
Assert.NotNull(record.DetailJson);
Assert.Equal(login, record.DetailValue("login"));
Assert.Equal(login, record.DetailValue(AuditFields.Login));
}
// GET с tenant-кукой deal_session=rawToken (impersonation-токен как значение куки).