diff --git a/app/build.gradle b/app/build.gradle
index 3922d2e7da..53f1e78058 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -117,8 +117,10 @@ dependencies {
def dnsjava_version = "2.1.8"
def openpgp_version = "12.0"
def requery_version = "3.26.0"
- def junit_version = "5.3.1"
+ def junit_version = "4.12"
def assertj_version = "3.11.1"
+ def mockito_version = "2.24.0"
+ def powermock_version = "2.0.0"
// https://developer.android.com/jetpack/docs/release-notes
@@ -181,10 +183,17 @@ dependencies {
// git clone https://android.googlesource.com/platform/frameworks/opt/colorpicker
implementation project(path: ':colorpicker')
- // https://junit.org/junit5/
- testImplementation "org.junit.jupiter:junit-jupiter-api:$junit_version"
- testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junit_version"
+ // https://junit.org/
+ testImplementation "junit:junit:$junit_version"
// https://joel-costigliola.github.io/assertj/
testImplementation "org.assertj:assertj-core:$assertj_version"
+
+ // https://site.mockito.org/
+ testImplementation "org.mockito:mockito-core:$mockito_version"
+
+ // https://github.com/powermock/powermock
+ testImplementation "org.powermock:powermock-core:$powermock_version"
+ testImplementation "org.powermock:powermock-api-mockito2:$powermock_version"
+ testImplementation "org.powermock:powermock-module-junit4:$powermock_version"
}
diff --git a/app/src/main/java/eu/faircode/email/HtmlHelper.java b/app/src/main/java/eu/faircode/email/HtmlHelper.java
index f07e6e9fd3..413383d1b9 100644
--- a/app/src/main/java/eu/faircode/email/HtmlHelper.java
+++ b/app/src/main/java/eu/faircode/email/HtmlHelper.java
@@ -130,8 +130,8 @@ public class HtmlHelper {
StringBuilder sb = new StringBuilder();
int end = 0;
while (matcher.find()) {
- sb.append(html(text.substring(end, matcher.start())));
- String ref = html(matcher.group());
+ sb.append(Html.escapeHtml(text.substring(end, matcher.start())));
+ String ref = Html.escapeHtml(matcher.group());
sb.append(String.format("%s", ref, ref));
end = matcher.end();
}
@@ -139,10 +139,6 @@ public class HtmlHelper {
return sb.toString();
}
- private static String html(String plain) {
- return plain.replace("&", "&").replace("<", "<");
- }
-
static Drawable decodeImage(String source, Context context, long id, boolean show) {
int px = Helper.dp2pixels(context, 48);
diff --git a/app/src/test/java/eu/faircode/email/HtmlHelperTest.java b/app/src/test/java/eu/faircode/email/HtmlHelperTest.java
index 9ca5787e46..613afc2e44 100644
--- a/app/src/test/java/eu/faircode/email/HtmlHelperTest.java
+++ b/app/src/test/java/eu/faircode/email/HtmlHelperTest.java
@@ -1,13 +1,39 @@
package eu.faircode.email;
-import org.junit.jupiter.api.Test;
+import android.text.Html;
-import static org.assertj.core.api.Assertions.assertThat;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
-class HtmlHelperTest {
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.powermock.api.mockito.PowerMockito.mockStatic;
+import static org.powermock.api.mockito.PowerMockito.when;
+
+@PrepareForTest(Html.class)
+@RunWith(PowerMockRunner.class)
+public class HtmlHelperTest {
+
+ @Before
+ public void setUp() {
+ mockStatic(Html.class);
+ when(Html.escapeHtml(any(CharSequence.class))).thenAnswer(new Answer