@@ -42,8 +42,24 @@ func (w *testResponseWriter) Write(b []byte) (int, error) {
4242
4343func TestUnderlyingWriter (t * testing.T ) {
4444 tw := & testResponseWriter {header : make (http.Header )}
45+ tw .header .Set ("X" , "Y" )
4546 w , _ := nvelope .NewDeferredWriter (tw )
47+ tw .header .Set ("Foo" , "bar" )
48+ tw .header .Set ("A" , "B" )
49+ w .Header ().Set ("Baz" , "bap" )
50+ w .Header ().Set ("A" , "C" )
51+ _ , _ = w .Write ([]byte ("howdy" ))
52+ _ , _ , err := w .Body ()
53+ assert .NoError (t , err , "body before Underlying" )
54+ assert .Equal (t , tw , w .UnderlyingWriter ())
55+ _ , _ , err = w .Body ()
56+ assert .Error (t , err , "body after Underlying" )
4657 assert .Equal (t , tw , w .UnderlyingWriter ())
58+ assert .Equal (t , []byte (nil ), tw .buffer , "underlying buffer after two calls" )
59+ assert .Empty (t , tw .header ["Foo" ], "Foo" )
60+ assert .Equal (t , tw .header .Get ("Baz" ), "bap" , "Baz" )
61+ assert .Equal (t , tw .header .Get ("A" ), "C" , "A" )
62+ assert .Equal (t , tw .header .Get ("X" ), "Y" , "X" )
4763}
4864
4965func TestFlush (t * testing.T ) {
@@ -59,6 +75,10 @@ func TestFlush(t *testing.T) {
5975 assert .Equal (t , "" , tw .Header ().Get ("c" ), "original header untouched with existing key" )
6076 assert .Equal (t , "d" , w .Header ().Get ("c" ), "new header override works though" )
6177 w .WriteHeader (303 )
78+ body , code , err := w .Body ()
79+ assert .NoError (t , err , "body" )
80+ assert .Equal (t , 303 , code , "body code" )
81+ assert .Equal (t , []byte ("howdy" ), body , code , "body" )
6282 assert .Equal (t , 0 , tw .code , "code not written before flush" )
6383 assert .False (t , w .Done (), "done before flush" )
6484 require .NoError (t , w .Flush (), "flush" )
@@ -67,6 +87,10 @@ func TestFlush(t *testing.T) {
6787 assert .Equal (t , 303 , tw .code , "code written after flush" )
6888 assert .Equal (t , "d" , tw .Header ().Get ("c" ), "new header written - c" )
6989 assert .Equal (t , "d" , tw .Header ().Get ("a" ), "new header written - a" )
90+ body , code , err = w .Body ()
91+ assert .NoError (t , err , "body" )
92+ assert .Equal (t , 303 , code , "body code" )
93+ assert .Equal (t , []byte ("howdy" ), body , code , "body" )
7094}
7195
7296func TestReset (t * testing.T ) {
0 commit comments