use of org.wso2.carbon.apimgt.throttle.policy.deployer.dto.Condition in project carbon-apimgt by wso2.
the class ThrottleConditionEvaluatorTest method testGetThrottledInConditionWithIPRangeConditionWithDefaultIpNotInRangeInvert.
@Test
public void testGetThrottledInConditionWithIPRangeConditionWithDefaultIpNotInRangeInvert() {
MessageContext messageContext = TestUtils.getMessageContext(apiContext, apiVersion);
Map map = new TreeMap();
map.put("X-Forwarded-For", "192.168.0.12");
((Axis2MessageContext) messageContext).getAxis2MessageContext().setProperty(org.apache.axis2.context.MessageContext.TRANSPORT_HEADERS, map);
Map<String, List<ConditionDto>> conditionMap = new HashMap<>();
conditionMap.put("condition1", Arrays.asList(new ConditionDto[] { getIpRangeCondition(true) }));
conditionMap.put("default", Arrays.asList(new ConditionDto[] { getIpRangeCondition(true) }));
String condition = throttleConditionEvaluator.getThrottledInCondition(messageContext, null, conditionMap);
Assert.assertEquals(condition, "condition1");
}
use of org.wso2.carbon.apimgt.throttle.policy.deployer.dto.Condition in project carbon-apimgt by wso2.
the class ThrottleConditionEvaluatorTest method testGetThrottledInConditionWithQueryConditionNegative.
@Test
public void testGetThrottledInConditionWithQueryConditionNegative() {
ThrottleProperties throttleProperties = new ThrottleProperties();
throttleProperties.setEnableQueryParamConditions(true);
ServiceReferenceHolder.getInstance().setThrottleProperties(throttleProperties);
MessageContext messageContext = TestUtils.getMessageContext(apiContext, apiVersion);
((Axis2MessageContext) messageContext).getAxis2MessageContext().setProperty("REST_URL_POSTFIX", "/temperature?abc=cd&bcd=xyz");
Map<String, List<ConditionDto>> conditionMap = new HashMap<>();
conditionMap.put("condition1", Arrays.asList(new ConditionDto[] { getQueryParamCondition(false) }));
conditionMap.put("default", Arrays.asList(new ConditionDto[] { getQueryParamCondition(false) }));
String condition = throttleConditionEvaluator.getThrottledInCondition(messageContext, null, conditionMap);
Assert.assertEquals(condition, "default");
}
use of org.wso2.carbon.apimgt.throttle.policy.deployer.dto.Condition in project carbon-apimgt by wso2.
the class ThrottleConditionEvaluatorTest method testGetThrottledInConditionWithJWTConditionInvert.
@Test
public void testGetThrottledInConditionWithJWTConditionInvert() {
ThrottleProperties throttleProperties = new ThrottleProperties();
throttleProperties.setEnableJwtConditions(true);
String jwt = "eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJ3c28yLm9yZy9wcm9kdWN0cy9hbSIsImV4cCI6MTM0NTE4MzQ5MjE4MSwiaHR0cDov" + "L3dzbzIub3JnL2NsYWltcy9hYmMiOiJjZGUiLCJodHRwOi8vd3NvMi5vcmcvY2xhaW1zL2JjZCI6Inh5eiJ9.9zGU062DJ5mQ5hne" + "41h4IRpLbaY_b5thRxb3feebOcA";
AuthenticationContext authenticationContext = new AuthenticationContext();
authenticationContext.setCallerToken(jwt);
ServiceReferenceHolder.getInstance().setThrottleProperties(throttleProperties);
MessageContext messageContext = TestUtils.getMessageContext(apiContext, apiVersion);
Map<String, List<ConditionDto>> conditionMap = new HashMap<>();
conditionMap.put("condition1", Arrays.asList(new ConditionDto[] { getJWTCondition(true) }));
conditionMap.put("default", Arrays.asList(new ConditionDto[] { getJWTCondition(true) }));
String condition = throttleConditionEvaluator.getThrottledInCondition(messageContext, authenticationContext, conditionMap);
Assert.assertEquals(condition, "default");
}
use of org.wso2.carbon.apimgt.throttle.policy.deployer.dto.Condition in project carbon-apimgt by wso2.
the class ThrottleConditionEvaluator method isThrottledWithinCondition.
private boolean isThrottledWithinCondition(MessageContext axis2MessageContext, AuthenticationContext authContext, List<ConditionDto> conditionDtoList) {
ThrottleProperties throttleProperties = ServiceReferenceHolder.getInstance().getThrottleProperties();
boolean status = true;
for (ConditionDto condition : conditionDtoList) {
status = true;
if (condition.getIpCondition() != null) {
if (!isMatchingIP(axis2MessageContext, condition.getIpCondition())) {
status = false;
}
} else if (condition.getIpRangeCondition() != null) {
if (!isWithinIP(axis2MessageContext, condition.getIpRangeCondition())) {
status = false;
}
}
if (condition.getHeaderConditions() != null && throttleProperties.isEnableHeaderConditions() && !condition.getHeaderConditions().getValues().isEmpty()) {
if (!isHeaderPresent(axis2MessageContext, condition.getHeaderConditions())) {
status = false;
}
}
if (condition.getJwtClaimConditions() != null && throttleProperties.isEnableJwtConditions() && !condition.getJwtClaimConditions().getValues().isEmpty()) {
if (!isJWTClaimPresent(authContext, condition.getJwtClaimConditions())) {
status = false;
}
}
if (condition.getQueryParameterConditions() != null && throttleProperties.isEnableQueryParamConditions() && !condition.getQueryParameterConditions().getValues().isEmpty()) {
if (!isQueryParamPresent(axis2MessageContext, condition.getQueryParameterConditions())) {
status = false;
}
}
if (status) {
break;
}
}
return status;
}
use of org.wso2.carbon.apimgt.throttle.policy.deployer.dto.Condition in project carbon-apimgt by wso2.
the class ThrottleConditionEvaluator method getApplicableConditions.
/**
* When called, provides a list of Applicable Condition Groups for the current request.
*
* @param synapseContext Message Context of the incoming request.
* @param authenticationContext AuthenticationContext populated by {@code APIAuthenticationHandler}
* @param inputConditionGroups All Condition Groups Attached with the resource/API being invoked.
* @return List of ConditionGroups applicable for the current request.
*/
public List<ConditionGroupDTO> getApplicableConditions(org.apache.synapse.MessageContext synapseContext, AuthenticationContext authenticationContext, ConditionGroupDTO[] inputConditionGroups) {
ArrayList<ConditionGroupDTO> matchingConditions = new ArrayList<>(inputConditionGroups.length);
ConditionGroupDTO defaultGroup = null;
for (ConditionGroupDTO conditionGroup : inputConditionGroups) {
if (APIConstants.THROTTLE_POLICY_DEFAULT.equals(conditionGroup.getConditionGroupId())) {
defaultGroup = conditionGroup;
} else if (isConditionGroupApplicable(synapseContext, authenticationContext, conditionGroup)) {
matchingConditions.add(conditionGroup);
}
}
// If no matching ConditionGroups are present, apply the default group.
if (matchingConditions.isEmpty()) {
matchingConditions.add(defaultGroup);
}
return matchingConditions;
}
Aggregations