Fix: special character only chat messages #336

Merged
m.ginkel merged 6 commits from fix/140-chat-messages into main 2026-05-14 13:51:46 +02:00
2 changed files with 20 additions and 17 deletions
Showing only changes of commit 47475dc4d3 - Show all commits
@@ -247,8 +247,7 @@ public class ClientService {
// Allow primitive values to contain hyphens (UUIDs) in addition to // Allow primitive values to contain hyphens (UUIDs) in addition to
// digits/words/colons // digits/words/colons
static Pattern responseRex = static Pattern responseRex =
Pattern.compile( Pattern.compile("(?<key>\\w+)=(('(?<string>([^']|\\')+)')|(?<primVal>[^ ]+))");
"(?<key>\\w+)=(('(?<string>([^']|\\')+)')|(?<primVal>[^ ]+))");
/** /**
* Removes escape characters from a string, specifically converting escaped single quotes (\') * Removes escape characters from a string, specifically converting escaped single quotes (\')
@@ -1,24 +1,25 @@
package ch.unibas.dmi.dbis.cs108.casono.client.network; package ch.unibas.dmi.dbis.cs108.casono.client.network;
import static org.junit.jupiter.api.Assertions.assertEquals;
import ch.unibas.dmi.dbis.cs108.casono.server.network.command.parsing.RequestParameter; import ch.unibas.dmi.dbis.cs108.casono.server.network.command.parsing.RequestParameter;
import java.util.*;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import java.util.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
public class ClientServiceTest { public class ClientServiceTest {
@Test @Test
public void parsingResponse() { public void parsingResponse() {
ArrayList<RequestParameter> params = new ArrayList<>(); ArrayList<RequestParameter> params = new ArrayList<>();
params.add(new RequestParameter("KEY", "VALUE")); params.add(new RequestParameter("KEY", "VALUE"));
params.add(new RequestParameter("STANDARD_TEXT", "Lorem ipsum dolor sit amet, consectetur adipiscing elit")); params.add(
new RequestParameter(
"STANDARD_TEXT",
"Lorem ipsum dolor sit amet, consectetur adipiscing elit"));
params.add(new RequestParameter("TEXT_BASED_EMOJI_WITHOUT_QUOTATION_MARKS", ";-)")); params.add(new RequestParameter("TEXT_BASED_EMOJI_WITHOUT_QUOTATION_MARKS", ";-)"));
params.add(new RequestParameter("TEXT_WITH_QUOTATION_MARKS", "SOMEBODY SAYS: 'HALLO WELT'")); params.add(
new RequestParameter("TEXT_WITH_QUOTATION_MARKS", "SOMEBODY SAYS: 'HALLO WELT'"));
params.add(new RequestParameter("NUMBERS", "123456789")); params.add(new RequestParameter("NUMBERS", "123456789"));
params.add(new RequestParameter("SOME_SPECIAL_CHARACTERS", "°^!§$%&/()=[]}?*+~'#`")); params.add(new RequestParameter("SOME_SPECIAL_CHARACTERS", "°^!§$%&/()=[]}?*+~'#`"));
params.add(new RequestParameter("WRONG_CHARACTERS", "# * ~ +")); params.add(new RequestParameter("WRONG_CHARACTERS", "# * ~ +"));
@@ -27,18 +28,21 @@ public class ClientServiceTest {
ArrayList<String> paramsAsResponseLines = new ArrayList<>(); ArrayList<String> paramsAsResponseLines = new ArrayList<>();
for (RequestParameter parameter : params) { for (RequestParameter parameter : params) {
if (!parameter.key().equals("WRONG_TEXT") && !parameter.key().equals("WRONG_CHARACTERS") && parameter.value().contains(" ")) { if (!parameter.key().equals("WRONG_TEXT")
&& !parameter.key().equals("WRONG_CHARACTERS")
&& parameter.value().contains(" ")) {
String newValue = "'" + parameter.value() + "'"; String newValue = "'" + parameter.value() + "'";
paramsAsResponseLines.add(String.format("%s=%s", parameter.key(), newValue)); paramsAsResponseLines.add(String.format("%s=%s", parameter.key(), newValue));
} else { } else {
paramsAsResponseLines.add(String.format("%s=%s", parameter.key(), parameter.value())); paramsAsResponseLines.add(
String.format("%s=%s", parameter.key(), parameter.value()));
} }
} }
assertEquals(8, paramsAsResponseLines.size()); assertEquals(8, paramsAsResponseLines.size());
List<RequestParameter> msgRes =
List<RequestParameter> msgRes = new ArrayList<>(ClientService.convertToRequestParameters(paramsAsResponseLines)); new ArrayList<>(ClientService.convertToRequestParameters(paramsAsResponseLines));
assertEquals(6, msgRes.size()); assertEquals(6, msgRes.size());