/* * SoapUI, Copyright (C) 2004-2016 SmartBear Software * * Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent * versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * * http://ec.europa.eu/idabc/eupl * * Unless required by applicable law or agreed to in writing, software distributed under the Licence is * distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the Licence for the specific language governing permissions and limitations * under the Licence. */ package com.eviware.soapui.report; import com.eviware.soapui.junit.Testcase; import com.eviware.soapui.model.security.SecurityScan; import com.eviware.soapui.model.testsuite.TestCase; import com.eviware.soapui.model.testsuite.TestCaseRunner; import com.eviware.soapui.model.testsuite.TestStep; import com.eviware.soapui.model.testsuite.TestStepResult; import com.eviware.soapui.security.SecurityTest; import com.eviware.soapui.security.SecurityTestRunContext; import com.eviware.soapui.security.SecurityTestRunner; import com.eviware.soapui.security.result.SecurityResult.ResultStatus; import com.eviware.soapui.security.result.SecurityScanRequestResult; import com.eviware.soapui.security.result.SecurityScanResult; import com.eviware.soapui.security.result.SecurityTestStepResult; import com.eviware.soapui.security.support.SecurityTestRunListener; import com.eviware.soapui.support.xml.XmlUtils; import java.util.HashMap; import java.util.List; /** * Collects Security Test results and creates JUnitReports * * @author nebojsa.tasic */ public class JUnitSecurityReportCollector extends JUnitReportCollector implements SecurityTestRunListener { @Override public void afterOriginalStep(TestCaseRunner testRunner, SecurityTestRunContext runContext, SecurityTestStepResult result) { } @Override public void afterRun(TestCaseRunner testRunner, SecurityTestRunContext runContext) { TestCase testCase = testRunner.getTestCase(); SecurityTest securityTest = ((SecurityTestRunner) testRunner).getSecurityTest(); JUnitReport report = new JUnitReport(); report.setIncludeTestProperties(includeTestPropertiesInReport); String reportName = securityTest.getName(); report.setTestSuiteName(reportName); report.setPackage(testCase.getTestSuite().getProject().getName()); int errorCount = 0; for (TestStep ts : testCase.getTestStepList()) { SecurityTestStepResult secuTestStepResult = securityTest.getSecurityTestStepResultMap().get(ts); if (secuTestStepResult != null) { for (SecurityScanResult scanResult : secuTestStepResult.getSecurityScanResultList()) { HashMap<String, String> testProperties = getTestPropertiesAsHashMap(securityTest); List<SecurityScanRequestResult> resultList = scanResult.getSecurityRequestResultList(); Testcase secTestCase = report.addTestCase(ts.getName() + " - " + scanResult.getSecurityScanName(), scanResult.getTimeTaken(), testProperties); secTestCase.setPackage(testCase.getTestSuite().getProject().getName()); for (int i = 0; i < resultList.size(); i++) { SecurityScanRequestResult scanRequestResult = resultList.get(i); if (scanRequestResult.getStatus() == ResultStatus.FAILED) { StringBuffer result = new StringBuffer(); result.append("<pre>") .append(XmlUtils.entitize(scanRequestResult.getChangedParamsInfo(i + 1))) .append("</pre>"); for (String message : scanRequestResult.getMessages()) { result.append("<pre>").append(XmlUtils.entitize(message)).append("</pre>"); } secTestCase.addNewError().setStringValue(result.toString()); errorCount++; } } } } report.setNoofErrorsInTestSuite(errorCount); report.setTotalTime(testRunner.getTimeTaken()); reports.put(reportName, report); } } @Override public void afterSecurityScan(TestCaseRunner testRunner, SecurityTestRunContext runContext, SecurityScanResult securityScanResult) { } @Override public void afterSecurityScanRequest(TestCaseRunner testRunner, SecurityTestRunContext runContext, SecurityScanRequestResult securityScanReqResult) { } @Override public void afterStep(TestCaseRunner testRunner, SecurityTestRunContext runContext, SecurityTestStepResult result) { } @Override public void beforeRun(TestCaseRunner testRunner, SecurityTestRunContext runContext) { } @Override public void beforeSecurityScan(TestCaseRunner testRunner, SecurityTestRunContext runContext, SecurityScan securityScan) { } @Override public void beforeStep(TestCaseRunner testRunner, SecurityTestRunContext runContext, TestStepResult testStepResult) { } }