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 MODPRIVATECHAT:
|
||||
case FRIENDSCHAT:
|
||||
if (shouldFilterPlayerMessage(name))
|
||||
if (shouldFilterPlayerMessage(Text.removeTags(name)))
|
||||
{
|
||||
message = censorMessage(name, message);
|
||||
blockMessage = message == null;
|
||||
|
||||
@@ -46,6 +46,7 @@ import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import static org.mockito.Mockito.lenient;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
import org.mockito.junit.MockitoJUnitRunner;
|
||||
@@ -406,4 +407,18 @@ public class ChatFilterPluginTest
|
||||
assertEquals(1, client.getIntStack()[client.getIntStackSize() - 3]);
|
||||
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