/*******************************************************************************
* Copyright (c) 2010-2014 SAP AG and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* SAP AG - initial API and implementation
*******************************************************************************/
package org.eclipse.skalli.services.extension.validators;
import java.util.SortedSet;
import org.apache.commons.lang.StringEscapeUtils;
import org.eclipse.skalli.model.Issue;
import org.eclipse.skalli.model.Severity;
import org.eclipse.skalli.testutil.TestExtension;
import org.eclipse.skalli.testutil.TestUUIDs;
import org.jsoup.safety.Whitelist;
import org.junit.Assert;
import org.junit.Test;
@SuppressWarnings("nls")
public class WhitelistValidatorTest {
@Test
public void testIsValid() throws Exception {
WhitelistValidator validator = new WhitelistValidator(Severity.FATAL, TestExtension.class,
TestExtension.PROPERTY_STR, Whitelist.basic());
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "foobar"));
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "<b>foobar</b>"));
Assert.assertFalse(validator.isValid(TestUUIDs.TEST_UUIDS[0], "<script>alert('Gotcha!')</script>"));
}
@Test
public void testValidate() throws Exception {
assertNoIssues("foobar");
assertNoIssues("<b>foobar</b>");
assertNoIssues("");
assertNoIssues(null);
assertHasIssue("<script>alert('Gotcha!')</script>");
}
private void assertNoIssues(String s) {
WhitelistValidator validator = new WhitelistValidator(Severity.FATAL, TestExtension.class,
TestExtension.PROPERTY_STR, Whitelist.basic());
SortedSet<Issue> issues = validator.validate(TestUUIDs.TEST_UUIDS[0], s, Severity.FATAL);
Assert.assertNotNull(issues);
Assert.assertEquals(0, issues.size());
}
private void assertHasIssue(String s) {
WhitelistValidator validator = new WhitelistValidator(Severity.FATAL, TestExtension.class,
TestExtension.PROPERTY_STR, Whitelist.basic());
SortedSet<Issue> issues = validator.validate(TestUUIDs.TEST_UUIDS[0], s, Severity.FATAL);
Assert.assertNotNull(issues);
Assert.assertEquals(1, issues.size());
Assert.assertEquals(TestUUIDs.TEST_UUIDS[0], issues.first().getEntityId());
Assert.assertEquals(TestExtension.class, issues.first().getExtension());
Assert.assertEquals(TestExtension.PROPERTY_STR, issues.first().getPropertyId());
Assert.assertEquals(Severity.FATAL, issues.first().getSeverity());
Assert.assertTrue(issues.first().getMessage().contains(StringEscapeUtils.escapeHtml(s)));
}
}