Skip to content

Commit

Permalink
SqaleAuditService#audit() ignores provided ID and returns assigned by DB
Browse files Browse the repository at this point in the history
Tests of simple + reused audit ID were added to SqaleRepoSmokeTest.
  • Loading branch information
virgo47 committed Dec 6, 2021
1 parent 2e99dc7 commit 3dd15b5
Show file tree
Hide file tree
Showing 7 changed files with 43 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ private void executeAudit(AuditEventRecord record) {
long opHandle = registerOperationStart(OP_AUDIT);
try (JdbcSession jdbcSession = sqlRepoContext.newJdbcSession().startTransaction()) {
MAuditEventRecord auditRow = insertAuditEventRecord(jdbcSession, record);
record.setRepoId(auditRow.id);

insertAuditDeltas(jdbcSession, auditRow);
insertReferences(jdbcSession, auditRow, record.getReferences());
Expand Down Expand Up @@ -146,6 +147,7 @@ private MAuditEventRecord insertAuditEventRecord(JdbcSession jdbcSession, AuditE
Set<String> changedItemPaths = collectChangedItemPaths(deltaRows);
row.changedItemPaths = changedItemPaths.isEmpty() ? null : changedItemPaths.toArray(String[]::new);

row.id = null; // We must not provide ID, it is ALWAYS GENERATED in DB, so it would fail.
SQLInsertClause insert = jdbcSession.newInsert(aer).populate(row);
Map<String, ColumnMetadata> customColumns = aerMapping.getExtensionColumns();
for (Map.Entry<String, String> property : record.getCustomColumnProperty().entrySet()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import org.springframework.test.context.ContextConfiguration;
import org.testng.annotations.BeforeClass;

import com.evolveum.midpoint.audit.api.AuditService;
import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.path.ItemName;
import com.evolveum.midpoint.prism.query.ObjectFilter;
Expand Down Expand Up @@ -73,6 +74,8 @@ public class SqaleRepoBaseTest extends AbstractSpringTest
@Autowired protected PrismContext prismContext;
@Autowired protected RelationRegistry relationRegistry;

@Autowired protected AuditService auditService;

protected SqlRecorder queryRecorder;

@BeforeClass
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,9 @@
import java.util.UUID;

import com.querydsl.core.types.dsl.NumberExpression;
import org.springframework.beans.factory.annotation.Autowired;
import org.testng.annotations.Test;

import com.evolveum.midpoint.audit.api.AuditEventRecord;
import com.evolveum.midpoint.audit.api.AuditService;
import com.evolveum.midpoint.prism.polystring.PolyString;
import com.evolveum.midpoint.prism.xml.XmlTypeConverter;
import com.evolveum.midpoint.repo.sqale.SqaleRepoBaseTest;
Expand All @@ -38,8 +36,6 @@
@SuppressWarnings("unchecked")
public class AuditCleanupTest extends SqaleRepoBaseTest {

@Autowired private AuditService auditService;

/**
* Prepares `count` audit records with timestamp starting with specified value
* and going up by second for each item.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,10 @@
import org.assertj.core.api.InstanceOfAssertFactory;
import org.assertj.core.api.ListAssert;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.testng.annotations.AfterClass;
import org.testng.annotations.Test;

import com.evolveum.midpoint.audit.api.AuditEventRecord;
import com.evolveum.midpoint.audit.api.AuditService;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.repo.sqale.SqaleRepoBaseTest;
import com.evolveum.midpoint.repo.sqale.audit.qmodel.*;
Expand All @@ -37,8 +35,6 @@
*/
public class AuditDeltaOperationResultTest extends SqaleRepoBaseTest {

@Autowired private AuditService auditService;

@AfterClass
public void resetAuditConfig() {
// Without this other audit tests would have to care.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,12 @@
import java.util.stream.Collectors;

import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import com.evolveum.midpoint.audit.api.AuditEventRecord;
import com.evolveum.midpoint.audit.api.AuditEventStage;
import com.evolveum.midpoint.audit.api.AuditEventType;
import com.evolveum.midpoint.audit.api.AuditService;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.polystring.PolyString;
Expand Down Expand Up @@ -61,8 +59,6 @@ public class AuditSearchTest extends SqaleRepoBaseTest {
public static final long TIMESTAMP_3 = 1583020800000L; // 2020-03-01
public static final long TIMESTAMP_4 = 1600000000000L; // 2020-04...

@Autowired private AuditService auditService;

private String initiatorOid;
private String attorneyOid;
private String targetOid;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
import java.util.Random;
import java.util.function.Predicate;

import org.springframework.beans.factory.annotation.Autowired;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
Expand Down Expand Up @@ -50,8 +49,6 @@ public class SqaleAuditSearchIterativeTest extends SqaleRepoBaseTest {
// default page size for iterative search, reset before each test
private static final int ITERATION_PAGE_SIZE = 100;

@Autowired private AuditService auditService;

private final long startTimestamp = System.currentTimeMillis();

private SqaleAuditService sqaleAuditService;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@
import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;

import com.evolveum.midpoint.audit.api.AuditEventRecord;
import com.evolveum.midpoint.audit.api.AuditEventStage;
import com.evolveum.midpoint.audit.api.AuditEventType;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.xml.XmlTypeConverter;
import com.evolveum.midpoint.repo.api.DeleteObjectResult;
Expand All @@ -41,6 +44,7 @@
import com.evolveum.midpoint.schema.*;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.test.NullTaskImpl;
import com.evolveum.midpoint.util.exception.ObjectAlreadyExistsException;
import com.evolveum.midpoint.util.exception.ObjectNotFoundException;
import com.evolveum.midpoint.util.exception.SchemaException;
Expand Down Expand Up @@ -505,6 +509,40 @@ public void test501ExecuteQueryDiagnosticsTranslateOnly() {
assertThat(queryRecorder.getQueryBuffer()).isEmpty();
}

@Test
public void test600AuditRecord() {
given("audit event record");
AuditEventRecord record = new AuditEventRecord(AuditEventType.ADD_OBJECT, AuditEventStage.EXECUTION);
OperationResult result = createOperationResult();

when("saving the event record");
auditService.audit(record, NullTaskImpl.INSTANCE, result);

then("operation is success and record ID is assigned");
assertThatOperationResult(result).isSuccess();
assertThat(record.getRepoId()).isNotNull();
}

@Test
public void test601AuditRecordIgnoresProvidedId() {
given("audit event record with assigned already taken ID");
AuditEventRecord record = new AuditEventRecord(AuditEventType.ADD_OBJECT, AuditEventStage.EXECUTION);
OperationResult result = createOperationResult();
auditService.audit(record, NullTaskImpl.INSTANCE, result);
Long takenId = record.getRepoId();

record = new AuditEventRecord(AuditEventType.MODIFY_OBJECT, AuditEventStage.EXECUTION);
record.setRepoId(takenId);

when("saving the event record with taken ID");
auditService.audit(record, NullTaskImpl.INSTANCE, result);

then("operation is success and new record ID is assigned (provided ID is ignored)");
assertThatOperationResult(result).isSuccess();
assertThat(record.getRepoId()).isNotNull()
.isNotEqualTo(takenId);
}

// region low-level tests

/** This tests our type mapper/converter classes and related column mapping. */
Expand Down

0 comments on commit 3dd15b5

Please sign in to comment.