|
@@ -0,0 +1,1122 @@
|
|
|
+/*
|
|
|
+ * Copyright 2002-2015 the original author or authors.
|
|
|
+ *
|
|
|
+ * Licensed 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.springframework.security.web.context;
|
|
|
+
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.PrintWriter;
|
|
|
+import java.util.Locale;
|
|
|
+
|
|
|
+import org.junit.Before;
|
|
|
+import org.junit.Test;
|
|
|
+import org.junit.runner.RunWith;
|
|
|
+import org.mockito.Mock;
|
|
|
+import org.mockito.runners.MockitoJUnitRunner;
|
|
|
+
|
|
|
+import javax.servlet.ServletOutputStream;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+
|
|
|
+import static org.fest.assertions.Assertions.assertThat;
|
|
|
+import static org.mockito.Mockito.verify;
|
|
|
+import static org.mockito.Mockito.when;
|
|
|
+
|
|
|
+@RunWith(MockitoJUnitRunner.class)
|
|
|
+public class OnCommittedResponseWrapperTests {
|
|
|
+ private static final String NL = "\r\n";
|
|
|
+
|
|
|
+ @Mock
|
|
|
+ HttpServletResponse delegate;
|
|
|
+ @Mock
|
|
|
+ PrintWriter writer;
|
|
|
+ @Mock
|
|
|
+ ServletOutputStream out;
|
|
|
+
|
|
|
+ OnCommittedResponseWrapper response;
|
|
|
+
|
|
|
+ boolean committed;
|
|
|
+
|
|
|
+ @Before
|
|
|
+ public void setup() throws Exception {
|
|
|
+ response = new OnCommittedResponseWrapper(delegate) {
|
|
|
+ @Override
|
|
|
+ protected void onResponseCommitted() {
|
|
|
+ committed = true;
|
|
|
+ }
|
|
|
+ };
|
|
|
+ when(delegate.getWriter()).thenReturn(writer);
|
|
|
+ when(delegate.getOutputStream()).thenReturn(out);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // --- printwriter
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterHashCode() throws Exception {
|
|
|
+ int expected = writer.hashCode();
|
|
|
+
|
|
|
+ assertThat(response.getWriter().hashCode()).isEqualTo(expected);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterCheckError() throws Exception {
|
|
|
+ boolean expected = true;
|
|
|
+ when(writer.checkError()).thenReturn(expected);
|
|
|
+
|
|
|
+ assertThat(response.getWriter().checkError()).isEqualTo(expected);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterWriteInt() throws Exception {
|
|
|
+ int expected = 1;
|
|
|
+
|
|
|
+ response.getWriter().write(expected);
|
|
|
+
|
|
|
+ verify(writer).write(expected);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterWriteCharIntInt() throws Exception {
|
|
|
+ char[] buff = new char[0];
|
|
|
+ int off = 2;
|
|
|
+ int len = 3;
|
|
|
+
|
|
|
+ response.getWriter().write(buff,off,len);
|
|
|
+
|
|
|
+ verify(writer).write(buff,off,len);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterWriteChar() throws Exception {
|
|
|
+ char[] buff = new char[0];
|
|
|
+
|
|
|
+ response.getWriter().write(buff);
|
|
|
+
|
|
|
+ verify(writer).write(buff);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterWriteStringIntInt() throws Exception {
|
|
|
+ String s = "";
|
|
|
+ int off = 2;
|
|
|
+ int len = 3;
|
|
|
+
|
|
|
+ response.getWriter().write(s,off,len);
|
|
|
+
|
|
|
+ verify(writer).write(s,off,len);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterWriteString() throws Exception {
|
|
|
+ String s = "";
|
|
|
+
|
|
|
+ response.getWriter().write(s);
|
|
|
+
|
|
|
+ verify(writer).write(s);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterPrintBoolean() throws Exception {
|
|
|
+ boolean b = true;
|
|
|
+
|
|
|
+ response.getWriter().print(b);
|
|
|
+
|
|
|
+ verify(writer).print(b);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterPrintChar() throws Exception {
|
|
|
+ char c = 1;
|
|
|
+
|
|
|
+ response.getWriter().print(c);
|
|
|
+
|
|
|
+ verify(writer).print(c);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterPrintInt() throws Exception {
|
|
|
+ int i = 1;
|
|
|
+
|
|
|
+ response.getWriter().print(i);
|
|
|
+
|
|
|
+ verify(writer).print(i);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterPrintLong() throws Exception {
|
|
|
+ long l = 1;
|
|
|
+
|
|
|
+ response.getWriter().print(l);
|
|
|
+
|
|
|
+ verify(writer).print(l);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterPrintFloat() throws Exception {
|
|
|
+ float f = 1;
|
|
|
+
|
|
|
+ response.getWriter().print(f);
|
|
|
+
|
|
|
+ verify(writer).print(f);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterPrintDouble() throws Exception {
|
|
|
+ double x = 1;
|
|
|
+
|
|
|
+ response.getWriter().print(x);
|
|
|
+
|
|
|
+ verify(writer).print(x);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterPrintCharArray() throws Exception {
|
|
|
+ char[] x = new char[0];
|
|
|
+
|
|
|
+ response.getWriter().print(x);
|
|
|
+
|
|
|
+ verify(writer).print(x);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterPrintString() throws Exception {
|
|
|
+ String x = "1";
|
|
|
+
|
|
|
+ response.getWriter().print(x);
|
|
|
+
|
|
|
+ verify(writer).print(x);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterPrintObject() throws Exception {
|
|
|
+ Object x = "1";
|
|
|
+
|
|
|
+ response.getWriter().print(x);
|
|
|
+
|
|
|
+ verify(writer).print(x);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterPrintln() throws Exception {
|
|
|
+ response.getWriter().println();
|
|
|
+
|
|
|
+ verify(writer).println();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterPrintlnBoolean() throws Exception {
|
|
|
+ boolean b = true;
|
|
|
+
|
|
|
+ response.getWriter().println(b);
|
|
|
+
|
|
|
+ verify(writer).println(b);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterPrintlnChar() throws Exception {
|
|
|
+ char c = 1;
|
|
|
+
|
|
|
+ response.getWriter().println(c);
|
|
|
+
|
|
|
+ verify(writer).println(c);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterPrintlnInt() throws Exception {
|
|
|
+ int i = 1;
|
|
|
+
|
|
|
+ response.getWriter().println(i);
|
|
|
+
|
|
|
+ verify(writer).println(i);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterPrintlnLong() throws Exception {
|
|
|
+ long l = 1;
|
|
|
+
|
|
|
+ response.getWriter().println(l);
|
|
|
+
|
|
|
+ verify(writer).println(l);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterPrintlnFloat() throws Exception {
|
|
|
+ float f = 1;
|
|
|
+
|
|
|
+ response.getWriter().println(f);
|
|
|
+
|
|
|
+ verify(writer).println(f);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterPrintlnDouble() throws Exception {
|
|
|
+ double x = 1;
|
|
|
+
|
|
|
+ response.getWriter().println(x);
|
|
|
+
|
|
|
+ verify(writer).println(x);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterPrintlnCharArray() throws Exception {
|
|
|
+ char[] x = new char[0];
|
|
|
+
|
|
|
+ response.getWriter().println(x);
|
|
|
+
|
|
|
+ verify(writer).println(x);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterPrintlnString() throws Exception {
|
|
|
+ String x = "1";
|
|
|
+
|
|
|
+ response.getWriter().println(x);
|
|
|
+
|
|
|
+ verify(writer).println(x);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterPrintlnObject() throws Exception {
|
|
|
+ Object x = "1";
|
|
|
+
|
|
|
+ response.getWriter().println(x);
|
|
|
+
|
|
|
+ verify(writer).println(x);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterPrintfStringObjectVargs() throws Exception {
|
|
|
+ String format = "format";
|
|
|
+ Object[] args = new Object[] { "1" };
|
|
|
+
|
|
|
+ response.getWriter().printf(format, args);
|
|
|
+
|
|
|
+ verify(writer).printf(format, args);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterPrintfLocaleStringObjectVargs() throws Exception {
|
|
|
+ Locale l = Locale.US;
|
|
|
+ String format = "format";
|
|
|
+ Object[] args = new Object[] { "1" };
|
|
|
+
|
|
|
+ response.getWriter().printf(l, format, args);
|
|
|
+
|
|
|
+ verify(writer).printf(l, format, args);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterFormatStringObjectVargs() throws Exception {
|
|
|
+ String format = "format";
|
|
|
+ Object[] args = new Object[] { "1" };
|
|
|
+
|
|
|
+ response.getWriter().format(format, args);
|
|
|
+
|
|
|
+ verify(writer).format(format, args);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterFormatLocaleStringObjectVargs() throws Exception {
|
|
|
+ Locale l = Locale.US;
|
|
|
+ String format = "format";
|
|
|
+ Object[] args = new Object[] { "1" };
|
|
|
+
|
|
|
+ response.getWriter().format(l, format, args);
|
|
|
+
|
|
|
+ verify(writer).format(l, format, args);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterAppendCharSequence() throws Exception {
|
|
|
+ String x = "a";
|
|
|
+
|
|
|
+ response.getWriter().append(x);
|
|
|
+
|
|
|
+ verify(writer).append(x);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterAppendCharSequenceIntInt() throws Exception {
|
|
|
+ String x = "abcdef";
|
|
|
+ int start = 1;
|
|
|
+ int end = 3;
|
|
|
+
|
|
|
+ response.getWriter().append(x, start, end);
|
|
|
+
|
|
|
+ verify(writer).append(x, start, end);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterAppendChar() throws Exception {
|
|
|
+ char x = 1;
|
|
|
+
|
|
|
+ response.getWriter().append(x);
|
|
|
+
|
|
|
+ verify(writer).append(x);
|
|
|
+ }
|
|
|
+
|
|
|
+ // servletoutputstream
|
|
|
+
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void outputStreamHashCode() throws Exception {
|
|
|
+ int expected = out.hashCode();
|
|
|
+
|
|
|
+ assertThat(response.getOutputStream().hashCode()).isEqualTo(expected);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void outputStreamWriteInt() throws Exception {
|
|
|
+ int expected = 1;
|
|
|
+
|
|
|
+ response.getOutputStream().write(expected);
|
|
|
+
|
|
|
+ verify(out).write(expected);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void outputStreamWriteByte() throws Exception {
|
|
|
+ byte[] expected = new byte[0];
|
|
|
+
|
|
|
+ response.getOutputStream().write(expected);
|
|
|
+
|
|
|
+ verify(out).write(expected);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void outputStreamWriteByteIntInt() throws Exception {
|
|
|
+ int start = 1;
|
|
|
+ int end = 2;
|
|
|
+ byte[] expected = new byte[0];
|
|
|
+
|
|
|
+ response.getOutputStream().write(expected, start, end);
|
|
|
+
|
|
|
+ verify(out).write(expected, start, end);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void outputStreamPrintBoolean() throws Exception {
|
|
|
+ boolean b = true;
|
|
|
+
|
|
|
+ response.getOutputStream().print(b);
|
|
|
+
|
|
|
+ verify(out).print(b);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void outputStreamPrintChar() throws Exception {
|
|
|
+ char c = 1;
|
|
|
+
|
|
|
+ response.getOutputStream().print(c);
|
|
|
+
|
|
|
+ verify(out).print(c);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void outputStreamPrintInt() throws Exception {
|
|
|
+ int i = 1;
|
|
|
+
|
|
|
+ response.getOutputStream().print(i);
|
|
|
+
|
|
|
+ verify(out).print(i);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void outputStreamPrintLong() throws Exception {
|
|
|
+ long l = 1;
|
|
|
+
|
|
|
+ response.getOutputStream().print(l);
|
|
|
+
|
|
|
+ verify(out).print(l);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void outputStreamPrintFloat() throws Exception {
|
|
|
+ float f = 1;
|
|
|
+
|
|
|
+ response.getOutputStream().print(f);
|
|
|
+
|
|
|
+ verify(out).print(f);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void outputStreamPrintDouble() throws Exception {
|
|
|
+ double x = 1;
|
|
|
+
|
|
|
+ response.getOutputStream().print(x);
|
|
|
+
|
|
|
+ verify(out).print(x);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void outputStreamPrintString() throws Exception {
|
|
|
+ String x = "1";
|
|
|
+
|
|
|
+ response.getOutputStream().print(x);
|
|
|
+
|
|
|
+ verify(out).print(x);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void outputStreamPrintln() throws Exception {
|
|
|
+ response.getOutputStream().println();
|
|
|
+
|
|
|
+ verify(out).println();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void outputStreamPrintlnBoolean() throws Exception {
|
|
|
+ boolean b = true;
|
|
|
+
|
|
|
+ response.getOutputStream().println(b);
|
|
|
+
|
|
|
+ verify(out).println(b);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void outputStreamPrintlnChar() throws Exception {
|
|
|
+ char c = 1;
|
|
|
+
|
|
|
+ response.getOutputStream().println(c);
|
|
|
+
|
|
|
+ verify(out).println(c);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void outputStreamPrintlnInt() throws Exception {
|
|
|
+ int i = 1;
|
|
|
+
|
|
|
+ response.getOutputStream().println(i);
|
|
|
+
|
|
|
+ verify(out).println(i);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void outputStreamPrintlnLong() throws Exception {
|
|
|
+ long l = 1;
|
|
|
+
|
|
|
+ response.getOutputStream().println(l);
|
|
|
+
|
|
|
+ verify(out).println(l);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void outputStreamPrintlnFloat() throws Exception {
|
|
|
+ float f = 1;
|
|
|
+
|
|
|
+ response.getOutputStream().println(f);
|
|
|
+
|
|
|
+ verify(out).println(f);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void outputStreamPrintlnDouble() throws Exception {
|
|
|
+ double x = 1;
|
|
|
+
|
|
|
+ response.getOutputStream().println(x);
|
|
|
+
|
|
|
+ verify(out).println(x);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void outputStreamPrintlnString() throws Exception {
|
|
|
+ String x = "1";
|
|
|
+
|
|
|
+ response.getOutputStream().println(x);
|
|
|
+
|
|
|
+ verify(out).println(x);
|
|
|
+ }
|
|
|
+
|
|
|
+ // The amount of content specified in the setContentLength method of the response
|
|
|
+ // has been greater than zero and has been written to the response.
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterWriteIntCommits() throws Exception {
|
|
|
+ int expected = 1;
|
|
|
+ response.setContentLength(String.valueOf(expected).length());
|
|
|
+
|
|
|
+ response.getWriter().write(expected);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterWriteIntMultiDigitCommits() throws Exception {
|
|
|
+ int expected = 10000;
|
|
|
+ response.setContentLength(String.valueOf(expected).length());
|
|
|
+
|
|
|
+ response.getWriter().write(expected);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPlus1PrintWriterWriteIntMultiDigitCommits() throws Exception {
|
|
|
+ int expected = 10000;
|
|
|
+ response.setContentLength(String.valueOf(expected).length() + 1);
|
|
|
+
|
|
|
+ response.getWriter().write(expected);
|
|
|
+
|
|
|
+ assertThat(committed).isFalse();
|
|
|
+
|
|
|
+ response.getWriter().write(1);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterWriteCharIntIntCommits() throws Exception {
|
|
|
+ char[] buff = new char[0];
|
|
|
+ int off = 2;
|
|
|
+ int len = 3;
|
|
|
+ response.setContentLength(3);
|
|
|
+
|
|
|
+ response.getWriter().write(buff,off,len);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterWriteCharCommits() throws Exception {
|
|
|
+ char[] buff = new char[4];
|
|
|
+ response.setContentLength(buff.length);
|
|
|
+
|
|
|
+ response.getWriter().write(buff);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterWriteStringIntIntCommits() throws Exception {
|
|
|
+ String s = "";
|
|
|
+ int off = 2;
|
|
|
+ int len = 3;
|
|
|
+ response.setContentLength(3);
|
|
|
+
|
|
|
+ response.getWriter().write(s,off,len);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterWriteStringCommits() throws IOException {
|
|
|
+ String body = "something";
|
|
|
+ response.setContentLength(body.length());
|
|
|
+
|
|
|
+ response.getWriter().write(body);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterWriteStringContentLengthCommits() throws IOException {
|
|
|
+ String body = "something";
|
|
|
+ response.getWriter().write(body);
|
|
|
+
|
|
|
+ response.setContentLength(body.length());
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void printWriterWriteStringDoesNotCommit() throws IOException {
|
|
|
+ String body = "something";
|
|
|
+
|
|
|
+ response.getWriter().write(body);
|
|
|
+
|
|
|
+ assertThat(committed).isFalse();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterPrintBooleanCommits() throws Exception {
|
|
|
+ boolean b = true;
|
|
|
+ response.setContentLength(1);
|
|
|
+
|
|
|
+ response.getWriter().print(b);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterPrintCharCommits() throws Exception {
|
|
|
+ char c = 1;
|
|
|
+ response.setContentLength(1);
|
|
|
+
|
|
|
+ response.getWriter().print(c);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterPrintIntCommits() throws Exception {
|
|
|
+ int i = 1234;
|
|
|
+ response.setContentLength(String.valueOf(i).length());
|
|
|
+
|
|
|
+ response.getWriter().print(i);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterPrintLongCommits() throws Exception {
|
|
|
+ long l = 12345;
|
|
|
+ response.setContentLength(String.valueOf(l).length());
|
|
|
+
|
|
|
+ response.getWriter().print(l);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterPrintFloatCommits() throws Exception {
|
|
|
+ float f = 12345;
|
|
|
+ response.setContentLength(String.valueOf(f).length());
|
|
|
+
|
|
|
+ response.getWriter().print(f);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterPrintDoubleCommits() throws Exception {
|
|
|
+ double x = 1.2345;
|
|
|
+ response.setContentLength(String.valueOf(x).length());
|
|
|
+
|
|
|
+ response.getWriter().print(x);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterPrintCharArrayCommits() throws Exception {
|
|
|
+ char[] x = new char[10];
|
|
|
+ response.setContentLength(x.length);
|
|
|
+
|
|
|
+ response.getWriter().print(x);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterPrintStringCommits() throws Exception {
|
|
|
+ String x = "12345";
|
|
|
+ response.setContentLength(x.length());
|
|
|
+
|
|
|
+ response.getWriter().print(x);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterPrintObjectCommits() throws Exception {
|
|
|
+ Object x = "12345";
|
|
|
+ response.setContentLength(String.valueOf(x).length());
|
|
|
+
|
|
|
+ response.getWriter().print(x);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterPrintlnCommits() throws Exception {
|
|
|
+ response.setContentLength(NL.length());
|
|
|
+
|
|
|
+ response.getWriter().println();
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterPrintlnBooleanCommits() throws Exception {
|
|
|
+ boolean b = true;
|
|
|
+ response.setContentLength(1);
|
|
|
+
|
|
|
+ response.getWriter().println(b);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterPrintlnCharCommits() throws Exception {
|
|
|
+ char c = 1;
|
|
|
+ response.setContentLength(1);
|
|
|
+
|
|
|
+ response.getWriter().println(c);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterPrintlnIntCommits() throws Exception {
|
|
|
+ int i = 12345;
|
|
|
+ response.setContentLength(String.valueOf(i).length());
|
|
|
+
|
|
|
+ response.getWriter().println(i);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterPrintlnLongCommits() throws Exception {
|
|
|
+ long l = 12345678;
|
|
|
+ response.setContentLength(String.valueOf(l).length());
|
|
|
+
|
|
|
+ response.getWriter().println(l);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterPrintlnFloatCommits() throws Exception {
|
|
|
+ float f = 1234;
|
|
|
+ response.setContentLength(String.valueOf(f).length());
|
|
|
+
|
|
|
+ response.getWriter().println(f);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterPrintlnDoubleCommits() throws Exception {
|
|
|
+ double x = 1;
|
|
|
+ response.setContentLength(String.valueOf(x).length());
|
|
|
+
|
|
|
+ response.getWriter().println(x);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterPrintlnCharArrayCommits() throws Exception {
|
|
|
+ char[] x = new char[20];
|
|
|
+ response.setContentLength(x.length);
|
|
|
+
|
|
|
+ response.getWriter().println(x);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterPrintlnStringCommits() throws Exception {
|
|
|
+ String x = "1";
|
|
|
+ response.setContentLength(String.valueOf(x).length());
|
|
|
+
|
|
|
+ response.getWriter().println(x);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterPrintlnObjectCommits() throws Exception {
|
|
|
+ Object x = "1";
|
|
|
+ response.setContentLength(String.valueOf(x).length());
|
|
|
+
|
|
|
+ response.getWriter().println(x);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterAppendCharSequenceCommits() throws Exception {
|
|
|
+ String x = "a";
|
|
|
+ response.setContentLength(String.valueOf(x).length());
|
|
|
+
|
|
|
+ response.getWriter().append(x);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterAppendCharSequenceIntIntCommits() throws Exception {
|
|
|
+ String x = "abcdef";
|
|
|
+ int start = 1;
|
|
|
+ int end = 3;
|
|
|
+ response.setContentLength(end - start);
|
|
|
+
|
|
|
+ response.getWriter().append(x, start, end);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPrintWriterAppendCharCommits() throws Exception {
|
|
|
+ char x = 1;
|
|
|
+ response.setContentLength(1);
|
|
|
+
|
|
|
+ response.getWriter().append(x);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthOutputStreamWriteIntCommits() throws Exception {
|
|
|
+ int expected = 1;
|
|
|
+ response.setContentLength(String.valueOf(expected).length());
|
|
|
+
|
|
|
+ response.getOutputStream().write(expected);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthOutputStreamWriteIntMultiDigitCommits() throws Exception {
|
|
|
+ int expected = 10000;
|
|
|
+ response.setContentLength(String.valueOf(expected).length());
|
|
|
+
|
|
|
+ response.getOutputStream().write(expected);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthPlus1OutputStreamWriteIntMultiDigitCommits() throws Exception {
|
|
|
+ int expected = 10000;
|
|
|
+ response.setContentLength(String.valueOf(expected).length() + 1);
|
|
|
+
|
|
|
+ response.getOutputStream().write(expected);
|
|
|
+
|
|
|
+ assertThat(committed).isFalse();
|
|
|
+
|
|
|
+ response.getOutputStream().write(1);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ // gh-171
|
|
|
+ @Test
|
|
|
+ public void contentLengthPlus1OutputStreamWriteByteArrayMultiDigitCommits() throws Exception {
|
|
|
+ String expected = "{\n" +
|
|
|
+ " \"parameterName\" : \"_csrf\",\n" +
|
|
|
+ " \"token\" : \"06300b65-c4aa-4c8f-8cda-39ee17f545a0\",\n" +
|
|
|
+ " \"headerName\" : \"X-CSRF-TOKEN\"\n" +
|
|
|
+ "}";
|
|
|
+ response.setContentLength(expected.length() + 1);
|
|
|
+
|
|
|
+ response.getOutputStream().write(expected.getBytes());
|
|
|
+
|
|
|
+ assertThat(committed).isFalse();
|
|
|
+
|
|
|
+ response.getOutputStream().write("1".getBytes("UTF-8"));
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthOutputStreamPrintBooleanCommits() throws Exception {
|
|
|
+ boolean b = true;
|
|
|
+ response.setContentLength(1);
|
|
|
+
|
|
|
+ response.getOutputStream().print(b);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthOutputStreamPrintCharCommits() throws Exception {
|
|
|
+ char c = 1;
|
|
|
+ response.setContentLength(1);
|
|
|
+
|
|
|
+ response.getOutputStream().print(c);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthOutputStreamPrintIntCommits() throws Exception {
|
|
|
+ int i = 1234;
|
|
|
+ response.setContentLength(String.valueOf(i).length());
|
|
|
+
|
|
|
+ response.getOutputStream().print(i);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthOutputStreamPrintLongCommits() throws Exception {
|
|
|
+ long l = 12345;
|
|
|
+ response.setContentLength(String.valueOf(l).length());
|
|
|
+
|
|
|
+ response.getOutputStream().print(l);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthOutputStreamPrintFloatCommits() throws Exception {
|
|
|
+ float f = 12345;
|
|
|
+ response.setContentLength(String.valueOf(f).length());
|
|
|
+
|
|
|
+ response.getOutputStream().print(f);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthOutputStreamPrintDoubleCommits() throws Exception {
|
|
|
+ double x = 1.2345;
|
|
|
+ response.setContentLength(String.valueOf(x).length());
|
|
|
+
|
|
|
+ response.getOutputStream().print(x);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthOutputStreamPrintStringCommits() throws Exception {
|
|
|
+ String x = "12345";
|
|
|
+ response.setContentLength(x.length());
|
|
|
+
|
|
|
+ response.getOutputStream().print(x);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthOutputStreamPrintlnCommits() throws Exception {
|
|
|
+ response.setContentLength(NL.length());
|
|
|
+
|
|
|
+ response.getOutputStream().println();
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthOutputStreamPrintlnBooleanCommits() throws Exception {
|
|
|
+ boolean b = true;
|
|
|
+ response.setContentLength(1);
|
|
|
+
|
|
|
+ response.getOutputStream().println(b);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthOutputStreamPrintlnCharCommits() throws Exception {
|
|
|
+ char c = 1;
|
|
|
+ response.setContentLength(1);
|
|
|
+
|
|
|
+ response.getOutputStream().println(c);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthOutputStreamPrintlnIntCommits() throws Exception {
|
|
|
+ int i = 12345;
|
|
|
+ response.setContentLength(String.valueOf(i).length());
|
|
|
+
|
|
|
+ response.getOutputStream().println(i);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthOutputStreamPrintlnLongCommits() throws Exception {
|
|
|
+ long l = 12345678;
|
|
|
+ response.setContentLength(String.valueOf(l).length());
|
|
|
+
|
|
|
+ response.getOutputStream().println(l);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthOutputStreamPrintlnFloatCommits() throws Exception {
|
|
|
+ float f = 1234;
|
|
|
+ response.setContentLength(String.valueOf(f).length());
|
|
|
+
|
|
|
+ response.getOutputStream().println(f);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthOutputStreamPrintlnDoubleCommits() throws Exception {
|
|
|
+ double x = 1;
|
|
|
+ response.setContentLength(String.valueOf(x).length());
|
|
|
+
|
|
|
+ response.getOutputStream().println(x);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthOutputStreamPrintlnStringCommits() throws Exception {
|
|
|
+ String x = "1";
|
|
|
+ response.setContentLength(String.valueOf(x).length());
|
|
|
+
|
|
|
+ response.getOutputStream().println(x);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthDoesNotCommit() throws IOException {
|
|
|
+ String body = "something";
|
|
|
+
|
|
|
+ response.setContentLength(body.length());
|
|
|
+
|
|
|
+ assertThat(committed).isFalse();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void contentLengthOutputStreamWriteStringCommits() throws IOException {
|
|
|
+ String body = "something";
|
|
|
+ response.setContentLength(body.length());
|
|
|
+
|
|
|
+ response.getOutputStream().print(body);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void addHeaderContentLengthPrintWriterWriteStringCommits() throws Exception {
|
|
|
+ int expected = 1234;
|
|
|
+ response.addHeader("Content-Length",String.valueOf(String.valueOf(expected).length()));
|
|
|
+
|
|
|
+ response.getWriter().write(expected);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void bufferSizePrintWriterWriteCommits() throws Exception {
|
|
|
+ String expected = "1234567890";
|
|
|
+ when(response.getBufferSize()).thenReturn(expected.length());
|
|
|
+
|
|
|
+ response.getWriter().write(expected);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void bufferSizeCommitsOnce() throws Exception {
|
|
|
+ String expected = "1234567890";
|
|
|
+ when(response.getBufferSize()).thenReturn(expected.length());
|
|
|
+
|
|
|
+ response.getWriter().write(expected);
|
|
|
+
|
|
|
+ assertThat(committed).isTrue();
|
|
|
+
|
|
|
+ committed = false;
|
|
|
+
|
|
|
+ response.getWriter().write(expected);
|
|
|
+
|
|
|
+ assertThat(committed).isFalse();
|
|
|
+ }
|
|
|
+}
|