|
|
|
@ -15,23 +15,16 @@ |
|
|
|
*/ |
|
|
|
package org.thingsboard.server.dao.service; |
|
|
|
|
|
|
|
import org.junit.jupiter.api.BeforeAll; |
|
|
|
import com.fasterxml.jackson.databind.node.TextNode; |
|
|
|
import org.junit.Test; |
|
|
|
import org.junit.jupiter.params.ParameterizedTest; |
|
|
|
import org.junit.jupiter.params.provider.ValueSource; |
|
|
|
import org.thingsboard.common.util.JacksonUtil; |
|
|
|
import org.thingsboard.server.common.data.asset.Asset; |
|
|
|
|
|
|
|
import javax.validation.ConstraintValidatorContext; |
|
|
|
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertFalse; |
|
|
|
import static org.mockito.Mockito.mock; |
|
|
|
import static org.assertj.core.api.Assertions.assertThatThrownBy; |
|
|
|
|
|
|
|
public class NoXssValidatorTest { |
|
|
|
private static NoXssValidator validator; |
|
|
|
|
|
|
|
@BeforeAll |
|
|
|
public static void beforeAll() { |
|
|
|
validator = new NoXssValidator(); |
|
|
|
validator.initialize(null); |
|
|
|
} |
|
|
|
|
|
|
|
@ParameterizedTest |
|
|
|
@ValueSource(strings = { |
|
|
|
@ -44,9 +37,25 @@ public class NoXssValidatorTest { |
|
|
|
" <img src= \"http://site.com/\" > ", |
|
|
|
"123 <input type=text value=a onfocus=alert(1337) AUTOFOCUS>bebe" |
|
|
|
}) |
|
|
|
public void testIsNotValid(String stringWithXss) { |
|
|
|
boolean isValid = validator.isValid(stringWithXss, mock(ConstraintValidatorContext.class)); |
|
|
|
assertFalse(isValid); |
|
|
|
public void givenEntityWithMaliciousPropertyValue_thenReturnValidationError(String maliciousString) { |
|
|
|
Asset invalidAsset = new Asset(); |
|
|
|
invalidAsset.setName(maliciousString); |
|
|
|
|
|
|
|
assertThatThrownBy(() -> { |
|
|
|
ConstraintValidator.validateFields(invalidAsset); |
|
|
|
}).hasMessageContaining("field value is malformed"); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void givenEntityWithMaliciousValueInAdditionalInfo_thenReturnValidationError() { |
|
|
|
Asset invalidAsset = new Asset(); |
|
|
|
String maliciousValue = "qwerty<script>alert(document.cookie)</script>qwerty"; |
|
|
|
invalidAsset.setAdditionalInfo(JacksonUtil.newObjectNode() |
|
|
|
.set("description", new TextNode(maliciousValue))); |
|
|
|
|
|
|
|
assertThatThrownBy(() -> { |
|
|
|
ConstraintValidator.validateFields(invalidAsset); |
|
|
|
}).hasMessageContaining("field value is malformed"); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|