From e8de670aab67ed49559837678e7eff5a1eababae Mon Sep 17 00:00:00 2001 From: Richard Richter Date: Mon, 22 Jun 2020 18:53:24 +0200 Subject: [PATCH] MID-6319: AuditSearchTest skeleton + changes of new AuditService methods --- .../midpoint/audit/api/AuditService.java | 6 +- .../audit/impl/LoggerAuditServiceImpl.java | 6 +- .../midpoint/repo/sql/AuditSearchTest.java | 59 +++++++++++++++++++ .../repo/sql/SqlAuditServiceImpl.java | 9 +-- .../midpoint/test/DummyAuditService.java | 7 +-- .../midpoint/init/AuditServiceProxy.java | 19 +++--- 6 files changed, 79 insertions(+), 27 deletions(-) create mode 100644 repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/AuditSearchTest.java diff --git a/repo/audit-api/src/main/java/com/evolveum/midpoint/audit/api/AuditService.java b/repo/audit-api/src/main/java/com/evolveum/midpoint/audit/api/AuditService.java index 1fd8dbf45f1..e3611c16b33 100644 --- a/repo/audit-api/src/main/java/com/evolveum/midpoint/audit/api/AuditService.java +++ b/repo/audit-api/src/main/java/com/evolveum/midpoint/audit/api/AuditService.java @@ -73,14 +73,12 @@ default void applyAuditConfiguration(SystemConfigurationAuditType configuration) // TODO MID-6319 cleanup after done // see com.evolveum.midpoint.repo.api.RepositoryService.countObjects for javadoc and rephrase it here - long countObjects( - Class type, ObjectQuery query, + long countObjects(ObjectQuery query, Collection> options, OperationResult parentResult) throws SchemaException; @NotNull - SearchResultList> searchObjects( - Class type, ObjectQuery query, + SearchResultList searchObjects(ObjectQuery query, Collection> options, OperationResult parentResult) throws SchemaException; } diff --git a/repo/audit-impl/src/main/java/com/evolveum/midpoint/audit/impl/LoggerAuditServiceImpl.java b/repo/audit-impl/src/main/java/com/evolveum/midpoint/audit/impl/LoggerAuditServiceImpl.java index 5f6500ff19c..39a57da9655 100644 --- a/repo/audit-impl/src/main/java/com/evolveum/midpoint/audit/impl/LoggerAuditServiceImpl.java +++ b/repo/audit-impl/src/main/java/com/evolveum/midpoint/audit/impl/LoggerAuditServiceImpl.java @@ -186,16 +186,14 @@ public void reindexEntry(AuditEventRecord record) { } @Override - public long countObjects( - Class type, ObjectQuery query, + public long countObjects(ObjectQuery query, Collection> options, OperationResult parentResult) { throw new UnsupportedOperationException("countObjects not supported"); } @Override @NotNull - public SearchResultList> searchObjects( - Class type, ObjectQuery query, + public SearchResultList searchObjects(ObjectQuery query, Collection> options, OperationResult parentResult) { throw new UnsupportedOperationException("searchObjects not supported"); } diff --git a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/AuditSearchTest.java b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/AuditSearchTest.java new file mode 100644 index 00000000000..b94e6c08df5 --- /dev/null +++ b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/AuditSearchTest.java @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2010-2017 Evolveum and contributors + * + * This work is dual-licensed under the Apache License 2.0 + * and European Union Public License. See LICENSE file for details. + */ + +package com.evolveum.midpoint.repo.sql; + +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ContextConfiguration; +import org.testng.annotations.Test; + +import com.evolveum.midpoint.audit.api.AuditEventRecord; +import com.evolveum.midpoint.prism.query.ObjectQuery; +import com.evolveum.midpoint.schema.SearchResultList; +import com.evolveum.midpoint.tools.testng.UnusedTestElement; +import com.evolveum.midpoint.util.exception.SchemaException; +import com.evolveum.midpoint.xml.ns._public.common.audit_3.AuditEventRecordType; +import com.evolveum.midpoint.xml.ns._public.common.audit_3.AuditEventTypeType; + +// TODO MID-6319 - finish and add to test suite +@UnusedTestElement +@ContextConfiguration(locations = { "../../../../../ctx-test.xml" }) +@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS) +public class AuditSearchTest extends BaseSQLRepoTest { + + @Override + public void initSystem() throws Exception { + // TODO add some sample audits here + } + + @Test + public void test100SearchAllAuditEvents() throws SchemaException { + when("Searching audit with query without any conditions"); + ObjectQuery query = prismContext.queryFor(AuditEventRecordType.class).build(); + SearchResultList prismObjects = + auditService.searchObjects(query, null, null); + + then("All audit events are returned"); + System.out.println("prismObjects = " + prismObjects); + // TODO + } + + @Test + public void test110SearchAllAuditEventsOfSomeType() throws SchemaException { + when("searching audit filtered by event type"); + ObjectQuery query = prismContext.queryFor(AuditEventRecordType.class) + .item(AuditEventRecordType.F_EVENT_TYPE).eq(AuditEventTypeType.ADD_OBJECT) + .build(); + SearchResultList prismObjects = + auditService.searchObjects(query, null, null); + + then("only audit events of a particular type are returned"); + System.out.println("prismObjects = " + prismObjects); + // TODO + } +} + diff --git a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SqlAuditServiceImpl.java b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SqlAuditServiceImpl.java index a144e0f48cf..e7bc29bba67 100644 --- a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SqlAuditServiceImpl.java +++ b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SqlAuditServiceImpl.java @@ -903,17 +903,18 @@ public void applyAuditConfiguration(SystemConfigurationAuditType configuration) } @Override - public long countObjects( - Class type, ObjectQuery query, + public long countObjects(ObjectQuery query, Collection> options, OperationResult parentResult) { + // TODO MID-6319 return 0; } @Override @NotNull - public SearchResultList> searchObjects( - Class type, ObjectQuery query, + public SearchResultList searchObjects( + ObjectQuery query, Collection> options, OperationResult parentResult) { + // TODO MID-6319 return new SearchResultList<>(); } } diff --git a/repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/DummyAuditService.java b/repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/DummyAuditService.java index 15703ebd2c6..b6feb07dd9d 100644 --- a/repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/DummyAuditService.java +++ b/repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/DummyAuditService.java @@ -17,7 +17,6 @@ import org.jetbrains.annotations.NotNull; import com.evolveum.midpoint.audit.api.*; -import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.PrismPropertyValue; import com.evolveum.midpoint.prism.PrismReferenceValue; import com.evolveum.midpoint.prism.delta.ChangeType; @@ -539,16 +538,14 @@ public void setEnabled(boolean enabled) { } @Override - public long countObjects( - Class type, ObjectQuery query, + public long countObjects(ObjectQuery query, Collection> options, OperationResult parentResult) { throw new UnsupportedOperationException("countObjects not supported"); } @Override @NotNull - public SearchResultList> searchObjects( - Class type, ObjectQuery query, + public SearchResultList searchObjects(ObjectQuery query, Collection> options, OperationResult parentResult) { throw new UnsupportedOperationException("searchObjects not supported"); } diff --git a/repo/system-init/src/main/java/com/evolveum/midpoint/init/AuditServiceProxy.java b/repo/system-init/src/main/java/com/evolveum/midpoint/init/AuditServiceProxy.java index 37c79f805ea..dc4ac7e6a2d 100644 --- a/repo/system-init/src/main/java/com/evolveum/midpoint/init/AuditServiceProxy.java +++ b/repo/system-init/src/main/java/com/evolveum/midpoint/init/AuditServiceProxy.java @@ -78,7 +78,7 @@ public void audit(AuditEventRecord record, Task task) { return; } - assertCorrectness(record, task); + assertCorrectness(task); completeRecord(record, task); for (AuditService service : services) { @@ -112,7 +112,7 @@ public void unregisterService(AuditService service) { services.remove(service); } - private void assertCorrectness(AuditEventRecord record, Task task) { + private void assertCorrectness(Task task) { if (task == null) { LOGGER.warn("Task is null in a call to audit service"); } @@ -261,13 +261,13 @@ public void applyAuditConfiguration(SystemConfigurationAuditType configuration) } @Override - public long countObjects(Class type, ObjectQuery query, + public long countObjects(ObjectQuery query, Collection> options, OperationResult parentResult) throws SchemaException { long count = 0; for (AuditService service : services) { if (service.supportsRetrieval()) { - long c = service.countObjects(type, query, options, parentResult); + long c = service.countObjects(query, options, parentResult); count += c; } } @@ -276,16 +276,15 @@ public long countObjects(Class type, ObjectQuery query @Override @NotNull - public SearchResultList> searchObjects( - Class type, ObjectQuery query, + public SearchResultList searchObjects(ObjectQuery query, Collection> options, OperationResult parentResult) throws SchemaException { - // TODO: MID-6319 - does it even make sense? - SearchResultList> result = new SearchResultList<>(); + // TODO: MID-6319 - does it even make sense to merge multiple results for audit? + SearchResultList result = new SearchResultList<>(); for (AuditService service : services) { if (service.supportsRetrieval()) { - SearchResultList> oneResult = - service.searchObjects(type, query, options, parentResult); + SearchResultList oneResult = + service.searchObjects(query, options, parentResult); if (!oneResult.isEmpty()) { result.addAll(oneResult); }