@@ -300,6 +300,46 @@ func Test_handler_between_dates_with_fill(t *testing.T) {
300
300
mockedClient .AssertExpectations (t )
301
301
}
302
302
303
+ func Test_handler_between_dates_with_everything_complex (t * testing.T ) {
304
+ id := "123456"
305
+ req , err := http .NewRequest ("GET" , "/api/hosts/localhost/containers/" + id + "/logs" , nil )
306
+ require .NoError (t , err , "NewRequest should not return an error." )
307
+
308
+ q := req .URL .Query ()
309
+ q .Add ("jsonOnly" , "true" )
310
+ q .Add ("stdout" , "true" )
311
+ q .Add ("stderr" , "true" )
312
+ q .Add ("everything" , "true" )
313
+ q .Add ("levels" , "info" )
314
+
315
+ req .URL .RawQuery = q .Encode ()
316
+
317
+ mockedClient := new (MockedClient )
318
+
319
+ first := makeMessage ("2020-05-13T18:55:37.772853839Z INFO Testing stdout logs...\n " , container .STDOUT )
320
+ second := makeMessage ("2020-05-13T18:56:37.772853839Z {\" msg\" :\" a complex log message\" }\n " , container .STDOUT )
321
+ data := append (first , second ... )
322
+
323
+ mockedClient .On ("ContainerLogsBetweenDates" , mock .Anything , id , mock .Anything , mock .Anything , container .STDALL ).
324
+ Return (io .NopCloser (bytes .NewReader (data )), nil ).
325
+ Once ()
326
+ mockedClient .On ("FindContainer" , mock .Anything , id ).Return (container.Container {ID : id }, nil )
327
+ mockedClient .On ("Host" ).Return (container.Host {
328
+ ID : "localhost" ,
329
+ })
330
+ mockedClient .On ("ListContainers" , mock .Anything , mock .Anything ).Return ([]container.Container {
331
+ {ID : id , Name : "test" , Host : "localhost" , State : "running" },
332
+ }, nil )
333
+ mockedClient .On ("ContainerEvents" , mock .Anything , mock .AnythingOfType ("chan<- container.ContainerEvent" )).Return (nil )
334
+
335
+ handler := createDefaultHandler (mockedClient )
336
+ rr := httptest .NewRecorder ()
337
+ handler .ServeHTTP (rr , req )
338
+ reader := strings .NewReader (regexp .MustCompile (`"time":"[^"]*"` ).ReplaceAllString (rr .Body .String (), `"time":"<removed>"` ))
339
+ abide .AssertReader (t , t .Name (), reader )
340
+ mockedClient .AssertExpectations (t )
341
+ }
342
+
303
343
func makeMessage (message string , stream container.StdType ) []byte {
304
344
data := make ([]byte , 8 )
305
345
binary .BigEndian .PutUint32 (data [4 :], uint32 (len (message )))
0 commit comments