use of io.apiman.gateway.engine.policy.IPolicyContext in project apiman by apiman.
the class PolicyChainTest method shouldEndChainImmediatelyWhenSkipCalled.
@Test
public void shouldEndChainImmediatelyWhenSkipCalled() {
IPolicy skipPolicy = spy(new IPolicy() {
@Override
public Object parseConfiguration(String jsonConfiguration) throws ConfigurationParseException {
return null;
}
@Override
public void apply(ApiRequest request, IPolicyContext context, Object config, IPolicyChain<ApiRequest> chain) {
chain.doSkip(request);
}
@Override
public void apply(ApiResponse response, IPolicyContext context, Object config, IPolicyChain<ApiResponse> chain) {
chain.doSkip(response);
}
});
PolicyWithConfiguration pwcSkip = new PolicyWithConfiguration(skipPolicy, null);
policies.add(pwcSkip);
policies.add(pwcTwo);
requestChain = new RequestChain(policies, mockContext);
requestChain.bodyHandler(mockBodyHandler);
requestChain.endHandler(mockEndHandler);
requestChain.doApply(mockRequest);
requestChain.end();
verify(mockEndHandler, times(1)).handle((Void) null);
// Should only be called once, as the second is skipped
verify(skipPolicy, times(1)).apply(mockRequest, mockContext, null, requestChain);
verify(policyOne, never()).apply(mockRequest, mockContext, null, requestChain);
}
use of io.apiman.gateway.engine.policy.IPolicyContext in project apiman by apiman.
the class ApimanPolicyTest method getContext.
/**
* @param executor
*/
private IPolicyContext getContext(IApiRequestExecutor executor) {
try {
// $NON-NLS-1$
Field field = executor.getClass().getDeclaredField("context");
field.setAccessible(true);
Object fieldValue = field.get(executor);
return (IPolicyContext) fieldValue;
} catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
throw new RuntimeException(e);
}
}
use of io.apiman.gateway.engine.policy.IPolicyContext in project apiman by apiman.
the class IPBlacklistPolicyTest method testApply.
/**
* Test method for {@link io.apiman.gateway.engine.policies.IPBlacklistPolicy#parseConfiguration(java.lang.String)}.
*/
@Test
public void testApply() {
IPBlacklistPolicy policy = new IPBlacklistPolicy();
String json = "{" + " \"ipList\" : [" + " \"1.2.3.4\"," + " \"3.4.5.6\"," + " \"10.0.0.11\"" + " ]" + "}";
IPListConfig config = policy.parseConfiguration(json);
ApiRequest request = new ApiRequest();
request.setType("GET");
request.setApiKey("12345");
request.setRemoteAddr("1.2.3.4");
request.setDestination("/");
IPolicyContext context = Mockito.mock(IPolicyContext.class);
final PolicyFailure failure = new PolicyFailure();
Mockito.when(context.getComponent(IPolicyFailureFactoryComponent.class)).thenReturn(new IPolicyFailureFactoryComponent() {
@Override
public PolicyFailure createFailure(PolicyFailureType type, int failureCode, String message) {
return failure;
}
});
IPolicyChain<ApiRequest> chain = Mockito.mock(IPolicyChain.class);
// Failure
policy.apply(request, context, config, chain);
Mockito.verify(chain).doFailure(failure);
// Success
request.setRemoteAddr("9.8.7.6");
chain = Mockito.mock(IPolicyChain.class);
policy.apply(request, context, config, chain);
Mockito.verify(chain).doApply(request);
}
use of io.apiman.gateway.engine.policy.IPolicyContext in project apiman by apiman.
the class IPBlacklistPolicyTest method testApplyWithWildcards.
/**
* Test method for {@link io.apiman.gateway.engine.policies.IPBlacklistPolicy#parseConfiguration(java.lang.String)}.
*/
@Test
public void testApplyWithWildcards() {
IPBlacklistPolicy policy = new IPBlacklistPolicy();
String json = "{" + " \"ipList\" : [" + " \"10.0.*.*\"" + " ]" + "}";
IPListConfig config = policy.parseConfiguration(json);
ApiRequest request = new ApiRequest();
request.setType("GET");
request.setApiKey("12345");
request.setDestination("/");
IPolicyContext context = Mockito.mock(IPolicyContext.class);
final PolicyFailure failure = new PolicyFailure();
Mockito.when(context.getComponent(IPolicyFailureFactoryComponent.class)).thenReturn(new IPolicyFailureFactoryComponent() {
@Override
public PolicyFailure createFailure(PolicyFailureType type, int failureCode, String message) {
return failure;
}
});
IPolicyChain<ApiRequest> chain = Mockito.mock(IPolicyChain.class);
// Failures
request.setRemoteAddr("10.0.123.87");
policy.apply(request, context, config, chain);
Mockito.verify(chain).doFailure(failure);
request.setRemoteAddr("10.0.97.1");
chain = Mockito.mock(IPolicyChain.class);
policy.apply(request, context, config, chain);
Mockito.verify(chain).doFailure(failure);
// Successes
request.setRemoteAddr("9.8.7.6");
chain = Mockito.mock(IPolicyChain.class);
policy.apply(request, context, config, chain);
Mockito.verify(chain).doApply(request);
request.setRemoteAddr("10.10.15.123");
chain = Mockito.mock(IPolicyChain.class);
policy.apply(request, context, config, chain);
Mockito.verify(chain).doApply(request);
}
use of io.apiman.gateway.engine.policy.IPolicyContext in project apiman by apiman.
the class IPWhitelistPolicyTest method testApply.
/**
* Test method for {@link io.apiman.gateway.engine.policies.IPWhitelistPolicy#parseConfiguration(java.lang.String)}.
*/
@Test
public void testApply() {
IPWhitelistPolicy policy = new IPWhitelistPolicy();
String json = "{" + " \"ipList\" : [" + " \"1.2.3.4\"," + " \"3.4.5.6\"," + " \"10.0.0.11\"" + " ]" + "}";
Object config = policy.parseConfiguration(json);
ApiRequest request = new ApiRequest();
request.setType("GET");
request.setApiKey("12345");
request.setRemoteAddr("1.2.3.4");
request.setDestination("/");
IPolicyContext context = Mockito.mock(IPolicyContext.class);
IPolicyChain<ApiRequest> chain = Mockito.mock(IPolicyChain.class);
// Success
policy.apply(request, context, config, chain);
Mockito.verify(chain).doApply(request);
// Failure
final PolicyFailure failure = new PolicyFailure();
Mockito.when(context.getComponent(IPolicyFailureFactoryComponent.class)).thenReturn(new IPolicyFailureFactoryComponent() {
@Override
public PolicyFailure createFailure(PolicyFailureType type, int failureCode, String message) {
return failure;
}
});
chain = Mockito.mock(IPolicyChain.class);
request.setRemoteAddr("9.8.7.6");
policy.apply(request, context, config, chain);
Mockito.verify(chain).doFailure(failure);
}
Aggregations