Skip to content

Commit

Permalink
adding tests for html reports
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed May 26, 2020
1 parent 0c521b7 commit 6f8ab64
Show file tree
Hide file tree
Showing 14 changed files with 425 additions and 32 deletions.
Expand Up @@ -31,27 +31,27 @@ public class AbstractReportIntegrationTest extends AbstractModelIntegrationTest
protected final static File TEST_DIR_COMMON = new File("src/test/resources/common");
protected final static File EXPORT_DIR = new File("target/midpoint-home/export");

protected final static File TEST_REPOSTS_DIR = new File("src/test/resources/reports");
protected final static File TEST_REPORTS_DIR = new File("src/test/resources/reports");

protected final static File REPORT_USER_LIST_FILE = new File(TEST_REPOSTS_DIR, "report-user-list.xml");
protected final static File REPORT_USER_LIST_FILE = new File(TEST_REPORTS_DIR, "report-user-list.xml");
protected final static String REPORT_USER_LIST_OID = "00000000-0000-0000-0000-000000000110";

protected final static File REPORT_USER_LIST_EXPRESSIONS_CSV_FILE = new File(TEST_REPOSTS_DIR, "report-user-list-expressions-csv.xml");
protected final static File REPORT_USER_LIST_EXPRESSIONS_CSV_FILE = new File(TEST_REPORTS_DIR, "report-user-list-expressions-csv.xml");
protected final static String REPORT_USER_LIST_EXPRESSIONS_CSV_OID = "8fa48180-4f17-11e9-9eed-3fb4721a135e";

protected final static File REPORT_USER_LIST_EXPRESSIONS_POISONOUS_QUERY_CSV_FILE = new File(TEST_REPOSTS_DIR, "report-user-list-expressions-poisonous-query-csv.xml");
protected final static File REPORT_USER_LIST_EXPRESSIONS_POISONOUS_QUERY_CSV_FILE = new File(TEST_REPORTS_DIR, "report-user-list-expressions-poisonous-query-csv.xml");
protected final static String REPORT_USER_LIST_EXPRESSIONS_POISONOUS_QUERY_CSV_OID = "5c5af02a-4fe9-11e9-bb07-7b4e52fe05cd";

protected final static File REPORT_USER_LIST_EXPRESSIONS_POISONOUS_FIELD_CSV_FILE = new File(TEST_REPOSTS_DIR, "report-user-list-expressions-poisonous-field-csv.xml");
protected final static File REPORT_USER_LIST_EXPRESSIONS_POISONOUS_FIELD_CSV_FILE = new File(TEST_REPORTS_DIR, "report-user-list-expressions-poisonous-field-csv.xml");
protected final static String REPORT_USER_LIST_EXPRESSIONS_POISONOUS_FIELD_CSV_OID = "76c58132-4fe9-11e9-86fe-ff36d221f673";

protected final static File REPORT_USER_LIST_SCRIPT_FILE = new File(TEST_REPOSTS_DIR, "report-user-list-script.xml");
protected final static File REPORT_USER_LIST_SCRIPT_FILE = new File(TEST_REPORTS_DIR, "report-user-list-script.xml");
protected final static String REPORT_USER_LIST_SCRIPT_OID = "222bf2b8-c89b-11e7-bf36-ebd4e4d45a80";

protected final static File REPORT_AUDIT_CSV_FILE = new File(TEST_REPOSTS_DIR, "report-audit-csv.xml");
protected final static File REPORT_AUDIT_CSV_FILE = new File(TEST_REPORTS_DIR, "report-audit-csv.xml");
protected final static String REPORT_AUDIT_CSV_OID = "66dbbecc-a9fc-11e9-b75c-03927bebc9f7";

protected final static File REPORT_AUDIT_CSV_LEGACY_FILE = new File(TEST_REPOSTS_DIR, "report-audit-csv-legacy.xml");
protected final static File REPORT_AUDIT_CSV_LEGACY_FILE = new File(TEST_REPORTS_DIR, "report-audit-csv-legacy.xml");
protected final static String REPORT_AUDIT_CSV_LEGACY_OID = "78faa28c-a9ff-11e9-8c60-e7843d75831e";

protected final static File USER_JACK_FILE = new File(TEST_DIR_COMMON, "user-jack.xml");
Expand Down
Expand Up @@ -6,20 +6,15 @@
*/
package com.evolveum.midpoint.report;

import com.evolveum.icf.dummy.resource.DummyResource;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.schema.SearchResultList;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.test.DummyResourceContoller;
import com.evolveum.midpoint.test.util.TestUtil;
import com.evolveum.midpoint.util.exception.*;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;

import org.jetbrains.annotations.NotNull;
import org.testng.annotations.Test;

import java.io.File;
Expand All @@ -30,7 +25,6 @@
import java.util.Arrays;
import java.util.List;

import static org.testng.AssertJUnit.*;
import static org.testng.AssertJUnit.assertNotNull;

/**
Expand Down Expand Up @@ -91,26 +85,90 @@ public void initSystem(Task initTask, OperationResult initResult) throws Excepti
public void test001CreateDashboardReportWithDefaultColumn() throws Exception {
PrismObject<ReportType> report = getObject(ReportType.class, getDashboardReportWithDefaultColumnOid());
runReport(report, false);
checkHtmlOutputFile(report);
basicCheckOutputFile(report);
}

@Test
public void test002CreateDashboardReportWithView() throws Exception {
PrismObject<ReportType> report = getObject(ReportType.class, getDashboardReportWithViewOid());
runReport(report, false);
checkHtmlOutputFile(report);
basicCheckOutputFile(report);
}

@Test
public void test003CreateDashboardReportWithTripleView() throws Exception {
PrismObject<ReportType> report = getObject(ReportType.class, getDashboardReportWithTripleViewOid());
runReport(report, false);
checkHtmlOutputFile(report);
basicCheckOutputFile(report);
}

@Test
public void test010CreateObjectCollectionReportWithDefaultColumn() throws Exception {
PrismObject<ReportType> report = getObject(ReportType.class, getObjectCollectionReportWithDefaultColumnOid());
runReport(report, false);
basicCheckOutputFile(report);
}

@Test
public void test011CreateObjectCollectionReportWithView() throws Exception {
PrismObject<ReportType> report = getObject(ReportType.class, getObjectCollectionReportWithViewOid());
runReport(report, false);
basicCheckOutputFile(report);
}

@Test
public void test012CreateObjectCollectionReportWithDoubleView() throws Exception {
PrismObject<ReportType> report = getObject(ReportType.class, getObjectCollectionReportWithDoubleViewOid());
runReport(report, false);
basicCheckOutputFile(report);
}

@Test
public void test013CreateAuditCollectionReportWithDefaultColumn() throws Exception {
PrismObject<ReportType> report = getObject(ReportType.class, getAuditCollectionReportWithDefaultColumnOid());
runReport(report, false);
basicCheckOutputFile(report);
}

@Test
public void test014CreateAuditCollectionReportWithView() throws Exception {
PrismObject<ReportType> report = getObject(ReportType.class, getAuditCollectionReportWithViewOid());
runReport(report, false);
basicCheckOutputFile(report);
}

@Test
public void test015CreateAuditCollectionReportWithDoubleView() throws Exception {
PrismObject<ReportType> report = getObject(ReportType.class, getAuditCollectionReportWithDoubleViewOid());
runReport(report, false);
basicCheckOutputFile(report);
}

@Test
public void test016CreateObjectCollectionReportWithFilter() throws Exception {
PrismObject<ReportType> report = getObject(ReportType.class, getObjectCollectionReportWithFilterOid());
runReport(report, false);
basicCheckOutputFile(report);
}

@Test
public void test017CreateObjectCollectionReportWithFilterAndBasicCollection() throws Exception {
// PrismObject<ReportType> report = getObject(ReportType.class, getObjectCollectionReportWithFilterAndBasicCollectionOid());
// runReport(report, false);
// basicCheckOutputFile(report);
}

protected abstract String getDashboardReportWithTripleViewOid();
protected abstract String getDashboardReportWithViewOid();
protected abstract String getDashboardReportWithDefaultColumnOid();
protected abstract String getObjectCollectionReportWithDefaultColumnOid();
protected abstract String getObjectCollectionReportWithViewOid();
protected abstract String getObjectCollectionReportWithDoubleViewOid();
protected abstract String getAuditCollectionReportWithDefaultColumnOid();
protected abstract String getAuditCollectionReportWithViewOid();
protected abstract String getAuditCollectionReportWithDoubleViewOid();
protected abstract String getObjectCollectionReportWithFilterOid();
protected abstract String getObjectCollectionReportWithFilterAndBasicCollectionOid();

protected PrismObject<TaskType> runReport(PrismObject<ReportType> report, boolean errorOk) throws Exception {
Task task = getTestTask();
Expand All @@ -134,17 +192,14 @@ protected PrismObject<TaskType> runReport(PrismObject<ReportType> report, boolea
return finishedTask;
}

protected void checkHtmlOutputFile(PrismObject<ReportType> report) throws IOException, SchemaException, ObjectNotFoundException, SecurityViolationException, CommunicationException, ConfigurationException, ExpressionEvaluationException {
protected List<String> basicCheckOutputFile(PrismObject<ReportType> report) throws IOException, SchemaException, ObjectNotFoundException, SecurityViolationException, CommunicationException, ConfigurationException, ExpressionEvaluationException {
File outputFile = findOutputFile(report);
displayValue("Found report file", outputFile);
assertNotNull("No output file for "+report, outputFile);
List<String> lines = Files.readAllLines(Paths.get(outputFile.getPath()));
displayValue("Report content ("+lines.size()+" lines)", String.join("\n", lines));
outputFile.renameTo(new File(outputFile.getParentFile(), "processed-"+outputFile.getName()));

if (lines.size() < 10) {
fail("Html report CSV too short ("+lines.size()+" lines)");
}
return lines;
}

protected File findOutputFile(PrismObject<ReportType> report) {
Expand Down
Expand Up @@ -6,31 +6,61 @@
*/
package com.evolveum.midpoint.report;

import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.exception.*;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportType;

import java.io.File;
import java.io.IOException;
import java.util.List;

import static org.testng.AssertJUnit.assertNotNull;

/**
* @author skublik
*/

public class TestHtmlReport extends BasicNewReportTest {

public static final File REPORT_DASHBOARD_WITH_DEFAULT_COLUMN_FILE = new File(TEST_REPOSTS_DIR, "report-dashboard-with-default-column.xml");
public static final File REPORT_DASHBOARD_WITH_VIEW_FILE = new File(TEST_REPOSTS_DIR, "report-dashboard-with-view.xml");
public static final File REPORT_DASHBOARD_WITH_TRIPLE_VIEW_FILE = new File(TEST_REPOSTS_DIR, "report-dashboard-with-triple-view.xml");
private final static File TEST_REPORTS_HTML_DIR = new File(TEST_REPORTS_DIR,"html");

public static final File REPORT_DASHBOARD_WITH_DEFAULT_COLUMN_FILE = new File(TEST_REPORTS_HTML_DIR, "report-dashboard-with-default-column.xml");
public static final File REPORT_DASHBOARD_WITH_VIEW_FILE = new File(TEST_REPORTS_HTML_DIR, "report-dashboard-with-view.xml");
public static final File REPORT_DASHBOARD_WITH_TRIPLE_VIEW_FILE = new File(TEST_REPORTS_HTML_DIR, "report-dashboard-with-triple-view.xml");
public static final File REPORT_OBJECT_COLLECTION_WITH_DEFAULT_COLUMN_FILE = new File(TEST_REPORTS_HTML_DIR, "report-object-collection-with-default-column.xml");
public static final File REPORT_OBJECT_COLLECTION_WITH_VIEW_FILE = new File(TEST_REPORTS_HTML_DIR, "report-object-collection-with-view.xml");
public static final File REPORT_OBJECT_COLLECTION_WITH_DOUBLE_VIEW_FILE = new File(TEST_REPORTS_HTML_DIR, "report-object-collection-with-double-view.xml");
public static final File REPORT_AUDIT_COLLECTION_WITH_DEFAULT_COLUMN_FILE = new File(TEST_REPORTS_HTML_DIR, "report-audit-collection-with-default-column.xml");
public static final File REPORT_AUDIT_COLLECTION_WITH_VIEW_FILE = new File(TEST_REPORTS_HTML_DIR, "report-audit-collection-with-view.xml");
public static final File REPORT_AUDIT_COLLECTION_WITH_DOUBLE_VIEW_FILE = new File(TEST_REPORTS_HTML_DIR, "report-audit-collection-with-double-view.xml");
public static final File REPORT_OBJECT_COLLECTION_WITH_FILTER_FILE = new File(TEST_REPORTS_HTML_DIR, "report-object-collection-with-filter.xml");

public static final String REPORT_DASHBOARD_WITH_DEFAULT_COLUMN_OID = "2b44aa2e-dd86-4842-bcf5-762c8a9a8582";
public static final String REPORT_DASHBOARD_WITH_VIEW_OID = "2b44aa2e-dd86-4842-bcf5-762c8a9a8533";
public static final String REPORT_DASHBOARD_WITH_TRIPLE_VIEW_OID = "2b87aa2e-dd86-4842-bcf5-76200a9a8533";
public static final String REPORT_OBJECT_COLLECTION_WITH_DEFAULT_COLUMN_OID = "2b44aa2e-dd86-4842-bcf5-762c8a9a85ab";
public static final String REPORT_OBJECT_COLLECTION_WITH_VIEW_OID = "2b44aa2e-dd86-4842-bcf5-762c8a9a85de";
public static final String REPORT_OBJECT_COLLECTION_WITH_DOUBLE_VIEW_OID = "2b44aa2e-dd86-4842-bcf5-762c8a9a85ef";
public static final String REPORT_AUDIT_COLLECTION_WITH_DEFAULT_COLUMN_OID = "2b44aa2e-dd86-4842-bcf5-762c8a9a85bc";
public static final String REPORT_AUDIT_COLLECTION_WITH_VIEW_OID = "2b44aa2e-dd86-4842-bcf5-762c8a9a85cd";
public static final String REPORT_AUDIT_COLLECTION_WITH_DOUBLE_VIEW_OID = "2b44aa2e-dd86-4842-bcf5-762c8a9a85fg";
public static final String REPORT_OBJECT_COLLECTION_WITH_FILTER_OID = "2b44aa2e-dd86-4842-bcf5-762c8a9a85gh";

@Override
public void initSystem(Task initTask, OperationResult initResult) throws Exception {
super.initSystem(initTask, initResult);
importObjectFromFile(REPORT_DASHBOARD_WITH_DEFAULT_COLUMN_FILE, initResult);
importObjectFromFile(REPORT_DASHBOARD_WITH_VIEW_FILE, initResult);
importObjectFromFile(REPORT_DASHBOARD_WITH_TRIPLE_VIEW_FILE, initResult);
importObjectFromFile(REPORT_OBJECT_COLLECTION_WITH_DEFAULT_COLUMN_FILE, initResult);
importObjectFromFile(REPORT_OBJECT_COLLECTION_WITH_VIEW_FILE, initResult);
importObjectFromFile(REPORT_OBJECT_COLLECTION_WITH_DOUBLE_VIEW_FILE, initResult);
importObjectFromFile(REPORT_AUDIT_COLLECTION_WITH_DEFAULT_COLUMN_FILE, initResult);
importObjectFromFile(REPORT_AUDIT_COLLECTION_WITH_VIEW_FILE, initResult);
importObjectFromFile(REPORT_AUDIT_COLLECTION_WITH_DOUBLE_VIEW_FILE, initResult);
importObjectFromFile(REPORT_OBJECT_COLLECTION_WITH_FILTER_FILE, initResult);
}

@Override
Expand All @@ -43,8 +73,45 @@ protected String getDashboardReportWithViewOid() {
return REPORT_DASHBOARD_WITH_VIEW_OID;
}

protected String getObjectCollectionReportWithDefaultColumnOid() {
return REPORT_OBJECT_COLLECTION_WITH_DEFAULT_COLUMN_OID;
}
protected String getObjectCollectionReportWithViewOid() {
return REPORT_OBJECT_COLLECTION_WITH_VIEW_OID;
}
protected String getObjectCollectionReportWithDoubleViewOid() {
return REPORT_OBJECT_COLLECTION_WITH_DOUBLE_VIEW_OID;
}

protected String getAuditCollectionReportWithDefaultColumnOid() {
return REPORT_AUDIT_COLLECTION_WITH_DEFAULT_COLUMN_OID;
}
protected String getAuditCollectionReportWithViewOid() {
return REPORT_AUDIT_COLLECTION_WITH_VIEW_OID;
}
protected String getAuditCollectionReportWithDoubleViewOid() {
return REPORT_AUDIT_COLLECTION_WITH_DOUBLE_VIEW_OID;
}

protected String getObjectCollectionReportWithFilterOid() {
return REPORT_OBJECT_COLLECTION_WITH_FILTER_OID;
}

protected String getObjectCollectionReportWithFilterAndBasicCollectionOid() {
return "";
}

@Override
protected String getDashboardReportWithDefaultColumnOid() {
return REPORT_DASHBOARD_WITH_DEFAULT_COLUMN_OID;
}

protected List<String> basicCheckOutputFile(PrismObject<ReportType> report) throws IOException, SchemaException, ObjectNotFoundException, SecurityViolationException, CommunicationException, ConfigurationException, ExpressionEvaluationException {
List<String> lines = super.basicCheckOutputFile(report);

if (lines.size() < 10) {
fail("Html report CSV too short ("+lines.size()+" lines)");
}
return lines;
}
}
Expand Up @@ -52,7 +52,7 @@
<name>nameColumn2</name>
<path>name</path>
<display>
<label>Name</label>
<label>Name2</label>
</display>
<previousColumn>nameColumn</previousColumn>
<expression>
Expand Down Expand Up @@ -108,7 +108,7 @@
<name>nameColumn2</name>
<path>name</path>
<display>
<label>Name</label>
<label>Name2</label>
</display>
<previousColumn>nameColumn</previousColumn>
<expression>
Expand Down Expand Up @@ -164,7 +164,7 @@
<name>nameColumn2</name>
<path>name</path>
<display>
<label>Name</label>
<label>Name2</label>
</display>
<previousColumn>nameColumn</previousColumn>
<expression>
Expand Down Expand Up @@ -220,7 +220,7 @@
<name>nameColumn2</name>
<path>name</path>
<display>
<label>Name</label>
<label>Name2</label>
</display>
<previousColumn>nameColumn</previousColumn>
<expression>
Expand Down Expand Up @@ -276,7 +276,7 @@
<name>nameColumn2</name>
<path>name</path>
<display>
<label>Name</label>
<label>Name2</label>
</display>
<previousColumn>nameColumn</previousColumn>
<expression>
Expand Down Expand Up @@ -332,7 +332,7 @@
<name>nameColumn2</name>
<path>name</path>
<display>
<label>Name</label>
<label>Name2</label>
</display>
<previousColumn>nameColumn</previousColumn>
<expression>
Expand Down Expand Up @@ -388,7 +388,7 @@
<name>timeColumn2</name>
<path>time</path>
<display>
<label>Time</label>
<label>Time2</label>
</display>
<previousColumn>timeColumn</previousColumn>
<expression>
Expand Down
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2010-2020 Evolveum and contributors
~
~ This work is dual-licensed under the Apache License 2.0
~ and European Union Public License. See LICENSE file for details.
-->
<report oid="2b44aa2e-dd86-4842-bcf5-762c8a9a85bc">
<name>Audit Collection report with default columns</name>
<reportEngine>collection</reportEngine>
<objectCollection>
<collection>
<collectionRef oid="00000000-0000-0000-0001-000000001234" type="ObjectCollectionType"/>
</collection>
</objectCollection>
<export>
<type>html</type>
</export>
</report>

0 comments on commit 6f8ab64

Please sign in to comment.