Skip to content

Commit

Permalink
VAL-313 Added StatisticsService tests
Browse files Browse the repository at this point in the history
  • Loading branch information
andresrosenthal committed Sep 5, 2016
1 parent bdecf3b commit f28fcc4
Show file tree
Hide file tree
Showing 4 changed files with 153 additions and 5 deletions.
17 changes: 16 additions & 1 deletion siva-parent/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

<artifactId>siva-parent</artifactId>
<packaging>pom</packaging>
<name>SIVa webapp and other core modules</name>
<name>SiVa webapp and other core modules</name>
<version>2.0.2-SNAPSHOT</version>

<modules>
Expand All @@ -30,6 +30,7 @@
<powermock.version>1.6.2</powermock.version>
<dss.version>4.7.RC1.d4j.1</dss.version>
<cxf.version>3.1.4</cxf.version>
<powermock.version>1.6.5</powermock.version>
</properties>

<dependencyManagement>
Expand Down Expand Up @@ -255,6 +256,20 @@
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>

<!-- Powermock for testing -->
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>

Expand Down
17 changes: 17 additions & 0 deletions siva-parent/siva-statistics/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,23 @@
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>

<!-- Testing -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
package ee.openeid.siva.statistics;

import ee.openeid.siva.statistics.googleanalytics.GoogleAnalyticsMeasurementProtocolClient;
import ee.openeid.siva.statistics.model.SimpleValidationReport;
import ee.openeid.siva.validation.document.report.QualifiedReport;
import ee.openeid.siva.validation.document.report.SignatureValidationData;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
import java.util.concurrent.TimeUnit;

import static org.mockito.Matchers.any;
import static org.mockito.Mockito.*;
import static org.powermock.api.mockito.PowerMockito.mockStatic;

@RunWith(PowerMockRunner.class)
@PrepareForTest({StatisticsService.class, LoggerFactory.class})
public class StatisticsServiceTest {

private static StatisticsService statisticsService;

private static Logger loggerMock;

@BeforeClass
public static void setUp() {
mockStatic(LoggerFactory.class);
loggerMock = mock(Logger.class);
when(LoggerFactory.getLogger(StatisticsService.class)).thenReturn(loggerMock);

statisticsService = new StatisticsService();
GoogleAnalyticsMeasurementProtocolClient ga = mock(GoogleAnalyticsMeasurementProtocolClient.class);
statisticsService.setGoogleAnalyticsMeasurementClient(ga);
doNothing().when(ga).sendStatisticalData(any(SimpleValidationReport.class));
}

@Test
public void testValidationStatisticsLoggingWhereAllSignaturesInQualifiedReportAreValid() {
long validationDurationInMillis = 1000L;
int validSignaturesCount = 1;
int totalSignatureCount = 1;
SignatureValidationData.Indication indication = SignatureValidationData.Indication.TOTAL_PASSED;
String subindication = "";
String countryCode = "EE";

QualifiedReport report = createDummyQualifiedReport(validSignaturesCount, totalSignatureCount);
addSignatureValidationData(report, indication, subindication, countryCode);

statisticsService.publishValidationStatistic(TimeUnit.MILLISECONDS.toNanos(validationDurationInMillis), report);
verify(loggerMock).info("{\n" +
" \"dur\" : "+ validationDurationInMillis + ",\n" +
" \"sigCt\" : "+ totalSignatureCount + ",\n" +
" \"vSigCt\" : "+ validSignaturesCount + ",\n" +
" \"sigRslt\" : [ {\n" +
" \"i\" : \"" + indication + "\",\n" +
" \"cc\" : \"" + countryCode + "\"\n" +
" } ]\n" +
"}"
);
}

@Test
public void testValidationStatisticsLoggingWhereOneSignatureInQualifiedReportIsValid() {
long validationDurationInMillis = 2000L;
int validSignaturesCount = 1;
int totalSignatureCount = 2;
SignatureValidationData.Indication firstSignatureIndication = SignatureValidationData.Indication.TOTAL_PASSED;
String firstSignatureSubindication = "";
String firstSignatureCountryCode = "EE";
SignatureValidationData.Indication secondSignatureIndication = SignatureValidationData.Indication.TOTAL_FAILED;
String secondSignatureSubindication = "CERTIFICATE_CHAIN_NOT_FOUND";
String secondSignatureCountryCode = "US";

QualifiedReport report = createDummyQualifiedReport(validSignaturesCount, totalSignatureCount);
addSignatureValidationData(report, firstSignatureIndication, firstSignatureSubindication, firstSignatureCountryCode);
addSignatureValidationData(report, secondSignatureIndication, secondSignatureSubindication, secondSignatureCountryCode);

statisticsService.publishValidationStatistic(TimeUnit.MILLISECONDS.toNanos(validationDurationInMillis), report);
verify(loggerMock).info("{\n" +
" \"dur\" : "+ validationDurationInMillis + ",\n" +
" \"sigCt\" : "+ totalSignatureCount + ",\n" +
" \"vSigCt\" : "+ validSignaturesCount + ",\n" +
" \"sigRslt\" : [ {\n" +
" \"i\" : \"" + firstSignatureIndication + "\",\n" +
" \"cc\" : \"" + firstSignatureCountryCode + "\"\n" +
" }, {\n" +
" \"i\" : \"" + secondSignatureIndication + "\",\n" +
" \"si\" : \"" + secondSignatureSubindication + "\",\n" +
" \"cc\" : \"" + secondSignatureCountryCode + "\"\n" +
" } ]\n" +
"}"
);
}

private QualifiedReport createDummyQualifiedReport(int validSignaturesCount, int totalSignaturesCount) {
QualifiedReport report = new QualifiedReport();
report.setSignaturesCount(totalSignaturesCount);
report.setValidSignaturesCount(validSignaturesCount);

return report;
}

private void addSignatureValidationData(QualifiedReport report, SignatureValidationData.Indication indication, String subindication, String country) {
if (report.getSignatures() == null) {
report.setSignatures(new ArrayList<>());
}
SignatureValidationData sigData = new SignatureValidationData();
sigData.setIndication(indication);
sigData.setSubIndication(subindication);
sigData.setCountryCode(country);
report.getSignatures().add(sigData);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,8 @@ public SoapRequestValidationInterceptor() {

@Override
public void handleMessage(SoapMessage message){
saajIn.handleMessage(message);
SOAPMessage soapMessage = message.getContent(SOAPMessage.class);
if (soapMessage == null) {
saajIn.handleMessage(message);
soapMessage = message.getContent(SOAPMessage.class);
}
try {
if (soapMessage == null) {
throw new SOAPException();
Expand Down

0 comments on commit f28fcc4

Please sign in to comment.