Added tests for entry extracting and monitoring request validation
This commit is contained in:
parent
3358a8ee21
commit
bd2ad04a65
11 changed files with 156 additions and 0 deletions
156
src/test/java/ru/nbch/credit_tracker/utils/UtilTest.java
Normal file
156
src/test/java/ru/nbch/credit_tracker/utils/UtilTest.java
Normal file
|
|
@ -0,0 +1,156 @@
|
|||
package ru.nbch.credit_tracker.utils;
|
||||
|
||||
import jakarta.xml.bind.JAXBException;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.Arguments;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import ru.nbch.credit_tracker.entities.request.monitoring_request.MonitoringRequest;
|
||||
import ru.nbch.credit_tracker.enums.SignalError;
|
||||
import ru.nbch.credit_tracker.exceptions.SignalClientException;
|
||||
import ru.nbch.credit_tracker.service.xml.jaxb.IXmlProcessor;
|
||||
import ru.nbch.credit_tracker.service.xml.jaxb.XmlProcessorImplAnyClasses;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.Collections;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Stream;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipInputStream;
|
||||
|
||||
@SpringBootTest(classes = {UtilTest.TestConfig.class})
|
||||
public class UtilTest {
|
||||
|
||||
private final IXmlProcessor xmlProcessor;
|
||||
|
||||
@Autowired
|
||||
public UtilTest(IXmlProcessor xmlProcessor) {
|
||||
this.xmlProcessor = xmlProcessor;
|
||||
}
|
||||
|
||||
@Configuration
|
||||
public static class TestConfig {
|
||||
@Bean
|
||||
public IXmlProcessor xmlProcessor() throws JAXBException {
|
||||
return new XmlProcessorImplAnyClasses(Charset.forName("windows-1251"),
|
||||
MonitoringRequest.class);
|
||||
}
|
||||
}
|
||||
|
||||
private static Stream<Arguments> entryTestCases() {
|
||||
return Stream.of(
|
||||
Arguments.of(
|
||||
"/monitoring_request/valid_request.zip",
|
||||
true
|
||||
),
|
||||
Arguments.of(
|
||||
"/monitoring_request/directory_request.zip",
|
||||
false
|
||||
)
|
||||
,
|
||||
Arguments.of(
|
||||
"/monitoring_request/empty_request.zip",
|
||||
false
|
||||
)
|
||||
,
|
||||
Arguments.of(
|
||||
"/monitoring_request/many_files_request.zip",
|
||||
false
|
||||
)
|
||||
,
|
||||
Arguments.of(
|
||||
"/monitoring_request/txt_request.zip",
|
||||
false
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "[{index}] PATH: [ {0} ] EXPECTED: [ {1} ]")
|
||||
@MethodSource("entryTestCases")
|
||||
void testExtractEntryFromZip(String path, boolean expected) {
|
||||
ZipInputStream zipInputStream;
|
||||
Optional<ZipEntry> xmlFileEntry;
|
||||
try {
|
||||
zipInputStream = new ZipInputStream(getClass().getResourceAsStream(path));
|
||||
xmlFileEntry = ZipUtils.extractValidEntry(zipInputStream);
|
||||
Assertions.assertEquals(expected, xmlFileEntry.isPresent());
|
||||
zipInputStream.close();
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private static Stream<Arguments> validationTestCases() {
|
||||
return Stream.of(
|
||||
Arguments.of(
|
||||
"/monitoring_request/valid_request.zip",
|
||||
null,
|
||||
null
|
||||
),
|
||||
Arguments.of(
|
||||
"/monitoring_request/invalid_xml.zip",
|
||||
SignalError.ERROR_011,
|
||||
Collections.emptyList().toArray(new Object[0])
|
||||
)
|
||||
,
|
||||
Arguments.of(
|
||||
"/monitoring_request/no_required_tag_request.zip",
|
||||
SignalError.ERROR_002,
|
||||
new Object[]{"Password"}
|
||||
),
|
||||
Arguments.of(
|
||||
"/monitoring_request/invalid_phone_request.zip",
|
||||
SignalError.ERROR_003,
|
||||
Collections.emptyList().toArray(new Object[0])
|
||||
),
|
||||
Arguments.of(
|
||||
"/monitoring_request/invalid_id_request.zip",
|
||||
SignalError.ERROR_010,
|
||||
Collections.emptyList().toArray(new Object[0])
|
||||
),
|
||||
Arguments.of(
|
||||
"/monitoring_request/no_unique_ids_request.zip",
|
||||
SignalError.ERROR_004,
|
||||
new Object[]{"abc125"}
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "[{index}] PATH: [ {0} ] SIGNALERROR: [ {1} ] ARGS [ {2} ]")
|
||||
@MethodSource("validationTestCases")
|
||||
void testMonitoringRequestValidation(String path, SignalError signalError, Object[] args) {
|
||||
ZipInputStream zipInputStream = null;
|
||||
MonitoringRequest monitoringRequest;
|
||||
try {
|
||||
zipInputStream = new ZipInputStream(getClass().getResourceAsStream(path));
|
||||
zipInputStream.getNextEntry();
|
||||
monitoringRequest = xmlProcessor.read(zipInputStream, MonitoringRequest.class);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
} finally {
|
||||
if (zipInputStream != null) {
|
||||
try {
|
||||
zipInputStream.close();
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SignalClientException ex = null;
|
||||
try {
|
||||
ValidationUtil.validateMonitoringRequest(monitoringRequest);
|
||||
} catch (SignalClientException e) {
|
||||
ex = e;
|
||||
}
|
||||
if (ex != null) {
|
||||
Assertions.assertEquals(signalError, ex.getErrorMessage().getSubject());
|
||||
Assertions.assertArrayEquals(args, ex.getErrorMessage().getArgs());
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
src/test/resources/monitoring_request/directory_request.zip
Normal file
BIN
src/test/resources/monitoring_request/directory_request.zip
Normal file
Binary file not shown.
0
src/test/resources/monitoring_request/empty_request.zip
Normal file
0
src/test/resources/monitoring_request/empty_request.zip
Normal file
BIN
src/test/resources/monitoring_request/invalid_id_request.zip
Normal file
BIN
src/test/resources/monitoring_request/invalid_id_request.zip
Normal file
Binary file not shown.
BIN
src/test/resources/monitoring_request/invalid_phone_request.zip
Normal file
BIN
src/test/resources/monitoring_request/invalid_phone_request.zip
Normal file
Binary file not shown.
BIN
src/test/resources/monitoring_request/invalid_xml.zip
Normal file
BIN
src/test/resources/monitoring_request/invalid_xml.zip
Normal file
Binary file not shown.
BIN
src/test/resources/monitoring_request/many_files_request.zip
Normal file
BIN
src/test/resources/monitoring_request/many_files_request.zip
Normal file
Binary file not shown.
Binary file not shown.
BIN
src/test/resources/monitoring_request/no_unique_ids_request.zip
Normal file
BIN
src/test/resources/monitoring_request/no_unique_ids_request.zip
Normal file
Binary file not shown.
BIN
src/test/resources/monitoring_request/txt_request.zip
Normal file
BIN
src/test/resources/monitoring_request/txt_request.zip
Normal file
Binary file not shown.
BIN
src/test/resources/monitoring_request/valid_request.zip
Normal file
BIN
src/test/resources/monitoring_request/valid_request.zip
Normal file
Binary file not shown.
Loading…
Add table
Reference in a new issue