Skip to content

Commit d4922cd

Browse files
Merge pull request #13 from lchayoun/addMissingTests
added spring data tests
2 parents bd0dfde + 9bb801e commit d4922cd

5 files changed

Lines changed: 66 additions & 30 deletions

File tree

spring-cloud-zuul-ratelimit-core/src/test/java/com/marcosbarbero/cloud/autoconfigure/zuul/ratelimit/filters/BaseRateLimitFilterTest.java

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
11
package com.marcosbarbero.cloud.autoconfigure.zuul.ratelimit.filters;
22

3+
import static java.util.Arrays.asList;
4+
import static org.junit.Assert.assertEquals;
5+
import static org.junit.Assert.assertFalse;
6+
import static org.junit.Assert.assertTrue;
7+
import static org.springframework.http.HttpStatus.TOO_MANY_REQUESTS;
8+
39
import com.marcosbarbero.cloud.autoconfigure.zuul.ratelimit.config.RateLimiter;
410
import com.marcosbarbero.cloud.autoconfigure.zuul.ratelimit.config.properties.Policy;
511
import com.marcosbarbero.cloud.autoconfigure.zuul.ratelimit.config.properties.RateLimitProperties;
6-
import com.marcosbarbero.cloud.autoconfigure.zuul.ratelimit.config.repository.InMemoryRateLimiter;
712
import com.marcosbarbero.cloud.autoconfigure.zuul.ratelimit.filters.commons.TestRouteLocator;
813
import com.netflix.zuul.context.RequestContext;
914
import com.netflix.zuul.monitoring.CounterFactory;
10-
15+
import java.util.Collections;
16+
import java.util.HashMap;
17+
import java.util.Map;
18+
import java.util.concurrent.TimeUnit;
1119
import org.junit.Before;
1220
import org.junit.Test;
1321
import org.springframework.cloud.netflix.zuul.filters.Route;
@@ -16,30 +24,19 @@
1624
import org.springframework.mock.web.MockHttpServletRequest;
1725
import org.springframework.mock.web.MockHttpServletResponse;
1826

19-
import java.util.Collections;
20-
import java.util.HashMap;
21-
import java.util.Map;
22-
import java.util.concurrent.TimeUnit;
23-
24-
import static java.util.Arrays.asList;
25-
import static org.junit.Assert.assertEquals;
26-
import static org.junit.Assert.assertFalse;
27-
import static org.junit.Assert.assertTrue;
28-
import static org.springframework.http.HttpStatus.TOO_MANY_REQUESTS;
29-
3027
/**
3128
* @author Marcos Barbero
3229
* @since 2017-06-30
3330
*/
34-
public class BaseRateLimitFilterTest {
31+
public abstract class BaseRateLimitFilterTest {
3532

3633
RateLimitFilter filter;
3734

3835
MockHttpServletRequest request;
3936
MockHttpServletResponse response;
4037

41-
private RequestContext context = RequestContext.getCurrentContext();
42-
private RateLimiter rateLimiter = new InMemoryRateLimiter();
38+
private RequestContext context;
39+
private RateLimiter rateLimiter;
4340

4441
private Route createRoute(String id, String path) {
4542
return new Route(id, path, null, null, false, Collections.emptySet());
@@ -78,6 +75,8 @@ public void setUp() {
7875
this.request = new MockHttpServletRequest();
7976
this.response = new MockHttpServletResponse();
8077
this.filter = new RateLimitFilter(this.rateLimiter, this.properties(), this.routeLocator());
78+
this.context = new RequestContext();
79+
RequestContext.testSetCurrentContext(this.context);
8180
this.context.clear();
8281
this.context.setRequest(this.request);
8382
this.context.setResponse(this.response);
@@ -97,7 +96,7 @@ public void testRateLimit() throws Exception {
9796
String remaining = this.response.getHeader(RateLimitFilter.Headers.REMAINING);
9897
assertEquals("0", remaining);
9998

100-
TimeUnit.SECONDS.sleep(2);
99+
TimeUnit.SECONDS.sleep(3);
101100

102101
this.filter.run();
103102
remaining = this.response.getHeader(RateLimitFilter.Headers.REMAINING);

spring-cloud-zuul-ratelimit-core/src/test/java/com/marcosbarbero/cloud/autoconfigure/zuul/ratelimit/filters/ConsulRateLimitFilterTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
*/
2525
public class ConsulRateLimitFilterTest extends BaseRateLimitFilterTest {
2626

27-
private ConsulClient consulClient = mock(ConsulClient.class);
27+
private ConsulClient consulClient;
2828
private ObjectMapper objectMapper = new ObjectMapper();
2929

3030
private Rate rate(long remaining) {
@@ -34,6 +34,7 @@ private Rate rate(long remaining) {
3434
@Before
3535
@Override
3636
public void setUp() {
37+
consulClient = mock(ConsulClient.class);
3738
this.setRateLimiter(new ConsulRateLimiter(this.consulClient, this.objectMapper));
3839
super.setUp();
3940
}

spring-cloud-zuul-ratelimit-core/src/test/java/com/marcosbarbero/cloud/autoconfigure/zuul/ratelimit/filters/InMemoryRateLimitFilterTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ public class InMemoryRateLimitFilterTest extends BaseRateLimitFilterTest {
1313
@Before
1414
@Override
1515
public void setUp() {
16-
this.setRateLimiter(new InMemoryRateLimiter());
16+
InMemoryRateLimiter rateLimiter = new InMemoryRateLimiter();
17+
this.setRateLimiter(rateLimiter);
1718
super.setUp();
1819
}
19-
2020
}

spring-cloud-zuul-ratelimit-core/src/test/java/com/marcosbarbero/cloud/autoconfigure/zuul/ratelimit/filters/RedisRateLimitFilterTest.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,31 @@
11
package com.marcosbarbero.cloud.autoconfigure.zuul.ratelimit.filters;
22

3-
import com.marcosbarbero.cloud.autoconfigure.zuul.ratelimit.config.repository.RedisRateLimiter;
4-
5-
import org.junit.Before;
6-
import org.junit.Test;
7-
import org.springframework.data.redis.core.BoundValueOperations;
8-
import org.springframework.data.redis.core.RedisTemplate;
9-
10-
import java.util.concurrent.TimeUnit;
11-
123
import static org.junit.Assert.assertEquals;
134
import static org.junit.Assert.assertTrue;
145
import static org.mockito.Matchers.anyLong;
156
import static org.mockito.Matchers.anyString;
167
import static org.mockito.Mockito.mock;
178
import static org.mockito.Mockito.when;
189

10+
import com.marcosbarbero.cloud.autoconfigure.zuul.ratelimit.config.repository.RedisRateLimiter;
11+
import java.util.concurrent.TimeUnit;
12+
import org.junit.Before;
13+
import org.junit.Test;
14+
import org.springframework.data.redis.core.BoundValueOperations;
15+
import org.springframework.data.redis.core.RedisTemplate;
16+
1917
/**
2018
* @author Marcos Barbero
2119
* @since 2017-06-30
2220
*/
2321
public class RedisRateLimitFilterTest extends BaseRateLimitFilterTest {
2422

25-
private RedisTemplate redisTemplate = mock(RedisTemplate.class);
23+
private RedisTemplate redisTemplate;
2624

2725
@Before
2826
@Override
2927
public void setUp() {
28+
redisTemplate = mock(RedisTemplate.class);
3029
this.setRateLimiter(new RedisRateLimiter(this.redisTemplate));
3130
super.setUp();
3231
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.marcosbarbero.cloud.autoconfigure.zuul.ratelimit.filters;
2+
3+
import static org.mockito.ArgumentMatchers.any;
4+
import static org.mockito.Mockito.mock;
5+
import static org.mockito.Mockito.when;
6+
7+
import com.marcosbarbero.cloud.autoconfigure.zuul.ratelimit.config.Rate;
8+
import com.marcosbarbero.cloud.autoconfigure.zuul.ratelimit.config.repository.springdata.IRateLimiterRepository;
9+
import com.marcosbarbero.cloud.autoconfigure.zuul.ratelimit.config.repository.springdata.SpringDataRateLimiter;
10+
import java.util.Map;
11+
import java.util.concurrent.ConcurrentHashMap;
12+
import org.junit.Before;
13+
14+
/**
15+
* @author Marcos Barbero
16+
* @since 2017-06-30
17+
*/
18+
public class SpringDataLimitFilterTest extends BaseRateLimitFilterTest {
19+
20+
@Before
21+
@Override
22+
public void setUp() {
23+
Map<String, Rate> repository = new ConcurrentHashMap<>();
24+
IRateLimiterRepository rateLimiterRepository = mock(IRateLimiterRepository.class);
25+
when(rateLimiterRepository.save(any(Rate.class))).thenAnswer(invocationOnMock -> {
26+
Rate rate = invocationOnMock.getArgument(0);
27+
repository.put(rate.getKey(), rate);
28+
return rate;
29+
});
30+
when(rateLimiterRepository.findOne(any())).thenAnswer(invocationOnMock -> {
31+
String key = invocationOnMock.getArgument(0);
32+
return repository.get(key);
33+
});
34+
this.setRateLimiter(new SpringDataRateLimiter(rateLimiterRepository));
35+
super.setUp();
36+
}
37+
}

0 commit comments

Comments
 (0)