/*
* Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.runtime.core.routing.filters;
import org.mule.tck.junit4.AbstractMuleTestCase;
import org.mule.tck.size.SmallTest;
import org.junit.Test;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
@SmallTest
public class WildcardFilterTestCase extends AbstractMuleTestCase {
@Test
public void testWildcardFilterNoPattern() {
// start with default
WildcardFilter filter = new WildcardFilter();
assertFalse(filter.accept("No tengo dinero"));
// activate a pattern
filter.setPattern("* brown fox");
assertTrue(filter.accept("The quick brown fox"));
// remove pattern again, i.e. block all
filter.setPattern(null);
assertFalse(filter.accept("oh-oh"));
}
@Test
public void testWildcardFilterPostfix() {
WildcardFilter filter = new WildcardFilter("The quick *");
assertNotNull(filter.getPattern());
assertTrue(filter.accept("The quick brown fox"));
assertTrue(filter.accept("The quick *"));
assertTrue(!filter.accept("The quickbrown fox"));
assertTrue(!filter.accept("he quick brown fox"));
}
@Test
public void testWildcardFilterPrefix() {
WildcardFilter filter = new WildcardFilter();
filter.setPattern("* brown fox");
assertTrue(filter.accept("The quick brown fox"));
assertTrue(filter.accept("* brown fox"));
assertTrue(!filter.accept("The quickbrown fox"));
assertTrue(!filter.accept("The quick brown fo"));
}
@Test
public void testWildcardFilterExactMatch() {
WildcardFilter filter = new WildcardFilter();
filter.setPattern("fox");
assertTrue(filter.accept("fox"));
filter.setPattern("");
assertTrue(filter.accept(""));
}
@Test
public void testWildcardFilterPrePost() {
WildcardFilter filter = new WildcardFilter();
filter.setPattern("* brown *");
assertTrue(filter.accept("The quick brown fox"));
assertTrue(filter.accept("* brown fox"));
assertTrue(!filter.accept("The quickbrown fox"));
assertTrue(filter.accept("The quick brown fo"));
filter.setPattern("**");
assertTrue(filter.accept("The quick brown fox"));
filter.setPattern("*w*");
assertTrue(filter.accept("The quick brown fox"));
filter.setPattern("*");
assertTrue(filter.accept("The quick brown fox"));
filter.setPattern("*.*");
assertTrue(filter.accept("test.xml"));
filter.setPattern("*.txt");
assertTrue(filter.accept("test.txt"));
}
@Test
public void testWildcardFilterMultiplePatterns() {
WildcardFilter filter = new WildcardFilter();
filter.setPattern("* brown*, The*");
assertTrue(filter.accept("The quick brown fox"));
assertTrue(filter.accept(" brown fox"));
assertTrue(filter.accept("The quickbrown fox"));
filter.setPattern("* if, The*");
assertTrue(!filter.accept("What The!"));
assertTrue(!filter.accept("simplify"));
}
@Test
public void testWildcardFilterCasesensitive() {
WildcardFilter filter = new WildcardFilter();
filter.setPattern("* brown fox");
assertFalse(filter.accept("The quick Brown fox"));
assertTrue(filter.accept("* brown fox"));
filter.setCaseSensitive(false);
assertTrue(filter.accept("The quick Brown fox"));
}
@Test
public void testClassAndSubclass() {
WildcardFilter filter = new WildcardFilter();
filter.setPattern("java.lang.Throwable+");
assertTrue(filter.accept(new Exception()));
assertTrue(filter.accept(new Throwable()));
assertFalse(filter.accept(new Object()));
filter.setPattern("java.lang.Throwable");
assertFalse(filter.accept(new Exception()));
assertTrue(filter.accept(new Throwable()));
assertFalse(filter.accept(new Object()));
}
@Test
public void testClassAndSubclassUsingString() {
WildcardFilter filter = new WildcardFilter();
filter.setPattern("java.lang.Throwable+");
assertTrue(filter.accept(new Exception().getClass().getName()));
assertTrue(filter.accept(new Throwable().getClass().getName()));
assertFalse(filter.accept(new Object().getClass().getName()));
filter.setPattern("java.lang.Throwable");
assertFalse(filter.accept(new Exception().getClass().getName()));
assertTrue(filter.accept(new Throwable().getClass().getName()));
assertFalse(filter.accept(new Object().getClass().getName()));
}
}