Link the clients and channels named in server log lines
Log lines now name clients and channels with TeamSpeak's own client:// and channel:// links, the same ones a dragged-in reference produces, so the chat log's existing handling turns them into the context menus. The log is rendered with a links-only pass rather than the full BBCode renderer: its lines are assembled by the client itself, so nothing else in them should be interpreted — a channel called "[b]VIP" stays literal. Channels we no longer have (a deleted one) are still named in plain text. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
package com.ts3client.text;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
/**
|
||||
* The server log's renderer: it turns the client's own links into anchors and leaves
|
||||
* everything else — names carrying bracket markup included — as plain text.
|
||||
*/
|
||||
class BBCodeLinksTest {
|
||||
|
||||
@Test
|
||||
void rendersClientAndChannelLinks() {
|
||||
String log = TsLink.clientBBCode(7, "uid=", "Bob") + " connected to channel \""
|
||||
+ TsLink.channelBBCode(3, "Lobby") + "\"";
|
||||
String html = BBCode.linksToHtml(log);
|
||||
assertTrue(html.contains("href=\"client://7/uid=~Bob\""), html);
|
||||
assertTrue(html.contains(">Bob</a>"), html);
|
||||
assertTrue(html.contains("href=\"channel://3/Lobby\""), html);
|
||||
assertTrue(html.contains(">Lobby</a>"), html);
|
||||
}
|
||||
|
||||
@Test
|
||||
void leavesOtherMarkupLiteral() {
|
||||
assertEquals("[b]not bold[/b] & <i>", BBCode.linksToHtml("[b]not bold[/b] & <i>"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void keepsBracketsInsideALabelLiteral() {
|
||||
String html = BBCode.linksToHtml(TsLink.channelBBCode(3, "[cspacer]---"));
|
||||
assertTrue(html.contains(">[cspacer]---</a>"), html);
|
||||
}
|
||||
|
||||
@Test
|
||||
void rejectsHrefsThatAreNotLinks() {
|
||||
assertEquals("[url=javascript:alert(1)]x[/url]", BBCode.linksToHtml("[url=javascript:alert(1)]x[/url]"));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user