package ru.yandex.qatools.allure.utils;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import ru.yandex.qatools.allure.config.AllureModelUtils;
import ru.yandex.qatools.allure.model.TestSuiteResult;
import javax.xml.bind.JAXB;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Validator;
import java.io.File;
import java.util.Arrays;
import java.util.Collection;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
/**
* @author Dmitry Baev charlie@yandex-team.ru
* Date: 27.03.14
*/
@RunWith(Parameterized.class)
public class BadXmlCharacterEscapeHandlerTest {
private File testSuiteResultFile;
private TestSuiteResult result;
private String character;
@Rule
public TemporaryFolder folder = new TemporaryFolder();
public BadXmlCharacterEscapeHandlerTest(String character) {
this.character = character;
}
@Parameterized.Parameters
public static Collection<Object[]> data() {
return Arrays.asList(
new Object[]{"\u0000"},
new Object[]{"\u0017"}
);
}
@Before
public void setUp() throws Exception {
testSuiteResultFile = folder.newFile();
result = new TestSuiteResult().withName("name-and-кириллицей-also");
result.setTitle("prefix " + character + " suffix");
}
@Test
public void dataWithInvalidCharacterTest() throws Exception {
AllureResultsUtils.writeTestSuiteResult(result, testSuiteResultFile);
Validator validator = AllureModelUtils.getAllureSchemaValidator();
validator.validate(new StreamSource(testSuiteResultFile));
TestSuiteResult testSuite = JAXB.unmarshal(testSuiteResultFile, TestSuiteResult.class);
assertThat(testSuite.getName(), is("name-and-кириллицей-also"));
assertTrue(testSuite.getTitle().startsWith("prefix "));
assertTrue(testSuite.getTitle().endsWith(" suffix"));
}
}