private static JinjavaConfig buildJinjavaConfig(boolean failOnUnknownTokens) { JinjavaConfig.Builder configBuilder = JinjavaConfig.newBuilder(); configBuilder.withFailOnUnknownTokens(failOnUnknownTokens); Map<Library, Set<String>> disabled = new HashMap<>(); disabled.put(Library.TAG, new HashSet<>(Arrays.asList("from", "import", "include"))); configBuilder.withDisabled(disabled); return configBuilder.build(); } }
@Test public void itBlocksDisabledFunctions() { Map<Context.Library, Set<String>> disabled = ImmutableMap.of(Library.FUNCTION, ImmutableSet.of(":range")); String template = "hi {% for i in range(1, 3) %}{{i}} {% endfor %}"; String rendered = jinjava.render(template, context); assertEquals("hi 1 2 ", rendered); final JinjavaConfig config = JinjavaConfig.newBuilder().withDisabled(disabled).build(); final RenderResult renderResult = jinjava.renderForResult(template, context, config); assertEquals("hi ", renderResult.getOutput()); TemplateError e = renderResult.getErrors().get(0); assertThat(e.getItem()).isEqualTo(ErrorItem.FUNCTION); assertThat(e.getReason()).isEqualTo(ErrorReason.DISABLED); assertThat(e.getMessage()).contains("':range' is disabled in this context"); }
@Test public void itBlocksDisabledFunctions() { Map<Context.Library, Set<String>> disabled = ImmutableMap.of(Library.FUNCTION, ImmutableSet.of(":range")); String template = "hi {% for i in range(1, 3) %}{{i}} {% endfor %}"; String rendered = jinjava.render(template, context); assertEquals("hi 1 2 ", rendered); final JinjavaConfig config = JinjavaConfig.newBuilder().withDisabled(disabled).build(); final RenderResult renderResult = jinjava.renderForResult(template, context, config); assertEquals("hi ", renderResult.getOutput()); TemplateError e = renderResult.getErrors().get(0); assertThat(e.getItem()).isEqualTo(ErrorItem.FUNCTION); assertThat(e.getReason()).isEqualTo(ErrorReason.DISABLED); assertThat(e.getMessage()).contains("':range' is disabled in this context"); }