package org.openstack.atlas.api.validation.validators;
import org.openstack.atlas.docs.loadbalancers.api.v1.AccessList;
import org.openstack.atlas.docs.loadbalancers.api.v1.IpVersion;
import org.openstack.atlas.docs.loadbalancers.api.v1.NetworkItem;
import org.openstack.atlas.docs.loadbalancers.api.v1.NetworkItemType;
import org.openstack.atlas.api.validation.results.ValidatorResult;
import org.junit.Before;
import org.junit.Test;
import static org.openstack.atlas.api.helpers.ResultMessage.resultMessage;
import static org.openstack.atlas.api.validation.context.HttpRequestType.POST;
import static org.openstack.atlas.api.validation.context.HttpRequestType.PUT;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class AccessListValidatorTest {
private AccessListValidator alValidator;
private AccessList alTest;
private AccessList alTest2;
private NetworkItem nwTest;
private NetworkItem nwTest2;
@Before
public void setUpAccessListValidatorObject() {
alValidator = new AccessListValidator();
nwTest = new NetworkItem();
nwTest.setAddress("69.172.35.111");
nwTest.setType(NetworkItemType.ALLOW);
nwTest2 = new NetworkItem();
nwTest2.setAddress("69999.188.256.111");
nwTest2.setType(null);
alTest = new AccessList();
alTest.getNetworkItems().add(nwTest);
alTest2 = new AccessList();
alTest2.getNetworkItems().add(nwTest2);
}
@Test
public void shouldHaveValidNetworkItem() {
ValidatorResult result = alValidator.validate(alTest, POST);
assertTrue(resultMessage(result, POST), result.passedValidation());
result = alValidator.validate(alTest, PUT);
assertTrue(resultMessage(result, PUT), result.passedValidation());
}
@Test
public void shouldRejectEmptyNetworkList() {
AccessList al = new AccessList();
ValidatorResult result = alValidator.validate(al, POST);
assertFalse(resultMessage(result, POST), result.passedValidation());
result = alValidator.validate(al, PUT);
assertFalse(resultMessage(result, PUT), result.passedValidation());
}
@Test
public void shouldAcceptMultipleNetworkItemsWhenTheyAreValid() {
AccessList al = new AccessList();
al.getNetworkItems().add(initNetworkItem("192.168.3.51/32", "DENY", null));
//al.getNetworkItems().add(initNetworkItem("ffff::/120", "ALLOW", null));
al.getNetworkItems().add(initNetworkItem("127.0.0.1/8", "ALLOW", null));
ValidatorResult result = alValidator.validate(al, POST);
assertTrue(resultMessage(result, POST), result.passedValidation());
result = alValidator.validate(al, PUT);
assertTrue(resultMessage(result, PUT), result.passedValidation());
}
@Test
public void shouldRejectNullAddress() {
alTest.getNetworkItems().remove(nwTest);
nwTest.setAddress(null);
alTest.getNetworkItems().add(nwTest);
ValidatorResult result = alValidator.validate(alTest, POST);
assertFalse(resultMessage(result, POST), result.passedValidation());
result = alValidator.validate(alTest, PUT);
assertFalse(resultMessage(result, PUT), result.passedValidation());
}
@Test
public void shouldRejectNetworkItemIdOnAccessListPutOrPost() {
AccessList al = new AccessList();
al.getNetworkItems().add(initNetworkItem("192.168.3.51/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.24/32", "ALLOW", "31")); //Bad
al.getNetworkItems().add(initNetworkItem("192.168.3.54/32", "DENY", null)); // Good
ValidatorResult result = alValidator.validate(al, POST);
assertFalse(resultMessage(result, POST), result.passedValidation());
result = alValidator.validate(al, PUT);
assertFalse(resultMessage(result, PUT), result.passedValidation());
}
@Test
public void shouldRejectPartialNetworkItemsDuringPutOrPost() {
AccessList al = new AccessList();
al.getNetworkItems().add(initNetworkItem("192.168.3.51", null, null));
al.getNetworkItems().add(initNetworkItem(null, "ALLOW", null));
ValidatorResult result = alValidator.validate(al, PUT);
assertFalse(resultMessage(result, PUT), result.passedValidation());
result = alValidator.validate(al, POST);
assertFalse(resultMessage(result, POST), result.passedValidation());
}
@Test
public void shouldRejectWholeListIfASingleNetworkItemIsInvalid() {
AccessList al = new AccessList();
al.getNetworkItems().add(initNetworkItem("192.168.3.54/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.54/32", null, null)); // Bad
al.getNetworkItems().add(initNetworkItem("::/32", "DENY", null)); // Good
ValidatorResult result = alValidator.validate(al, POST);
assertFalse(resultMessage(result, POST), result.passedValidation());
result = alValidator.validate(al, PUT);
assertFalse(resultMessage(result, PUT), result.passedValidation());
}
private static NetworkItem initNetworkItem(String ip,String networkitemtype, String id) {
NetworkItem networkitem = new NetworkItem();
networkitem.setAddress(ip);
networkitem.setType((networkitemtype == null) ? null : NetworkItemType.valueOf(networkitemtype));
networkitem.setId((id == null) ? null : Integer.parseInt(id));
return networkitem;
}
@Test
public void shouldRejectInvalidValidNetworkItemList() {
AccessList al = new AccessList();
al.getNetworkItems().add(initNetworkItem("192.168.3.1/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.2/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.3/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.4/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.5/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.6/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.7/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.8/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.9/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.10/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.11/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.12/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.13/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.14/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.15/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.16/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.17/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.18/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.19/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.20/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.21/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.22/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.23/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.24/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.25/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.26/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.27/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.28/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.29/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.30/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.31/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.32/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.33/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.34/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.35/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.36/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.37/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.38/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.39/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.40/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.41/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.42/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.4.43/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.4.54/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.5.54/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.6.54/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.7.54/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.8.54/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.9.54/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.50.54/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.51.54/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.52.54/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.53.54/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.54/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.55/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.56/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.57/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.58/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.59/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.60/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.61/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.62/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.54/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.63/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.64/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.65/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.66/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.67/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.68/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.69/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.70/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.71/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.72/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.73/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.74/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.75/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.76/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.77/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.78/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.79/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.80/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.81/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.82/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.83/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.84/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.85/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.86/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.87/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.88/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.89/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.90/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.91/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.92/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.93/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.94/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.95/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.96/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.97/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.98/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.99/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.167.3.01/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("192.168.3.54/32", "DENY", null)); // Good
al.getNetworkItems().add(initNetworkItem("::/32", "DENY", null)); // Good
ValidatorResult result = alValidator.validate(al, POST);
assertFalse(resultMessage(result, POST), result.passedValidation());
result = alValidator.validate(al, PUT);
assertFalse(resultMessage(result, PUT), result.passedValidation());
}
}