chatfilter: fix filtering self and clan messages with chat icons
This was incorrectly filtering self/clan messages from players with chat icons due to not stripping the icon tag before matching the player name.
This commit is contained in:
@@ -173,7 +173,7 @@ public class ChatFilterPlugin extends Plugin
|
|||||||
case PRIVATECHAT:
|
case PRIVATECHAT:
|
||||||
case MODPRIVATECHAT:
|
case MODPRIVATECHAT:
|
||||||
case FRIENDSCHAT:
|
case FRIENDSCHAT:
|
||||||
if (shouldFilterPlayerMessage(name))
|
if (shouldFilterPlayerMessage(Text.removeTags(name)))
|
||||||
{
|
{
|
||||||
message = censorMessage(name, message);
|
message = censorMessage(name, message);
|
||||||
blockMessage = message == null;
|
blockMessage = message == null;
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ import org.junit.Before;
|
|||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
|
import static org.mockito.Mockito.lenient;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
import org.mockito.junit.MockitoJUnitRunner;
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
@@ -406,4 +407,18 @@ public class ChatFilterPluginTest
|
|||||||
assertEquals(1, client.getIntStack()[client.getIntStackSize() - 3]);
|
assertEquals(1, client.getIntStack()[client.getIntStackSize() - 3]);
|
||||||
assertEquals("<col=000000>testMessage</col> (4)", client.getStringStack()[client.getStringStackSize() - 1]);
|
assertEquals("<col=000000>testMessage</col> (4)", client.getStringStack()[client.getStringStackSize() - 1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testChatIcons()
|
||||||
|
{
|
||||||
|
when(chatFilterConfig.filteredWords()).thenReturn("test");
|
||||||
|
// if this test is broken, this stubbing is required to trip the assert
|
||||||
|
lenient().when(chatFilterConfig.filterType()).thenReturn(ChatFilterType.REMOVE_MESSAGE);
|
||||||
|
when(friendChatManager.isMember("Lazark")).thenReturn(true);
|
||||||
|
|
||||||
|
chatFilterPlugin.updateFilteredPatterns();
|
||||||
|
ScriptCallbackEvent event = createCallbackEvent("<img=22>Lazark", "test", ChatMessageType.PUBLICCHAT);
|
||||||
|
chatFilterPlugin.onScriptCallbackEvent(event);
|
||||||
|
assertEquals(1, client.getIntStack()[client.getIntStackSize() - 3]); // not filtered
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user