From 03e05695ddc5ef0d87aa94592804e793e7741c98 Mon Sep 17 00:00:00 2001 From: susanw1 Date: Mon, 9 Oct 2023 15:07:38 +0100 Subject: [PATCH] [#117] Fixed mustache tests vulnerability to date formats --- .../resources/template-cp/test-2-cp.mustache | 2 +- .../template-cp/test-4-cp-part.mustache | 2 +- .../src/main/templates/test-1.mustache | 2 +- .../src/main/templates/test3/test-3.mustache | 2 +- .../tests/Test1BasicTemplatingTest.java | 4 +-- .../plugin/tests/Test2ClasspathTest.java | 2 +- .../Test3LocalFileTemplatingPartialTest.java | 2 +- .../tests/Test4MustachePartialTest.java | 36 ++++--------------- 8 files changed, 15 insertions(+), 37 deletions(-) diff --git a/util/mustache-templating/mustache-templating-test-resources/src/main/resources/template-cp/test-2-cp.mustache b/util/mustache-templating/mustache-templating-test-resources/src/main/resources/template-cp/test-2-cp.mustache index 870887413..98c1c3640 100644 --- a/util/mustache-templating/mustache-templating-test-resources/src/main/resources/template-cp/test-2-cp.mustache +++ b/util/mustache-templating/mustache-templating-test-resources/src/main/resources/template-cp/test-2-cp.mustache @@ -1 +1 @@ -Test-2 (classpath): Test mustache file: receipt is {{receipt}} on {{date}} +Test-2 (classpath): Test mustache file: receipt is {{receipt}} for {{#customer}}{{first_name}} {{family_name}}{{/customer}} diff --git a/util/mustache-templating/mustache-templating-test-resources/src/main/resources/template-cp/test-4-cp-part.mustache b/util/mustache-templating/mustache-templating-test-resources/src/main/resources/template-cp/test-4-cp-part.mustache index 925873539..1c563a647 100644 --- a/util/mustache-templating/mustache-templating-test-resources/src/main/resources/template-cp/test-4-cp-part.mustache +++ b/util/mustache-templating/mustache-templating-test-resources/src/main/resources/template-cp/test-4-cp-part.mustache @@ -1,3 +1,3 @@ -Test-4 (classpath, partials): Test mustache file: receipt is {{receipt}} on {{date}} +Test-4 (classpath, partials): Test mustache file: receipt is {{receipt}} for {{#customer}}{{first_name}} {{family_name}}{{/customer}} Testing partials: {{> foo-4.mustache}} diff --git a/util/mustache-templating/mustache-templating-tests/src/main/templates/test-1.mustache b/util/mustache-templating/mustache-templating-tests/src/main/templates/test-1.mustache index 8094a6cda..ee07a3656 100644 --- a/util/mustache-templating/mustache-templating-tests/src/main/templates/test-1.mustache +++ b/util/mustache-templating/mustache-templating-tests/src/main/templates/test-1.mustache @@ -1 +1 @@ -Test-1: Test mustache file: receipt is {{receipt}} on {{date}} +Test-1: Test mustache file: receipt is {{receipt}} for {{#customer}}{{first_name}} {{family_name}}{{/customer}} diff --git a/util/mustache-templating/mustache-templating-tests/src/main/templates/test3/test-3.mustache b/util/mustache-templating/mustache-templating-tests/src/main/templates/test3/test-3.mustache index 0fb333006..e471224a1 100644 --- a/util/mustache-templating/mustache-templating-tests/src/main/templates/test3/test-3.mustache +++ b/util/mustache-templating/mustache-templating-tests/src/main/templates/test3/test-3.mustache @@ -1,3 +1,3 @@ -Test-3: Test mustache file: receipt is {{receipt}} on {{date}} +Test-3: Test mustache file: receipt is {{receipt}} for {{#customer}}{{first_name}} {{family_name}}{{/customer}} Partial#1: {{> partials/test-3a.mustache}} Partial#2: {{> partials/test-3b.mustache}} diff --git a/util/mustache-templating/mustache-templating-tests/src/test/java/net/zscript/model/templating/plugin/tests/Test1BasicTemplatingTest.java b/util/mustache-templating/mustache-templating-tests/src/test/java/net/zscript/model/templating/plugin/tests/Test1BasicTemplatingTest.java index 5d2352a2a..c35907ccf 100644 --- a/util/mustache-templating/mustache-templating-tests/src/test/java/net/zscript/model/templating/plugin/tests/Test1BasicTemplatingTest.java +++ b/util/mustache-templating/mustache-templating-tests/src/test/java/net/zscript/model/templating/plugin/tests/Test1BasicTemplatingTest.java @@ -16,7 +16,7 @@ public class Test1BasicTemplatingTest { @Test public void shouldCreateFirstOutputFile() throws IOException { - String expectedContent = "Test-1: Test mustache file: receipt is Oz-Ware Purchase Invoice on Mon Aug 06 01:00:00 BST 2012" + lineSeparator(); + String expectedContent = "Test-1: Test mustache file: receipt is Oz-Ware Purchase Invoice for Dorothy Gale" + lineSeparator(); InputStream input = getClass().getResourceAsStream("/templates-out/test1/exampleA-1.txt"); assertThat(input).isNotNull(); @@ -26,7 +26,7 @@ public void shouldCreateFirstOutputFile() throws IOException { @Test public void shouldCreateSecondOutputFile() throws IOException { - String expectedContent = "Test-1: Test mustache file: receipt is Something Else on Sun Jan 06 00:00:00 GMT 2013" + lineSeparator(); + String expectedContent = "Test-1: Test mustache file: receipt is Something Else for Joe Bloggs" + lineSeparator(); InputStream input = getClass().getResourceAsStream("/templates-out/test1/exampleB-1.txt"); assertThat(input).isNotNull(); diff --git a/util/mustache-templating/mustache-templating-tests/src/test/java/net/zscript/model/templating/plugin/tests/Test2ClasspathTest.java b/util/mustache-templating/mustache-templating-tests/src/test/java/net/zscript/model/templating/plugin/tests/Test2ClasspathTest.java index 654199419..5a4dd65f5 100644 --- a/util/mustache-templating/mustache-templating-tests/src/test/java/net/zscript/model/templating/plugin/tests/Test2ClasspathTest.java +++ b/util/mustache-templating/mustache-templating-tests/src/test/java/net/zscript/model/templating/plugin/tests/Test2ClasspathTest.java @@ -16,7 +16,7 @@ public class Test2ClasspathTest { @Test public void shouldCreateOutputFile() throws IOException { - String expectedContent = "Test-2 (classpath): Test mustache file: receipt is Classpath example on Thu Mar 16 00:00:00 GMT 2023" + lineSeparator(); + String expectedContent = "Test-2 (classpath): Test mustache file: receipt is Classpath example for Joe Bloggs" + lineSeparator(); InputStream input = getClass().getResourceAsStream("/templates-out/test2/example-2.txt"); String content = IOUtils.toString(input, StandardCharsets.UTF_8); assertThat(content).isEqualTo(expectedContent); diff --git a/util/mustache-templating/mustache-templating-tests/src/test/java/net/zscript/model/templating/plugin/tests/Test3LocalFileTemplatingPartialTest.java b/util/mustache-templating/mustache-templating-tests/src/test/java/net/zscript/model/templating/plugin/tests/Test3LocalFileTemplatingPartialTest.java index f316eb58a..8d6105b47 100644 --- a/util/mustache-templating/mustache-templating-tests/src/test/java/net/zscript/model/templating/plugin/tests/Test3LocalFileTemplatingPartialTest.java +++ b/util/mustache-templating/mustache-templating-tests/src/test/java/net/zscript/model/templating/plugin/tests/Test3LocalFileTemplatingPartialTest.java @@ -17,7 +17,7 @@ public class Test3LocalFileTemplatingPartialTest { @Test public void shouldCreateFileUsingPartials() throws IOException { - String expectedContent = "Test-3: Test mustache file: receipt is Oz-Ware Purchase Invoice on Mon Aug 06 01:00:00 BST 2012" + lineSeparator() + String expectedContent = "Test-3: Test mustache file: receipt is Oz-Ware Purchase Invoice for Dorothy Gale" + lineSeparator() + "Partial#1: Test-3a: Bill-to: 123 Tornado Alley Suite 16 " + lineSeparator() + lineSeparator() + "Partial#2: Test-3b: - Ship-to: 123 Tornado Alley Suite 16 " + lineSeparator() + lineSeparator(); diff --git a/util/mustache-templating/mustache-templating-tests/src/test/java/net/zscript/model/templating/plugin/tests/Test4MustachePartialTest.java b/util/mustache-templating/mustache-templating-tests/src/test/java/net/zscript/model/templating/plugin/tests/Test4MustachePartialTest.java index 0a1b67b0c..f322926f3 100644 --- a/util/mustache-templating/mustache-templating-tests/src/test/java/net/zscript/model/templating/plugin/tests/Test4MustachePartialTest.java +++ b/util/mustache-templating/mustache-templating-tests/src/test/java/net/zscript/model/templating/plugin/tests/Test4MustachePartialTest.java @@ -17,45 +17,23 @@ public class Test4MustachePartialTest { @Test public void shouldRenderClasspathTemplatesWithPartials() throws IOException { - final String expected = "Test-4 (classpath, partials): Test mustache file: receipt is Classpath example on Thu Mar 16 00:00:00 GMT 2023" + lineSeparator() + final String expected = "Test-4 (classpath, partials): Test mustache file: receipt is Classpath example for Joe Bloggs" + lineSeparator() + "Testing partials:" + lineSeparator() + "foo-4.mustache: - Ship-to: 31 Cat Road Suite 16 " + lineSeparator() + lineSeparator(); - // final String templateResource = "/template-cp/test-4-cp-part.mustache"; - // final URL templateUrl = getClass().getResource(templateResource); - - // final String templatePathStr - // = "jar:file:/home/users/bill/.m2/repository/net/zscript/templating-maven-plugin-tests/0.0.1-SNAPSHOT/templating-maven-plugin-tests-0.0.1-SNAPSHOT.jar" - // + "!/template-cp/test-4-cp-part.mustache"; - // final String fooPathStr - // = "jar:file:/home/users/bill/.m2/repository/net/zscript/templating-maven-plugin-tests/0.0.1-SNAPSHOT/templating-maven-plugin-tests-0.0.1-SNAPSHOT.jar" - // + "!/template-cp/foo-4.mustache"; - - // final URL templateUrl = new URL(templatePathStr); final URL contextUrl = getClass().getResource("/contexts-cp/example-2.yaml"); - // System.out.println("templateUrl: " + templateUrl); System.out.println("contextUrl : " + contextUrl); - - // MustacheResolver resolver = new ClasspathResolver("template-cp"); - - // final InputStream templateStream = templateUrl.openStream(); - // assertThat(templateStream).isNotNull(); final InputStream contextStream = contextUrl.openStream(); assertThat(contextStream).isNotNull(); final Yaml yamlMapper = new Yaml(); final DefaultMustacheFactory mustacheFactory = new DefaultMustacheFactory("template-cp"); - try { - final Mustache mustache = mustacheFactory.compile("test-4-cp-part.mustache"); - final StringWriter writer = new StringWriter(); - final Map context = yamlMapper.load(contextStream); - mustache.execute(writer, context); - - assertThat(writer.toString()).isEqualTo(expected); - } catch (Exception ex) { - ex.printStackTrace(System.out); - throw ex; - } + final Mustache mustache = mustacheFactory.compile("test-4-cp-part.mustache"); + final StringWriter writer = new StringWriter(); + final Map context = yamlMapper.load(contextStream); + mustache.execute(writer, context); + + assertThat(writer.toString()).isEqualTo(expected); } }