@ -1,5 +1,5 @@
/ *
/ *
* Copyright 2002 - 2013 the original author or authors .
* Copyright 2002 - 2014 the original author or authors .
*
*
* Licensed under the Apache License , Version 2 . 0 ( the "License" ) ;
* Licensed under the Apache License , Version 2 . 0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* you may not use this file except in compliance with the License .
@ -24,6 +24,7 @@ import org.junit.Before;
import org.junit.Test ;
import org.junit.Test ;
import org.springframework.mock.web.MockHttpServletRequest ;
import org.springframework.mock.web.MockHttpServletRequest ;
import static org.junit.Assert.assertEquals ;
import static org.mockito.BDDMockito.* ;
import static org.mockito.BDDMockito.* ;
/ * *
/ * *
@ -37,80 +38,23 @@ public class DefaultMvcResultTests {
private DefaultMvcResult mvcResult ;
private DefaultMvcResult mvcResult ;
private CountDownLatch countDownLatch ;
@Before
@Before
public void setup ( ) {
public void setup ( ) {
Extended MockHttpServletRequest request = new Extended MockHttpServletRequest( ) ;
MockHttpServletRequest request = new MockHttpServletRequest ( ) ;
request . setAsyncStarted ( true ) ;
request . setAsyncStarted ( true ) ;
this . countDownLatch = mock ( CountDownLatch . class ) ;
this . mvcResult = new DefaultMvcResult ( request , null ) ;
this . mvcResult = new DefaultMvcResult ( request , null ) ;
this . mvcResult . setAsyncResultLatch ( this . countDownLatch ) ;
}
@Test
public void getAsyncResultWithTimeout ( ) throws Exception {
long timeout = 1234L ;
given ( this . countDownLatch . await ( timeout , TimeUnit . MILLISECONDS ) ) . willReturn ( true ) ;
this . mvcResult . getAsyncResult ( timeout ) ;
verify ( this . countDownLatch ) . await ( timeout , TimeUnit . MILLISECONDS ) ;
}
}
@Test
@Test
public void getAsyncResultWithTimeoutNegativeOne ( ) throws Exception {
public void getAsyncResultSuccess ( ) throws Exception {
given ( this . countDownLatch . await ( DEFAULT_TIMEOUT , TimeUnit . MILLISECONDS ) ) . willReturn ( true ) ;
this . mvcResult . setAsyncResult ( "Foo" ) ;
this . mvcResult . getAsyncResult ( - 1 ) ;
assertEquals ( "Foo" , this . mvcResult . getAsyncResult ( 10 * 1000 ) ) ;
verify ( this . countDownLatch ) . await ( DEFAULT_TIMEOUT , TimeUnit . MILLISECONDS ) ;
}
}
@Test
@Test ( expected = IllegalStateException . class )
public void getAsyncResultWithoutTimeout ( ) throws Exception {
public void getAsyncResultFailure ( ) throws Exception {
given ( this . countDownLatch . await ( DEFAULT_TIMEOUT , TimeUnit . MILLISECONDS ) ) . willReturn ( true ) ;
this . mvcResult . getAsyncResult ( ) ;
verify ( this . countDownLatch ) . await ( DEFAULT_TIMEOUT , TimeUnit . MILLISECONDS ) ;
}
@Test
public void getAsyncResultWithTimeoutZero ( ) throws Exception {
this . mvcResult . getAsyncResult ( 0 ) ;
this . mvcResult . getAsyncResult ( 0 ) ;
verifyZeroInteractions ( this . countDownLatch ) ;
}
@Test ( expected = IllegalStateException . class )
public void getAsyncResultAndTimeOut ( ) throws Exception {
this . mvcResult . getAsyncResult ( - 1 ) ;
verify ( this . countDownLatch ) . await ( DEFAULT_TIMEOUT , TimeUnit . MILLISECONDS ) ;
}
private static class ExtendedMockHttpServletRequest extends MockHttpServletRequest {
private boolean asyncStarted ;
private AsyncContext asyncContext ;
public ExtendedMockHttpServletRequest ( ) {
super ( ) ;
this . asyncContext = mock ( AsyncContext . class ) ;
given ( this . asyncContext . getTimeout ( ) ) . willReturn ( new Long ( DEFAULT_TIMEOUT ) ) ;
}
@Override
public void setAsyncStarted ( boolean asyncStarted ) {
this . asyncStarted = asyncStarted ;
}
@Override
public boolean isAsyncStarted ( ) {
return this . asyncStarted ;
}
@Override
public AsyncContext getAsyncContext ( ) {
return asyncContext ;
}
}
}
}
}