blob: 7d28954c1ff8b1e7e17fed992760cd16a1ebf407 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache license, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the license for the specific language governing permissions and
* limitations under the license.
*/
package org.apache.logging.log4j.taglib;
import java.io.ByteArrayOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.Tag;
import org.junit.Before;
import org.junit.Test;
import org.springframework.mock.web.MockJspWriter;
import org.springframework.mock.web.MockPageContext;
import static org.junit.Assert.*;
/**
*
*/
public class DumpTagTest {
private static final Charset UTF8 = StandardCharsets.UTF_8;
private Writer writer;
private ByteArrayOutputStream output;
private MockPageContext context;
private DumpTag tag;
@Before
public void setUp() {
this.output = new ByteArrayOutputStream();
this.writer = new OutputStreamWriter(this.output, UTF8);
this.context = new MockPageContext() {
private final MockJspWriter jspWriter = new MockJspWriter(writer);
@Override
public JspWriter getOut() {
return this.jspWriter;
}
};
this.tag = new DumpTag();
this.tag.setPageContext(this.context);
}
@Test
public void testDoEndTagDefaultPageScopeNoAttributes() throws Exception {
final int returnValue = this.tag.doEndTag();
assertEquals("The return value is not correct.", Tag.EVAL_PAGE, returnValue);
this.writer.flush();
final String output = new String(this.output.toByteArray(), UTF8);
assertEquals("The output is not correct.", "<dl></dl>", output);
}
@Test
public void testDoEndTagDefaultPageScope() throws Exception {
this.context.setAttribute("testAttribute01", "testValue01", PageContext.PAGE_SCOPE);
this.context.setAttribute("anotherAttribute02", "finalValue02", PageContext.PAGE_SCOPE);
this.context.setAttribute("badAttribute03", "skippedValue03", PageContext.SESSION_SCOPE);
final int returnValue = this.tag.doEndTag();
assertEquals("The return value is not correct.", Tag.EVAL_PAGE, returnValue);
this.writer.flush();
final String output = new String(this.output.toByteArray(), UTF8);
assertEquals("The output is not correct.",
"<dl>" +
"<dt><code>testAttribute01</code></dt><dd><code>testValue01</code></dd>" +
"<dt><code>anotherAttribute02</code></dt><dd><code>finalValue02</code></dd>" +
"</dl>", output);
}
@Test
public void testDoEndTagSessionScopeNoAttributes() throws Exception {
this.context.setAttribute("badAttribute01", "skippedValue01", PageContext.PAGE_SCOPE);
this.tag.setScope("session");
final int returnValue = this.tag.doEndTag();
assertEquals("The return value is not correct.", Tag.EVAL_PAGE, returnValue);
this.writer.flush();
final String output = new String(this.output.toByteArray(), UTF8);
assertEquals("The output is not correct.", "<dl></dl>", output);
}
@Test
public void testDoEndTagSessionScope() throws Exception {
this.context.setAttribute("otherAttribute03", "lostValue03", PageContext.PAGE_SCOPE);
this.context.setAttribute("coolAttribute01", "weirdValue01", PageContext.SESSION_SCOPE);
this.context.setAttribute("testAttribute02", "testValue02", PageContext.SESSION_SCOPE);
this.tag.setScope("session");
final int returnValue = this.tag.doEndTag();
assertEquals("The return value is not correct.", Tag.EVAL_PAGE, returnValue);
this.writer.flush();
final String output = new String(this.output.toByteArray(), UTF8);
assertEquals("The output is not correct.",
"<dl>" +
"<dt><code>coolAttribute01</code></dt><dd><code>weirdValue01</code></dd>" +
"<dt><code>testAttribute02</code></dt><dd><code>testValue02</code></dd>" +
"</dl>", output);
}
}