diff --git a/Dockerfile.jetty b/Dockerfile.jetty
index 59863aa..2d1c76b 100644
--- a/Dockerfile.jetty
+++ b/Dockerfile.jetty
@@ -8,7 +8,7 @@ RUN mvn --batch-mode --define java.net.useSystemProxies=true package
########################################################################################
-FROM jetty:11.0.7-jre11-slim
+FROM jetty:11.0.15-jre11-slim
# Proxy and OldProxy need empty path segments support in URIs
# Hence: allow AMBIGUOUS_EMPTY_SEGMENT
@@ -65,7 +65,7 @@ COPY ROOT.jetty.xml $WEBAPP_PATH/ROOT.xml
ENTRYPOINT ["/entrypoint.sh"]
# Openshift https://docs.openshift.com/container-platform/4.9/openshift_images/create-images.html#images-create-guide-openshift_create-images
-USER root
+USER root
RUN chgrp -R 0 $JETTY_BASE && chmod -R g=u $JETTY_BASE
RUN chgrp -R 0 /tmp && chmod -R g=u /tmp
USER jetty
diff --git a/pom.jdk8.xml b/pom.jdk8.xml
index 37c595d..7a36a5c 100644
--- a/pom.jdk8.xml
+++ b/pom.jdk8.xml
@@ -55,7 +55,7 @@
1.2023.6
- 11.0.7
+ 11.0.15
0.36.1
@@ -63,41 +63,44 @@
${jetty.version}
${jetty.version}
${jetty.version}
- 1.14
1.0.7
${jlatexmath.version}
${jlatexmath.version}
+
+ 1.16
+ 2.8
- 4.13.2
- 4.8.3
+ 5.9.3
+ 1.9.3
+ 4.9.0
5.3.2
2.11.0
${jetty.version}
- 3.1.0
- 3.2.0
- 3.2.0
- 3.8.1
- 2.8.1
- 2.22.2
+ 3.2.0
+ 3.5.0
+ 3.3.1
+ 3.11.0
+ 2.15.0
+ 3.0.0
3.3.2
- 2.5.2
- 2.8.2
- 3.9.1
- 3.1.2
- 3.1.2
- 9.0.1
+ 3.1.1
+ 3.1.1
+ 3.12.1
+ 3.4.3
+ 3.2.2
+ 10.10.0
2.10
${jetty.version}
${jetty.version}
- 1.5.0
- 3.3.1
+ 1.5.1
+ 3.5.0
@@ -145,13 +148,6 @@
-
-
- org.apache.xmlgraphics
- batik-all
- ${batik-all.version}
- pom
-
org.scilab.forge
@@ -168,14 +164,35 @@
jlatexmath-font-cyrillic
${jlatexmath-font-cyrillic.version}
+
+
+
+ org.apache.xmlgraphics
+ batik-all
+ ${batik-all.version}
+ pom
+
+
+
+ org.apache.xmlgraphics
+ fop
+ ${fop.version}
+ pom
+
- junit
- junit
+ org.junit.jupiter
+ junit-jupiter-api
${junit.version}
test
+
+ org.junit.platform
+ junit-platform-suite-api
+ ${junit-suite.version}
+ test
+
org.seleniumhq.selenium
selenium-java
@@ -220,7 +237,7 @@
maven-dependency-plugin
${maven-dependency-plugin.version}
-
+
maven-resources-plugin
${maven-resources-plugin.version}
diff --git a/pom.xml b/pom.xml
index af2be3e..c4a5d77 100644
--- a/pom.xml
+++ b/pom.xml
@@ -55,7 +55,7 @@
1.2023.6
- 11.0.7
+ 11.0.15
0.36.1
@@ -63,41 +63,44 @@
${jetty.version}
${jetty.version}
${jetty.version}
- 1.14
1.0.7
${jlatexmath.version}
${jlatexmath.version}
+
+ 1.16
+ 2.8
- 4.13.2
- 4.8.3
+ 5.9.3
+ 1.9.3
+ 4.9.0
5.3.2
2.11.0
${jetty.version}
- 3.1.0
- 3.2.0
- 3.2.0
- 3.8.1
- 2.8.1
- 2.22.2
+ 3.2.0
+ 3.5.0
+ 3.3.1
+ 3.11.0
+ 2.15.0
+ 3.0.0
3.3.2
- 2.5.2
- 2.8.2
- 3.9.1
- 3.1.2
- 3.1.2
- 9.0.1
+ 3.1.1
+ 3.1.1
+ 3.12.1
+ 3.4.3
+ 3.2.2
+ 10.10.0
2.10
${jetty.version}
${jetty.version}
- 1.5.0
- 3.3.1
+ 1.5.1
+ 3.5.0
@@ -123,13 +126,6 @@
${jetty-annotations.version}
provided
-
-
- org.apache.xmlgraphics
- batik-all
- ${batik-all.version}
- pom
-
org.scilab.forge
@@ -146,14 +142,35 @@
jlatexmath-font-cyrillic
${jlatexmath-font-cyrillic.version}
-
+
+
+
+ org.apache.xmlgraphics
+ batik-all
+ ${batik-all.version}
+ pom
+
+
+
+ org.apache.xmlgraphics
+ fop
+ ${fop.version}
+ pom
+
+
- junit
- junit
+ org.junit.jupiter
+ junit-jupiter-api
${junit.version}
test
+
+ org.junit.platform
+ junit-platform-suite-api
+ ${junit-suite.version}
+ test
+
org.seleniumhq.selenium
selenium-java
@@ -178,15 +195,6 @@
${jetty-server.version}
test
-
-
-
-
- org.apache.xmlgraphics
- fop
- 2.7
- pom
-
@@ -201,7 +209,7 @@
maven-dependency-plugin
${maven-dependency-plugin.version}
-
+
maven-resources-plugin
${maven-resources-plugin.version}
diff --git a/src/main/config/rules.xml b/src/main/config/rules.xml
index b69193d..6a7fe6f 100644
--- a/src/main/config/rules.xml
+++ b/src/main/config/rules.xml
@@ -14,6 +14,7 @@
(?i).*RC(?:-?\d+)?
(?i).*CR(?:-?\d+)?
(?i).*M(?:-?\d+)?
+ (?i).*-dev((?:-?\d+)|(?:\.20\d{6}))?
diff --git a/src/test/java/net/sourceforge/plantuml/servlet/AllTests.java b/src/test/java/net/sourceforge/plantuml/servlet/AllTests.java
index c0c2d8f..8a4fd21 100644
--- a/src/test/java/net/sourceforge/plantuml/servlet/AllTests.java
+++ b/src/test/java/net/sourceforge/plantuml/servlet/AllTests.java
@@ -1,28 +1,22 @@
package net.sourceforge.plantuml.servlet;
-import junit.framework.Test;
-import junit.framework.TestSuite;
+import org.junit.platform.suite.api.SelectClasses;
+import org.junit.platform.suite.api.Suite;
-public class AllTests extends TestSuite {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- // $JUnit-BEGIN$
- suite.addTestSuite(TestAsciiArt.class);
- suite.addTestSuite(TestAsciiCoder.class);
- suite.addTestSuite(TestCharset.class);
- suite.addTestSuite(TestCheck.class);
- suite.addTestSuite(TestEPS.class);
- suite.addTestSuite(TestImage.class);
- suite.addTestSuite(TestLanguage.class);
- suite.addTestSuite(TestMap.class);
- suite.addTestSuite(TestMultipageUml.class);
- suite.addTestSuite(TestOldProxy.class);
- suite.addTestSuite(TestProxy.class);
- suite.addTestSuite(TestSVG.class);
- suite.addTestSuite(TestWebUI.class);
- // $JUnit-END$
- return suite;
- }
-
-}
+@Suite
+@SelectClasses({
+ TestAsciiArt.class,
+ TestAsciiCoder.class,
+ TestCharset.class,
+ TestCheck.class,
+ TestEPS.class,
+ TestImage.class,
+ TestLanguage.class,
+ TestMap.class,
+ TestMultipageUml.class,
+ TestOldProxy.class,
+ TestProxy.class,
+ TestSVG.class,
+ TestWebUI.class
+})
+public class AllTests {}
diff --git a/src/test/java/net/sourceforge/plantuml/servlet/TestAsciiArt.java b/src/test/java/net/sourceforge/plantuml/servlet/TestAsciiArt.java
index 6ebf2b2..7cd1939 100644
--- a/src/test/java/net/sourceforge/plantuml/servlet/TestAsciiArt.java
+++ b/src/test/java/net/sourceforge/plantuml/servlet/TestAsciiArt.java
@@ -4,6 +4,9 @@ import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
import net.sourceforge.plantuml.servlet.utils.TestUtils;
import net.sourceforge.plantuml.servlet.utils.WebappTestCase;
@@ -13,21 +16,22 @@ public class TestAsciiArt extends WebappTestCase {
/**
* Verifies the generation of the ascii art for the Bob -> Alice sample
*/
+ @Test
public void testSimpleSequenceDiagram() throws IOException {
final URL url = new URL(getServerUrl() + "/txt/" + TestUtils.SEQBOB);
final URLConnection conn = url.openConnection();
// Analyze response
// Verifies the Content-Type header
- assertEquals(
- "Response content type is not TEXT PLAIN or UTF-8",
+ Assertions.assertEquals(
"text/plain;charset=utf-8",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not TEXT PLAIN or UTF-8"
);
// Get the content and verify its size
String diagram = getContentText(conn);
int diagramLen = diagram.length();
- assertTrue(diagramLen > 200);
- assertTrue(diagramLen < 250);
+ Assertions.assertTrue(diagramLen > 200);
+ Assertions.assertTrue(diagramLen < 250);
}
}
diff --git a/src/test/java/net/sourceforge/plantuml/servlet/TestAsciiCoder.java b/src/test/java/net/sourceforge/plantuml/servlet/TestAsciiCoder.java
index 802ba30..e65af49 100644
--- a/src/test/java/net/sourceforge/plantuml/servlet/TestAsciiCoder.java
+++ b/src/test/java/net/sourceforge/plantuml/servlet/TestAsciiCoder.java
@@ -6,6 +6,9 @@ import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
import net.sourceforge.plantuml.servlet.utils.TestUtils;
import net.sourceforge.plantuml.servlet.utils.WebappTestCase;
@@ -15,24 +18,26 @@ public class TestAsciiCoder extends WebappTestCase {
/**
* Verifies the decoding for the Bob -> Alice sample
*/
+ @Test
public void testBobAliceSampleDiagramDecoding() throws IOException {
final URL url = new URL(getServerUrl() + "/coder/" + TestUtils.SEQBOB);
final URLConnection conn = url.openConnection();
// Analyze response
// Verifies the Content-Type header
- assertEquals(
- "Response content type is not TEXT PLAIN or UTF-8",
+ Assertions.assertEquals(
"text/plain;charset=utf-8",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not TEXT PLAIN or UTF-8"
);
// Get and verify the content
final String diagram = getContentText(conn);
- assertEquals(TestUtils.SEQBOBCODE, diagram);
+ Assertions.assertEquals(TestUtils.SEQBOBCODE, diagram);
}
/**
* Verifies the encoding for the Bob -> Alice sample
*/
+ @Test
public void testBobAliceSampleDiagramEncoding() throws IOException {
final URL url = new URL(getServerUrl() + "/coder");
final HttpURLConnection conn = (HttpURLConnection)url.openConnection();
@@ -45,20 +50,16 @@ public class TestAsciiCoder extends WebappTestCase {
}
// Analyze response
// HTTP response 200
- assertEquals(
- "Bad HTTP status received",
- 200,
- conn.getResponseCode()
- );
+ Assertions.assertEquals(200, conn.getResponseCode(), "Bad HTTP status received");
// Verifies the Content-Type header
- assertEquals(
- "Response content type is not TEXT PLAIN or UTF-8",
+ Assertions.assertEquals(
"text/plain;charset=utf-8",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not TEXT PLAIN or UTF-8"
);
// Get the content and verify its size
final String diagram = getContentText(conn.getInputStream());
- assertEquals(TestUtils.SEQBOB, diagram);
+ Assertions.assertEquals(TestUtils.SEQBOB, diagram);
}
}
diff --git a/src/test/java/net/sourceforge/plantuml/servlet/TestCharset.java b/src/test/java/net/sourceforge/plantuml/servlet/TestCharset.java
index 7c0bdd6..7683e85 100644
--- a/src/test/java/net/sourceforge/plantuml/servlet/TestCharset.java
+++ b/src/test/java/net/sourceforge/plantuml/servlet/TestCharset.java
@@ -4,6 +4,9 @@ import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
import net.sourceforge.plantuml.servlet.utils.WebappTestCase;
@@ -12,25 +15,27 @@ public class TestCharset extends WebappTestCase {
/**
* Verifies the preservation of unicode characters for the "Bob -> Alice : hell‽" sample
*/
+ @Test
public void testUnicodeSupport() throws IOException {
final URL url = new URL(getServerUrl() + "/txt/SyfFKj2rKt3CoKnELR1Io4ZDoNdKi1S0");
final URLConnection conn = url.openConnection();
// Analyze response
// Verifies the Content-Type header
- assertEquals(
- "Response content type is not TEXT PLAIN or UTF-8",
+ Assertions.assertEquals(
"text/plain;charset=utf-8",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not TEXT PLAIN or UTF-8"
);
// Get the content and verify that the interrobang unicode character is present
String diagram = getContentText(conn);
- assertTrue("Interrobang unicode character is not preserved", diagram.contains("‽"));
+ Assertions.assertTrue(diagram.contains("‽"), "Interrobang unicode character is not preserved");
}
/**
* Verifies the preservation of unicode characters for the
* "participant Bob [[http://www.snow.com/❄]]\nBob -> Alice" sample
*/
+ @Test
public void testUnicodeInCMap() throws IOException {
final URL url = new URL(
getServerUrl() +
@@ -39,14 +44,14 @@ public class TestCharset extends WebappTestCase {
final URLConnection conn = url.openConnection();
// Analyze response
// Verifies the Content-Type header
- assertEquals(
- "Response content type is not TEXT PLAIN or UTF-8",
+ Assertions.assertEquals(
"text/plain;charset=utf-8",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not TEXT PLAIN or UTF-8"
);
// Get the content and verify that the snow unicode character is present
String map = getContentText(conn);
- assertTrue("Snow unicode character is not preserved", map.contains("❄"));
+ Assertions.assertTrue(map.contains("❄"), "Snow unicode character is not preserved");
}
}
diff --git a/src/test/java/net/sourceforge/plantuml/servlet/TestCheck.java b/src/test/java/net/sourceforge/plantuml/servlet/TestCheck.java
index 71a6042..5233d16 100644
--- a/src/test/java/net/sourceforge/plantuml/servlet/TestCheck.java
+++ b/src/test/java/net/sourceforge/plantuml/servlet/TestCheck.java
@@ -4,6 +4,9 @@ import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
import net.sourceforge.plantuml.servlet.utils.TestUtils;
import net.sourceforge.plantuml.servlet.utils.WebappTestCase;
@@ -14,36 +17,38 @@ public class TestCheck extends WebappTestCase {
* Verifies the generation of a syntax check for the following sample:
* Bob -> Alice : hello
*/
+ @Test
public void testCorrectSequenceDiagram() throws IOException {
final URL url = new URL(getServerUrl() + "/check/" + TestUtils.SEQBOB);
final URLConnection conn = url.openConnection();
// Analyze response
// Verifies the Content-Type header
- assertEquals(
- "Response content type is not TEXT PLAIN or UTF-8",
+ Assertions.assertEquals(
"text/plain;charset=utf-8",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not TEXT PLAIN or UTF-8"
);
// Get the content, check its first characters and verify its size
String checkResult = getContentText(conn);
- assertTrue(
- "Response content is not starting with (2 participants)",
- checkResult.startsWith("(2 participants)")
+ Assertions.assertTrue(
+ checkResult.startsWith("(2 participants)"),
+ "Response content is not starting with (2 participants)"
);
int checkLen = checkResult.length();
- assertTrue(checkLen > 1);
- assertTrue(checkLen < 100);
+ Assertions.assertTrue(checkLen > 1);
+ Assertions.assertTrue(checkLen < 100);
}
/**
* Check the syntax of an invalid sequence diagram :
* Bob -
*/
+ @Test
public void testWrongDiagramSyntax() throws IOException {
final URL url = new URL(getServerUrl() + "/check/SyfFKj050000");
// Analyze response
String checkResult = getContentText(url);
- assertTrue("Response is not an error", checkResult.startsWith("(Error)"));
+ Assertions.assertTrue(checkResult.startsWith("(Error)"), "Response is not an error");
}
}
diff --git a/src/test/java/net/sourceforge/plantuml/servlet/TestEPS.java b/src/test/java/net/sourceforge/plantuml/servlet/TestEPS.java
index 08c3ba6..1fb0ca6 100644
--- a/src/test/java/net/sourceforge/plantuml/servlet/TestEPS.java
+++ b/src/test/java/net/sourceforge/plantuml/servlet/TestEPS.java
@@ -4,6 +4,9 @@ import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
import net.sourceforge.plantuml.servlet.utils.TestUtils;
import net.sourceforge.plantuml.servlet.utils.WebappTestCase;
@@ -13,21 +16,22 @@ public class TestEPS extends WebappTestCase {
/**
* Verifies the generation of the EPS for the Bob -> Alice sample
*/
+ @Test
public void testSimpleSequenceDiagram() throws IOException {
final URL url = new URL(getServerUrl() + "/eps/" + TestUtils.SEQBOB);
final URLConnection conn = url.openConnection();
// Analyze response
// Verifies the Content-Type header
- assertEquals(
- "Response content type is not EPS",
+ Assertions.assertEquals(
"application/postscript",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not EPS"
);
// Get the content and verify its size
String diagram = getContentText(conn);
int diagramLen = diagram.length();
- assertTrue(diagramLen > 7000);
- assertTrue(diagramLen < 10000);
+ Assertions.assertTrue(diagramLen > 7000);
+ Assertions.assertTrue(diagramLen < 10000);
}
}
diff --git a/src/test/java/net/sourceforge/plantuml/servlet/TestImage.java b/src/test/java/net/sourceforge/plantuml/servlet/TestImage.java
index b4222b3..9ecc40b 100644
--- a/src/test/java/net/sourceforge/plantuml/servlet/TestImage.java
+++ b/src/test/java/net/sourceforge/plantuml/servlet/TestImage.java
@@ -8,6 +8,9 @@ import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
import net.sourceforge.plantuml.servlet.utils.TestUtils;
import net.sourceforge.plantuml.servlet.utils.WebappTestCase;
@@ -17,44 +20,46 @@ public class TestImage extends WebappTestCase {
/**
* Verifies the generation of the version image from an encoded URL
*/
+ @Test
public void testVersionImage() throws IOException {
final URL url = new URL(getServerUrl() + "/png/" + TestUtils.VERSION);
final URLConnection conn = url.openConnection();
// Analyze response
// Verifies the Content-Type header
- assertEquals(
- "Response content type is not PNG",
+ Assertions.assertEquals(
"image/png",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not PNG"
);
// Get the image and verify its size
byte[] inMemoryImage = getContentAsBytes(conn);
int diagramLen = inMemoryImage.length;
- assertTrue(diagramLen > 10000);
- assertTrue(diagramLen < 20000);
+ Assertions.assertTrue(diagramLen > 10000);
+ Assertions.assertTrue(diagramLen < 20000);
}
/**
* Verifies that the HTTP header of a diagram incites the browser to cache it.
*/
+ @Test
public void testDiagramHttpHeader() throws IOException, ParseException {
final URL url = new URL(getServerUrl() + "/png/" + TestUtils.SEQBOB);
final URLConnection conn = url.openConnection();
// Analyze response
// Verifies the Content-Type header
- assertEquals(
- "Response content type is not PNG",
+ Assertions.assertEquals(
"image/png",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not PNG"
);
// Verifies the availability of the Expires entry in the response header
- assertNotNull(conn.getHeaderField("Expires"));
+ Assertions.assertNotNull(conn.getHeaderField("Expires"));
// Verifies the availability of the Last-Modified entry in the response header
- assertNotNull(conn.getHeaderField("Last-Modified"));
+ Assertions.assertNotNull(conn.getHeaderField("Last-Modified"));
// Verifies the Last-Modified value is in the past
SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss ZZZ", Locale.ENGLISH);
Date lastModified = format.parse(conn.getHeaderField("Last-Modified"));
- assertTrue("Last-Modified is not in the past", lastModified.before(new Date()));
+ Assertions.assertTrue(lastModified.before(new Date()), "Last-Modified is not in the past");
// Consume the response but do nothing with it
getContentAsBytes(conn);
}
@@ -62,15 +67,16 @@ public class TestImage extends WebappTestCase {
/**
* Verifies that the HTTP header of a diagram incites the browser to cache it.
*/
+ @Test
public void testOldImgURL() throws IOException {
final URL url = new URL(getServerUrl() + "/img/" + TestUtils.SEQBOB);
final URLConnection conn = url.openConnection();
// Analyze response
// Verifies the Content-Type header
- assertEquals(
- "Response content type is not PNG",
+ Assertions.assertEquals(
"image/png",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not PNG"
);
// Consume the response but do nothing with it
getContentAsBytes(conn);
diff --git a/src/test/java/net/sourceforge/plantuml/servlet/TestLanguage.java b/src/test/java/net/sourceforge/plantuml/servlet/TestLanguage.java
index cca15eb..e34d66a 100644
--- a/src/test/java/net/sourceforge/plantuml/servlet/TestLanguage.java
+++ b/src/test/java/net/sourceforge/plantuml/servlet/TestLanguage.java
@@ -3,6 +3,9 @@ package net.sourceforge.plantuml.servlet;
import java.io.IOException;
import java.net.URL;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
import net.sourceforge.plantuml.servlet.utils.WebappTestCase;
@@ -11,10 +14,11 @@ public class TestLanguage extends WebappTestCase {
/**
* Tests that the language for the current PlantUML server can be obtained through HTTP
*/
+ @Test
public void testRetrieveLanguage() throws IOException {
final URL url = new URL(getServerUrl() + "/language");
String languageText = getContentText(url);
- assertTrue("Language contains @startuml", languageText.indexOf("@startuml") > 0);
+ Assertions.assertTrue(languageText.indexOf("@startuml") > 0, "Language contains @startuml");
}
}
diff --git a/src/test/java/net/sourceforge/plantuml/servlet/TestMap.java b/src/test/java/net/sourceforge/plantuml/servlet/TestMap.java
index 0bbf0e5..dcdec87 100644
--- a/src/test/java/net/sourceforge/plantuml/servlet/TestMap.java
+++ b/src/test/java/net/sourceforge/plantuml/servlet/TestMap.java
@@ -4,6 +4,9 @@ import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
import net.sourceforge.plantuml.servlet.utils.TestUtils;
import net.sourceforge.plantuml.servlet.utils.WebappTestCase;
@@ -16,6 +19,7 @@ public class TestMap extends WebappTestCase {
* participant Bob [[http://www.yahoo.com]]
* Bob -> Alice : [[http://www.google.com]] hello
*/
+ @Test
public void testSimpleSequenceDiagram() throws IOException {
final URL url = new URL(
getServerUrl() +
@@ -24,30 +28,31 @@ public class TestMap extends WebappTestCase {
final URLConnection conn = url.openConnection();
// Analyze response
// Verifies the Content-Type header
- assertEquals(
- "Response content type is not TEXT PLAIN or UTF-8",
+ Assertions.assertEquals(
"text/plain;charset=utf-8",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not TEXT PLAIN or UTF-8"
);
// Get the content, check its first characters and verify its size
String diagram = getContentText(conn);
- assertTrue(
- "Response content is not starting with
- assertTrue(
- "Response doesn't match shape",
- map.matches("^\n*$")
+ Assertions.assertTrue(
+ map.matches("^\n*$"),
+ "Response doesn't match shape"
);
}
@@ -71,20 +76,21 @@ public class TestMap extends WebappTestCase {
* Check the empty MAP of a sequence diagram without link
* This test uses the simple Bob -> Alice
*/
+ @Test
public void testSequenceDiagramWithoutLink() throws IOException {
final URL url = new URL(getServerUrl() + "/map/" + TestUtils.SEQBOB);
final URLConnection conn = url.openConnection();
// Analyze response
// Verifies the Content-Type header
- assertEquals(
- "Response content type is not TEXT PLAIN or UTF-8",
+ Assertions.assertEquals(
"text/plain;charset=utf-8",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not TEXT PLAIN or UTF-8"
);
// Get the data contained in the XML
String diagram = getContentText(conn);
int diagramLen = diagram.length();
- assertEquals(0, diagramLen);
+ Assertions.assertEquals(0, diagramLen);
}
}
diff --git a/src/test/java/net/sourceforge/plantuml/servlet/TestMultipageUml.java b/src/test/java/net/sourceforge/plantuml/servlet/TestMultipageUml.java
index 5494462..3f3e35b 100644
--- a/src/test/java/net/sourceforge/plantuml/servlet/TestMultipageUml.java
+++ b/src/test/java/net/sourceforge/plantuml/servlet/TestMultipageUml.java
@@ -1,11 +1,12 @@
package net.sourceforge.plantuml.servlet;
-import static org.junit.Assert.assertNotEquals;
-
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
import net.sourceforge.plantuml.servlet.utils.TestUtils;
import net.sourceforge.plantuml.servlet.utils.WebappTestCase;
@@ -15,182 +16,190 @@ public class TestMultipageUml extends WebappTestCase {
/**
* Verifies that an multipage diagram renders correct given index (PNG).
*/
+ @Test
public void testPngIndexPage() throws IOException {
final URL url = new URL(getServerUrl() + "/png/1/" + TestUtils.SEQMULTIPAGE);
final HttpURLConnection conn = (HttpURLConnection)url.openConnection();
// Analyze response
// Verifies HTTP status code and the Content-Type
- assertEquals("Bad HTTP status received", 200, conn.getResponseCode());
- assertEquals(
- "Response content type is not PNG",
+ Assertions.assertEquals(200, conn.getResponseCode(), "Bad HTTP status received");
+ Assertions.assertEquals(
"image/png",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not PNG"
);
// Get the image and verify its size
byte[] inMemoryImage = getContentAsBytes(conn);
int diagramLen = inMemoryImage.length; // 7525
- assertTrue(diagramLen > 6000);
- assertTrue(diagramLen < 9000);
+ Assertions.assertTrue(diagramLen > 6000);
+ Assertions.assertTrue(diagramLen < 9000);
}
/**
* Verifies that an multipage diagram renders correct even if no index is specified (PNG).
*/
+ @Test
public void testPngIndexPageNoIndex() throws IOException {
final URL url = new URL(getServerUrl() + "/png/" + TestUtils.SEQMULTIPAGE);
final HttpURLConnection conn = (HttpURLConnection)url.openConnection();
// Analyze response
// Verifies HTTP status code and the Content-Type
- assertEquals("Bad HTTP status received", 200, conn.getResponseCode());
- assertEquals(
- "Response content type is not PNG",
+ Assertions.assertEquals(200, conn.getResponseCode(), "Bad HTTP status received");
+ Assertions.assertEquals(
"image/png",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not PNG"
);
// Get the image and verify its size
byte[] inMemoryImage = getContentAsBytes(conn);
int diagramLen = inMemoryImage.length; // 4196
- assertTrue(diagramLen > 3000);
- assertTrue(diagramLen < 5000);
+ Assertions.assertTrue(diagramLen > 3000);
+ Assertions.assertTrue(diagramLen < 5000);
}
/**
* Verifies that an multipage diagram renders correct given index (SVG).
*/
+ @Test
public void testSvgIndexPage() throws IOException {
final URL url = new URL(getServerUrl() + "/svg/1/" + TestUtils.SEQMULTIPAGE);
final HttpURLConnection conn = (HttpURLConnection)url.openConnection();
// Analyze response
// Verifies HTTP status code and the Content-Type
- assertEquals("Bad HTTP status received", 200, conn.getResponseCode());
- assertEquals(
- "Response content type is not SVG",
+ Assertions.assertEquals(200, conn.getResponseCode(), "Bad HTTP status received");
+ Assertions.assertEquals(
"image/svg+xml",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not SVG"
);
// Get the content and verify its size
String diagram = getContentText(conn);
int diagramLen = diagram.length();
- assertTrue(diagramLen > 4500);
- assertTrue(diagramLen < 6000);
+ Assertions.assertTrue(diagramLen > 4500);
+ Assertions.assertTrue(diagramLen < 6000);
}
/**
* Verifies that an multipage diagram renders correct even if no index is specified (SVG).
*/
+ @Test
public void testSvgIndexPageNoIndex() throws IOException {
final URL url = new URL(getServerUrl() + "/svg/" + TestUtils.SEQMULTIPAGE);
final HttpURLConnection conn = (HttpURLConnection)url.openConnection();
// Analyze response
// Verifies HTTP status code and the Content-Type
- assertEquals("Bad HTTP status received", 200, conn.getResponseCode());
- assertEquals(
- "Response content type is not SVG",
+ Assertions.assertEquals(200, conn.getResponseCode(), "Bad HTTP status received");
+ Assertions.assertEquals(
"image/svg+xml",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not SVG"
);
// Get the content and verify its size
String diagram = getContentText(conn);
int diagramLen = diagram.length();
- assertTrue(diagramLen > 1500);
- assertTrue(diagramLen < 4000);
+ Assertions.assertTrue(diagramLen > 1500);
+ Assertions.assertTrue(diagramLen < 4000);
}
/**
* Verifies that an multipage diagram renders correct given index (AsciiArt).
*/
+ @Test
public void testAsciiArtIndexPage() throws IOException {
final URL url = new URL(getServerUrl() + "/txt/1/" + TestUtils.SEQMULTIPAGE);
final HttpURLConnection conn = (HttpURLConnection)url.openConnection();
// Analyze response
// Verifies HTTP status code and the Content-Type
- assertEquals("Bad HTTP status received", 200, conn.getResponseCode());
- assertEquals(
- "Response content type is not TEXT PLAIN or UTF-8",
+ Assertions.assertEquals(200, conn.getResponseCode(), "Bad HTTP status received");
+ Assertions.assertEquals(
"text/plain;charset=utf-8",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not TEXT PLAIN or UTF-8"
);
// Get the content and verify its size
String diagram = getContentText(conn);
int diagramLen = diagram.length();
- assertNotEquals(0, diagramLen);
+ Assertions.assertNotEquals(0, diagramLen);
// BUG/Missing Feature: plantuml renders always whole AsciiArt diagram
- //assertTrue(diagramLen > ??);
- //assertTrue(diagramLen < ??);
+ //Assertions.assertTrue(diagramLen > ??);
+ //Assertions.assertTrue(diagramLen < ??);
}
/**
* Verifies that an multipage diagram renders correct even if no index is specified (AsciiArt).
*/
+ @Test
public void testAsciiArtIndexPageNoIndex() throws IOException {
final URL url = new URL(getServerUrl() + "/txt/" + TestUtils.SEQMULTIPAGE);
final HttpURLConnection conn = (HttpURLConnection)url.openConnection();
// Analyze response
// Verifies HTTP status code and the Content-Type
- assertEquals("Bad HTTP status received", 200, conn.getResponseCode());
- assertEquals(
- "Response content type is not TEXT PLAIN or UTF-8",
+ Assertions.assertEquals(200, conn.getResponseCode(), "Bad HTTP status received");
+ Assertions.assertEquals(
"text/plain;charset=utf-8",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not TEXT PLAIN or UTF-8"
);
// Get the content and verify its size
String diagram = getContentText(conn);
int diagramLen = diagram.length();
- assertNotEquals(0, diagramLen);
+ Assertions.assertNotEquals(0, diagramLen);
// BUG/Missing Feature: plantuml renders always whole AsciiArt diagram
- //assertTrue(diagramLen > ??);
- //assertTrue(diagramLen < ??);
+ //Assertions.assertTrue(diagramLen > ??);
+ //Assertions.assertTrue(diagramLen < ??);
}
/**
* Verifies that an multipage diagram renders correct given index (Map).
*/
+ @Test
public void testMapIndexPage() throws IOException {
final URL url = new URL(getServerUrl() + "/map/1/" + TestUtils.SEQMULTIPAGE);
final HttpURLConnection conn = (HttpURLConnection)url.openConnection();
// Analyze response
// Verifies HTTP status code and the Content-Type
- assertEquals("Bad HTTP status received", 200, conn.getResponseCode());
- assertEquals(
- "Response content type is not TEXT PLAIN or UTF-8",
+ Assertions.assertEquals(200, conn.getResponseCode(), "Bad HTTP status received");
+ Assertions.assertEquals(
"text/plain;charset=utf-8",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not TEXT PLAIN or UTF-8"
);
// Get the data contained in the XML
String map = getContentText(url);
// map contains "tel:0123456789"
- assertTrue(
- "Response does not contain 'tel:0123456789'",
- map.contains("tel:0123456789")
+ Assertions.assertTrue(
+ map.contains("tel:0123456789"),
+ "Response does not contain 'tel:0123456789'"
);
// Verify shape:
//
- assertTrue(
- "Response doesn't match shape",
- map.matches("^\n*$")
+ Assertions.assertTrue(
+ map.matches("^\n*$"),
+ "Response doesn't match shape"
);
}
/**
* Verifies that an multipage diagram renders correct even if no index is specified (Map).
*/
+ @Test
public void testMapIndexPageNoIndex() throws IOException {
final URL url = new URL(getServerUrl() + "/map/" + TestUtils.SEQMULTIPAGE);
final HttpURLConnection conn = (HttpURLConnection)url.openConnection();
// Analyze response
// Verifies HTTP status code and the Content-Type
- assertEquals("Bad HTTP status received", 200, conn.getResponseCode());
- assertEquals(
- "Response content type is not TEXT PLAIN or UTF-8",
+ Assertions.assertEquals(200, conn.getResponseCode(), "Bad HTTP status received");
+ Assertions.assertEquals(
"text/plain;charset=utf-8",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not TEXT PLAIN or UTF-8"
);
// Get the data contained in the XML
String diagram = getContentText(conn);
int diagramLen = diagram.length();
- assertEquals(0, diagramLen);
+ Assertions.assertEquals(0, diagramLen);
}
}
diff --git a/src/test/java/net/sourceforge/plantuml/servlet/TestOldProxy.java b/src/test/java/net/sourceforge/plantuml/servlet/TestOldProxy.java
index 0fb300d..54c6599 100644
--- a/src/test/java/net/sourceforge/plantuml/servlet/TestOldProxy.java
+++ b/src/test/java/net/sourceforge/plantuml/servlet/TestOldProxy.java
@@ -4,6 +4,9 @@ import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
import net.sourceforge.plantuml.servlet.utils.WebappTestCase;
@@ -12,59 +15,61 @@ public class TestOldProxy extends WebappTestCase {
/**
* Verifies the proxified reception of the default Bob and Alice diagram
*/
+ @Test
public void testDefaultProxy() throws IOException {
final URL url = new URL(getServerUrl() + "/proxy/" + getTestDiagramUrl());
final HttpURLConnection conn = (HttpURLConnection)url.openConnection();
// Analyze response
// Verifies HTTP status code and the Content-Type
- assertEquals("Bad HTTP status received", 200, conn.getResponseCode());
- assertEquals(
- "Response content type is not PNG",
+ Assertions.assertEquals(200, conn.getResponseCode(), "Bad HTTP status received");
+ Assertions.assertEquals(
"image/png",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not PNG"
);
// Get the image and verify its size (~2000 bytes)
byte[] inMemoryImage = getContentAsBytes(conn);
int diagramLen = inMemoryImage.length;
- assertTrue(diagramLen > 2000);
- assertTrue(diagramLen < 3000);
+ Assertions.assertTrue(diagramLen > 2000);
+ Assertions.assertTrue(diagramLen < 3000);
}
+ /**
+ * Verifies the proxified reception of the default Bob and Alice diagram in a specific format (SVG)
+ */
+ @Test
public void testProxyWithFormat() throws IOException {
final URL url = new URL(getServerUrl() + "/proxy/svg/" + getTestDiagramUrl());
final HttpURLConnection conn = (HttpURLConnection)url.openConnection();
// Analyze response
// Verifies HTTP status code and the Content-Type
- assertEquals("Bad HTTP status received", 200, conn.getResponseCode());
- assertEquals(
- "Response content type is not SVG",
+ Assertions.assertEquals(200, conn.getResponseCode(), "Bad HTTP status received");
+ Assertions.assertEquals(
"image/svg+xml",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not SVG"
);
// Get the content and verify its size
String diagram = getContentText(conn);
int diagramLen = diagram.length();
- assertTrue(diagramLen > 1000);
- assertTrue(diagramLen < 3000);
+ Assertions.assertTrue(diagramLen > 1000);
+ Assertions.assertTrue(diagramLen < 3000);
}
/**
* Verifies that the HTTP header of a diagram incites the browser to cache it.
*/
+ @Test
public void testInvalidUrl() throws IOException {
final URL url = new URL(getServerUrl() + "/proxy/invalidURL");
final HttpURLConnection conn = (HttpURLConnection)url.openConnection();
// Analyze response
// Check if status code is 400
- assertEquals(
- "Bad HTTP status received",
- 400,
- conn.getResponseCode()
- );
+ Assertions.assertEquals(400, conn.getResponseCode(), "Bad HTTP status received");
// Check error message
- assertTrue(
- "Response is not malformed URL",
- getContentText(conn.getErrorStream()).contains("URL malformed.")
+ Assertions.assertTrue(
+ getContentText(conn.getErrorStream()).contains("URL malformed."),
+ "Response is not malformed URL"
);
}
diff --git a/src/test/java/net/sourceforge/plantuml/servlet/TestProxy.java b/src/test/java/net/sourceforge/plantuml/servlet/TestProxy.java
index b95ff89..a56ecb5 100644
--- a/src/test/java/net/sourceforge/plantuml/servlet/TestProxy.java
+++ b/src/test/java/net/sourceforge/plantuml/servlet/TestProxy.java
@@ -4,6 +4,9 @@ import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
import net.sourceforge.plantuml.servlet.utils.WebappTestCase;
@@ -12,103 +15,104 @@ public class TestProxy extends WebappTestCase {
/**
* Verifies the proxified reception of the default Bob and Alice diagram
*/
+ @Test
public void testDefaultProxy() throws IOException {
final URL url = new URL(getServerUrl() + "/proxy?src=" + getTestDiagramUrl());
final HttpURLConnection conn = (HttpURLConnection)url.openConnection();
// Analyze response
// Verifies HTTP status code and the Content-Type
- assertEquals("Bad HTTP status received", 200, conn.getResponseCode());
- assertEquals(
- "Response content type is not PNG",
+ Assertions.assertEquals(200, conn.getResponseCode(), "Bad HTTP status received");
+ Assertions.assertEquals(
"image/png",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not PNG"
);
// Get the image and verify its size (~2000 bytes)
byte[] inMemoryImage = getContentAsBytes(conn);
int diagramLen = inMemoryImage.length;
- assertTrue(diagramLen > 2000);
- assertTrue(diagramLen < 3000);
+ Assertions.assertTrue(diagramLen > 2000);
+ Assertions.assertTrue(diagramLen < 3000);
}
/**
* Verifies the proxified reception of the default Bob and Alice diagram with defined format.
*/
+ @Test
public void testProxyWithFormat() throws IOException {
final URL url = new URL(getServerUrl() + "/proxy?fmt=svg&src=" + getTestDiagramUrl());
final HttpURLConnection conn = (HttpURLConnection)url.openConnection();
// Analyze response
// Verifies HTTP status code and the Content-Type
- assertEquals("Bad HTTP status received", 200, conn.getResponseCode());
- assertEquals(
- "Response content type is not SVG",
+ Assertions.assertEquals(200, conn.getResponseCode(), "Bad HTTP status received");
+ Assertions.assertEquals(
"image/svg+xml",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not SVG"
);
// Get the content and verify its size
String diagram = getContentText(conn);
int diagramLen = diagram.length();
- assertTrue(diagramLen > 1500);
- assertTrue(diagramLen < 3000);
+ Assertions.assertTrue(diagramLen > 1500);
+ Assertions.assertTrue(diagramLen < 3000);
}
/**
* Verifies the proxified reception of the default Bob and Alice diagram with defined format and format (idx=0).
*/
+ @Test
public void testProxyWithFormatIdx0() throws IOException {
final URL url = new URL(getServerUrl() + "/proxy?fmt=svg&idx=0&src=" + getTestDiagramUrl());
final HttpURLConnection conn = (HttpURLConnection)url.openConnection();
// Analyze response
// Verifies HTTP status code and the Content-Type
- assertEquals("Bad HTTP status received", 200, conn.getResponseCode());
- assertEquals(
- "Response content type is not SVG",
+ Assertions.assertEquals(200, conn.getResponseCode(), "Bad HTTP status received");
+ Assertions.assertEquals(
"image/svg+xml",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not SVG"
);
// Get the content and verify its size
String diagram = getContentText(conn);
int diagramLen = diagram.length();
- assertTrue(diagramLen > 1500);
- assertTrue(diagramLen < 3000);
+ Assertions.assertTrue(diagramLen > 1500);
+ Assertions.assertTrue(diagramLen < 3000);
}
/**
* Verifies the proxified reception of the default Bob and Alice diagram with defined format and format (idx=1).
*/
+ @Test
public void testProxyWithFormatIdx1() throws IOException {
final URL url = new URL(getServerUrl() + "/proxy?fmt=svg&idx=1&src=" + getTestDiagramUrl());
final HttpURLConnection conn = (HttpURLConnection)url.openConnection();
// Analyze response
// Verifies HTTP status code and the Content-Type
- assertEquals("Bad HTTP status received", 200, conn.getResponseCode());
- assertEquals(
- "Response content type is not SVG",
+ Assertions.assertEquals(200, conn.getResponseCode(), "Bad HTTP status received");
+ Assertions.assertEquals(
"image/svg+xml",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not SVG"
);
// Get the content and verify its size
String diagram = getContentText(conn);
int diagramLen = diagram.length();
- assertTrue(diagramLen > 5000);
- assertTrue(diagramLen < 6000);
+ Assertions.assertTrue(diagramLen > 5000);
+ Assertions.assertTrue(diagramLen < 6000);
}
/**
* Verifies that the HTTP header of a diagram incites the browser to cache it.
*/
+ @Test
public void testInvalidUrl() throws IOException {
final URL url = new URL(getServerUrl() + "/proxy?src=invalidURL");
final HttpURLConnection conn = (HttpURLConnection)url.openConnection();
// Analyze response, it must be HTTP error 400
- assertEquals(
- "Bad HTTP status received",
- 400,
- conn.getResponseCode()
- );
+ Assertions.assertEquals(400, conn.getResponseCode(), "Bad HTTP status received");
// Check error message
- assertTrue(
- "Response is not malformed URL",
- getContentText(conn.getErrorStream()).contains("URL malformed.")
+ Assertions.assertTrue(
+ getContentText(conn.getErrorStream()).contains("URL malformed."),
+ "Response is not malformed URL"
);
}
diff --git a/src/test/java/net/sourceforge/plantuml/servlet/TestSVG.java b/src/test/java/net/sourceforge/plantuml/servlet/TestSVG.java
index 30406a8..9f78908 100644
--- a/src/test/java/net/sourceforge/plantuml/servlet/TestSVG.java
+++ b/src/test/java/net/sourceforge/plantuml/servlet/TestSVG.java
@@ -8,6 +8,9 @@ import java.net.URL;
import java.net.URLConnection;
import java.util.Scanner;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
import net.sourceforge.plantuml.servlet.utils.TestUtils;
import net.sourceforge.plantuml.servlet.utils.WebappTestCase;
@@ -17,26 +20,28 @@ public class TestSVG extends WebappTestCase {
/**
* Verifies the generation of the SVG for the Bob -> Alice sample
*/
+ @Test
public void testSimpleSequenceDiagram() throws IOException {
final URL url = new URL(getServerUrl() + "/svg/" + TestUtils.SEQBOB);
final URLConnection conn = url.openConnection();
// Analyze response
// Verifies the Content-Type header
- assertEquals(
- "Response content type is not SVG",
+ Assertions.assertEquals(
"image/svg+xml",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not SVG"
);
// Get the content and verify its size
String diagram = getContentText(conn);
int diagramLen = diagram.length();
- assertTrue(diagramLen > 1000);
- assertTrue(diagramLen < 3000);
+ Assertions.assertTrue(diagramLen > 1000);
+ Assertions.assertTrue(diagramLen < 3000);
}
/**
* Verifies the generation of the SVG for the Bob -> Alice sample
*/
+ @Test
public void testPostedSequenceDiagram() throws IOException {
final URL url = new URL(getServerUrl() + "/svg");
final HttpURLConnection conn = (HttpURLConnection)url.openConnection();
@@ -49,27 +54,24 @@ public class TestSVG extends WebappTestCase {
}
// Analyze response
// HTTP response 200
- assertEquals(
- "Bad HTTP status received",
- 200,
- conn.getResponseCode()
- );
+ Assertions.assertEquals(200, conn.getResponseCode(), "Bad HTTP status received");
// Verifies the Content-Type header
- assertEquals(
- "Response content type is not SVG",
+ Assertions.assertEquals(
"image/svg+xml",
- conn.getContentType().toLowerCase()
+ conn.getContentType().toLowerCase(),
+ "Response content type is not SVG"
);
// Get the content and verify its size
String diagram = getContentText(conn.getInputStream());
int diagramLen = diagram.length();
- assertTrue(diagramLen > 1000);
- assertTrue(diagramLen < 3000);
+ Assertions.assertTrue(diagramLen > 1000);
+ Assertions.assertTrue(diagramLen < 3000);
}
/**
* Verifies the generation of the SVG for the Bob -> Alice sample
*/
+ @Test
public void testPostedInvalidSequenceDiagram() throws IOException {
final URL url = new URL(getServerUrl() + "/svg");
final HttpURLConnection conn = (HttpURLConnection)url.openConnection();
@@ -82,16 +84,13 @@ public class TestSVG extends WebappTestCase {
}
// Analyze response
// HTTP response 400
- assertEquals(
- "Bad HTTP status received",
- 400,
- conn.getResponseCode()
- );
+ Assertions.assertEquals(400, conn.getResponseCode(), "Bad HTTP status received");
}
/**
* Check the content of the SVG
*/
+ @Test
public void testSequenceDiagramContent() throws IOException {
final URL url = new URL(getServerUrl() + "/svg/" + TestUtils.SEQBOB);
// Analyze response
@@ -112,8 +111,8 @@ public class TestSVG extends WebappTestCase {
aliceCounter++;
}
}
- assertTrue(bobCounter == 2);
- assertTrue(aliceCounter == 2);
+ Assertions.assertTrue(bobCounter == 2);
+ Assertions.assertTrue(aliceCounter == 2);
}
}
diff --git a/src/test/java/net/sourceforge/plantuml/servlet/TestWebUI.java b/src/test/java/net/sourceforge/plantuml/servlet/TestWebUI.java
index c075b50..1b76917 100644
--- a/src/test/java/net/sourceforge/plantuml/servlet/TestWebUI.java
+++ b/src/test/java/net/sourceforge/plantuml/servlet/TestWebUI.java
@@ -1,7 +1,7 @@
package net.sourceforge.plantuml.servlet;
-import static org.junit.Assert.assertNotEquals;
-
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.WebElement;
@@ -15,46 +15,49 @@ public class TestWebUI extends WebappUITestCase {
/**
* Verifies that the welcome page has exactly two form with the Bob --> Alice sample
*/
+ @Test
public void testWelcomePage() {
driver.get(getServerUrl());
- assertTrue("UI loading completed", waitUntilUIIsLoaded());
+ Assertions.assertTrue(waitUntilUIIsLoaded(), "UI loading completed");
// ensure the editor text is correct
String text = getEditorValue();
- assertEquals(TestUtils.SEQBOBCODE, text);
+ Assertions.assertEquals(TestUtils.SEQBOBCODE, text);
// ensure the URL field is correct
String url = getURLValue();
- assertTrue(url.endsWith("/png/" + TestUtils.SEQBOB));
+ Assertions.assertTrue(url.endsWith("/png/" + TestUtils.SEQBOB));
// ensure the generated image is present
Dimension dim = getImageSize();
- assertNotEquals(0, dim.getHeight()); // 145
- assertNotEquals(0, dim.getWidth()); // 134
+ Assertions.assertNotEquals(0, dim.getHeight()); // 145
+ Assertions.assertNotEquals(0, dim.getWidth()); // 134
}
/**
* Verifies that the version image is generated
*/
+ @Test
public void testVersion() {
driver.get(getServerUrl());
- assertTrue("UI loading completed", waitUntilUIIsLoaded());
+ Assertions.assertTrue(waitUntilUIIsLoaded(), "UI loading completed");
// change code and observe result
setEditorValue(TestUtils.VERSIONCODE);
- assertTrue("Auto update done", waitUntilAutoRefreshCompleted());
+ Assertions.assertTrue(waitUntilAutoRefreshCompleted(), "Auto update done");
// ensure the editor text is correct
String text = getEditorValue();
- assertEquals(TestUtils.VERSIONCODE, text);
+ Assertions.assertEquals(TestUtils.VERSIONCODE, text);
// ensure the URL field is correct
String url = getURLValue();
- assertTrue(url.endsWith("/png/" + TestUtils.VERSION));
+ Assertions.assertTrue(url.endsWith("/png/" + TestUtils.VERSION));
// ensure the generated image is present
Dimension dim = getImageSize();
- assertNotEquals(0, dim.getHeight()); // 242
- assertNotEquals(0, dim.getWidth()); // 472
+ Assertions.assertNotEquals(0, dim.getHeight()); // 242
+ Assertions.assertNotEquals(0, dim.getWidth()); // 472
}
// /**
// * Verifies that when the UML text is empty, ...
// * old behavior: default page and image is generated
// */
+ // @Test
// public void testEmptyText() {
// // ...
// }
@@ -63,6 +66,7 @@ public class TestWebUI extends WebappUITestCase {
// * Verifies that when the encoded URL is empty, ...
// * old behavior: default page and image is generated
// */
+ // @Test
// public void testEmptyUrl() {
// // ...
// }
@@ -70,69 +74,72 @@ public class TestWebUI extends WebappUITestCase {
/**
* Verifies that a ditaa diagram is generated
*/
+ @Test
public void testDitaaText() {
driver.get(getServerUrl());
- assertTrue("UI loading completed", waitUntilUIIsLoaded());
+ Assertions.assertTrue(waitUntilUIIsLoaded(), "UI loading completed");
// change code and observe result
setEditorValue("@startditaa \n*--> \n@endditaa");
- assertTrue("Auto update done", waitUntilAutoRefreshCompleted());
+ Assertions.assertTrue(waitUntilAutoRefreshCompleted(), "Auto update done");
// ensure the editor text is correct
String text = getEditorValue();
- assertEquals("@startditaa \n*--> \n@endditaa", text);
+ Assertions.assertEquals("@startditaa \n*--> \n@endditaa", text);
// ensure the URL field is correct
String url = getURLValue();
- assertTrue(url.endsWith("/png/SoWkIImgISaiIKnKuDBIrRLJu798pKi12m00"));
+ Assertions.assertTrue(url.endsWith("/png/SoWkIImgISaiIKnKuDBIrRLJu798pKi12m00"));
// ensure the generated image is present
Dimension dim = getImageSize();
- assertNotEquals(0, dim.getHeight());
- assertNotEquals(0, dim.getWidth());
+ Assertions.assertNotEquals(0, dim.getHeight());
+ Assertions.assertNotEquals(0, dim.getWidth());
}
/**
* Verifies that an image map is produced if the diagram contains a link
*/
+ @Test
public void testImageMap() {
driver.get(getServerUrl());
- assertTrue("UI loading completed", waitUntilUIIsLoaded());
+ Assertions.assertTrue(waitUntilUIIsLoaded(), "UI loading completed");
// change code and observe result
setEditorValue("@startuml\nBob -> Alice : [[http://yahoo.com]] Hello\n@enduml");
- assertTrue("Auto update done", waitUntilAutoRefreshCompleted());
+ Assertions.assertTrue(waitUntilAutoRefreshCompleted(), "Auto update done");
// ensure the editor text is correct
String text = getEditorValue();
- assertEquals("@startuml\nBob -> Alice : [[http://yahoo.com]] Hello\n@enduml", text);
+ Assertions.assertEquals("@startuml\nBob -> Alice : [[http://yahoo.com]] Hello\n@enduml", text);
// ensure the URL field is correct
String url = getURLValue();
- assertTrue(url.endsWith("/png/SyfFKj2rKt3CoKnELR1IY8xEA2afiDBNhqpCoC_NIyxFZOrLy4ZDoSa70000"));
+ Assertions.assertTrue(url.endsWith("/png/SyfFKj2rKt3CoKnELR1IY8xEA2afiDBNhqpCoC_NIyxFZOrLy4ZDoSa70000"));
// ensure the generated image is present
Dimension dim = getImageSize();
- assertNotEquals(0, dim.getHeight());
- assertNotEquals(0, dim.getWidth());
+ Assertions.assertNotEquals(0, dim.getHeight());
+ Assertions.assertNotEquals(0, dim.getWidth());
// ensure the image map is present
WebElement map = getImageMap();
- assertNotNull(map);
- assertEquals(1, Integer.parseInt(map.getAttribute("childElementCount")));
+ Assertions.assertNotNull(map);
+ Assertions.assertEquals(1, Integer.parseInt(map.getAttribute("childElementCount")));
// ensure the map button is visible
WebElement btnMap = driver.findElement(By.id("map-diagram-link"));
- assertTrue(btnMap.isDisplayed());
+ Assertions.assertTrue(btnMap.isDisplayed());
}
/**
* Verifies that when the encoded source is specified as an URL parameter
* the diagram is displayed and the source is decoded
*/
+ @Test
public void testUrlParameter() {
driver.get(getServerUrl() + "/form?url=" + TestUtils.SEQBOB);
- assertTrue("UI loading completed", waitUntilUIIsLoaded());
+ Assertions.assertTrue(waitUntilUIIsLoaded(), "UI loading completed");
// ensure the editor text is correct
String text = getEditorValue();
- assertEquals(TestUtils.SEQBOBCODE, text);
+ Assertions.assertEquals(TestUtils.SEQBOBCODE, text);
// ensure the URL field is correct
String url = getURLValue();
- assertTrue(url.endsWith("/png/" + TestUtils.SEQBOB));
+ Assertions.assertTrue(url.endsWith("/png/" + TestUtils.SEQBOB));
// ensure the generated image is present
Dimension dim = getImageSize();
- assertNotEquals(0, dim.getHeight());
- assertNotEquals(0, dim.getWidth());
+ Assertions.assertNotEquals(0, dim.getHeight());
+ Assertions.assertNotEquals(0, dim.getWidth());
}
/**
@@ -147,28 +154,29 @@ public class TestWebUI extends WebappUITestCase {
* newpage
* Bob <- Alice : bye
*/
+ @Test
public void testIndexPage() {
driver.get(
getServerUrl() + "/uml/1/" +
"SyfFKj2rKt3CoKnELR1Io4ZDoSddoaijBqXCJ-Lo0ahQwA99Eg7go4ajKIzMA4dCoKPNdfHQKf9Qf92NNuAknqQjA34ppquXgJ8Lbrr0AG00"
);
- assertTrue("UI loading completed", waitUntilUIIsLoaded());
+ Assertions.assertTrue(waitUntilUIIsLoaded(), "UI loading completed");
// ensure the editor text is correct
String text = getEditorValue();
- assertEquals(
+ Assertions.assertEquals(
"@startuml\nBob -> Alice : hello\nnewpage\nBob <- Alice : hello\nBob -> Alice : let's talk\nBob <- Alice : better not\nBob -> Alice : <&rain> bye\nnewpage\nBob <- Alice : bye\n@enduml",
text
);
// ensure the URL field is correct
String url = getURLValue();
- assertTrue(url.endsWith("/png/1/SyfFKj2rKt3CoKnELR1Io4ZDoSddoaijBqXCJ-Lo0ahQwA99Eg7go4ajKIzMA4dCoKPNdfHQKf9Qf92NNuAknqQjA34ppquXgJ8Lbrr0AG00"));
+ Assertions.assertTrue(url.endsWith("/png/1/SyfFKj2rKt3CoKnELR1Io4ZDoSddoaijBqXCJ-Lo0ahQwA99Eg7go4ajKIzMA4dCoKPNdfHQKf9Qf92NNuAknqQjA34ppquXgJ8Lbrr0AG00"));
// ensure the generated image is present
Dimension dim = getImageSize();
- assertNotEquals(0, dim.getHeight());
- assertNotEquals(0, dim.getWidth());
+ Assertions.assertNotEquals(0, dim.getHeight());
+ Assertions.assertNotEquals(0, dim.getWidth());
// ensure the correct index was generated
- assertTrue(dim.getHeight() > 200); // 222
- assertTrue(dim.getHeight() < 250); // 222
+ Assertions.assertTrue(dim.getHeight() > 200); // 222
+ Assertions.assertTrue(dim.getHeight() < 250); // 222
}
/**
@@ -183,27 +191,28 @@ public class TestWebUI extends WebappUITestCase {
* newpage
* Bob <- Alice : bye
*/
+ @Test
public void testIndexPageWithNoDefinedIndex() {
driver.get(
getServerUrl() + "/uml/" +
"SyfFKj2rKt3CoKnELR1Io4ZDoSddoaijBqXCJ-Lo0ahQwA99Eg7go4ajKIzMA4dCoKPNdfHQKf9Qf92NNuAknqQjA34ppquXgJ8Lbrr0AG00"
);
- assertTrue("UI loading completed", waitUntilUIIsLoaded());
+ Assertions.assertTrue(waitUntilUIIsLoaded(), "UI loading completed");
// ensure the editor text is correct
String text = getEditorValue();
- assertEquals(
+ Assertions.assertEquals(
"@startuml\nBob -> Alice : hello\nnewpage\nBob <- Alice : hello\nBob -> Alice : let's talk\nBob <- Alice : better not\nBob -> Alice : <&rain> bye\nnewpage\nBob <- Alice : bye\n@enduml",
text
);
// ensure the URL field is correct
String url = getURLValue();
- assertTrue(url.endsWith("/png/SyfFKj2rKt3CoKnELR1Io4ZDoSddoaijBqXCJ-Lo0ahQwA99Eg7go4ajKIzMA4dCoKPNdfHQKf9Qf92NNuAknqQjA34ppquXgJ8Lbrr0AG00"));
+ Assertions.assertTrue(url.endsWith("/png/SyfFKj2rKt3CoKnELR1Io4ZDoSddoaijBqXCJ-Lo0ahQwA99Eg7go4ajKIzMA4dCoKPNdfHQKf9Qf92NNuAknqQjA34ppquXgJ8Lbrr0AG00"));
// ensure the generated image is present
Dimension dim = getImageSize();
- assertNotEquals(0, dim.getHeight());
- assertNotEquals(0, dim.getWidth());
+ Assertions.assertNotEquals(0, dim.getHeight());
+ Assertions.assertNotEquals(0, dim.getWidth());
// ensure the correct index was generated
- assertTrue(dim.getHeight() > 100); // 132
- assertTrue(dim.getHeight() < 150); // 132
+ Assertions.assertTrue(dim.getHeight() > 100); // 132
+ Assertions.assertTrue(dim.getHeight() < 150); // 132
}
}
diff --git a/src/test/java/net/sourceforge/plantuml/servlet/utils/WebappTestCase.java b/src/test/java/net/sourceforge/plantuml/servlet/utils/WebappTestCase.java
index b11f706..3b97d8e 100644
--- a/src/test/java/net/sourceforge/plantuml/servlet/utils/WebappTestCase.java
+++ b/src/test/java/net/sourceforge/plantuml/servlet/utils/WebappTestCase.java
@@ -7,15 +7,17 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
+import java.util.stream.Collectors;
-import junit.framework.TestCase;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
import net.sourceforge.plantuml.servlet.server.EmbeddedJettyServer;
import net.sourceforge.plantuml.servlet.server.ExternalServer;
import net.sourceforge.plantuml.servlet.server.ServerUtils;
-public abstract class WebappTestCase extends TestCase {
+public abstract class WebappTestCase {
private final ServerUtils serverUtils;
@@ -34,12 +36,12 @@ public abstract class WebappTestCase extends TestCase {
serverUtils = new EmbeddedJettyServer();
}
- @Override
+ @BeforeEach
public void setUp() throws Exception {
serverUtils.startServer();
}
- @Override
+ @AfterEach
public void tearDown() throws Exception {
serverUtils.stopServer();
}
@@ -67,17 +69,8 @@ public abstract class WebappTestCase extends TestCase {
}
public String getContentText(final InputStream stream) throws IOException {
- try (
- final InputStreamReader isr = new InputStreamReader(stream);
- final BufferedReader br = new BufferedReader(isr);
- ) {
- String line;
- StringBuffer sb = new StringBuffer();
- while ((line = br.readLine()) != null) {
- sb.append(line);
- sb.append("\n");
- }
- return sb.toString().trim();
+ try (final BufferedReader br = new BufferedReader(new InputStreamReader(stream))) {
+ return br.lines().collect(Collectors.joining("\n"));
}
}
diff --git a/src/test/java/net/sourceforge/plantuml/servlet/utils/WebappUITestCase.java b/src/test/java/net/sourceforge/plantuml/servlet/utils/WebappUITestCase.java
index 59590bd..f802d9d 100644
--- a/src/test/java/net/sourceforge/plantuml/servlet/utils/WebappUITestCase.java
+++ b/src/test/java/net/sourceforge/plantuml/servlet/utils/WebappUITestCase.java
@@ -2,6 +2,8 @@ package net.sourceforge.plantuml.servlet.utils;
import java.time.Duration;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
import org.openqa.selenium.By;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.JavascriptExecutor;
@@ -16,14 +18,14 @@ public abstract class WebappUITestCase extends WebappTestCase {
public WebDriver driver;
public JavascriptExecutor js;
- @Override
+ @BeforeEach
public void setUp() throws Exception {
super.setUp();
driver = JUnitWebDriver.getDriver();
js = (JavascriptExecutor)driver;
}
- @Override
+ @AfterEach
public void tearDown() throws Exception {
driver.close();
super.tearDown();