/**
* Copyright (c) 2009--2012 Red Hat, Inc.
*
* This software is licensed to you under the GNU General Public License,
* version 2 (GPLv2). There is NO WARRANTY for this software, express or
* implied, including the implied warranties of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
* along with this software; if not, see
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
*
* Red Hat trademarks are not licensed under GPLv2. No permission is
* granted to use or replicate Red Hat trademarks that are incorporated
* in this software or its documentation.
*/
package com.redhat.rhn.frontend.action.kickstart.test;
import com.redhat.rhn.domain.kickstart.KickstartData;
import com.redhat.rhn.domain.kickstart.KickstartFactory;
import com.redhat.rhn.domain.kickstart.KickstartIpRange;
import com.redhat.rhn.domain.kickstart.test.KickstartDataTest;
import com.redhat.rhn.frontend.action.kickstart.KickstartDetailsEditAction;
import com.redhat.rhn.frontend.action.kickstart.KickstartIpRangeAction;
import com.redhat.rhn.frontend.action.kickstart.KickstartIpRangeDeleteAction;
import com.redhat.rhn.frontend.struts.RequestContext;
import com.redhat.rhn.manager.kickstart.IpAddress;
import com.redhat.rhn.testing.RhnPostMockStrutsTestCase;
import com.redhat.rhn.testing.TestUtils;
import java.util.Date;
/**
* KickstartIpRangeActionTest
* @version $Rev: 1 $
*/
public class KickstartIpRangeActionTest extends RhnPostMockStrutsTestCase {
protected KickstartData ksdata;
protected KickstartIpRange ip1;
protected KickstartIpRange ip2;
public void setUp() throws Exception {
super.setUp();
this.ksdata = KickstartDataTest.createKickstartWithChannel(user.getOrg());
this.ksdata.setOrg(user.getOrg());
TestUtils.saveAndFlush(ksdata);
addRequestParameter(RequestContext.KICKSTART_ID, this.ksdata.getId().toString());
}
public void testRange() throws Exception {
setRequestPathInfo("/kickstart/KickstartIpRangeEdit");
ip1 = new KickstartIpRange();
ip2 = new KickstartIpRange();
ip1.setKsdata(ksdata);
ip2.setKsdata(ksdata);
ip1.setOrg(ksdata.getOrg());
ip2.setOrg(ksdata.getOrg());
ip1.setMin(3232236034L); // 192.168.1.1
ip1.setMax(3232236282L);
ip2.setMin(3232236547L);
ip2.setMax(3232236794L);
ip1.setCreated(new Date());
ip2.setCreated(new Date());
ip1.setModified(new Date());
ip2.setModified(new Date());
ksdata.addIpRange(ip1);
ksdata.addIpRange(ip2);
TestUtils.saveAndFlush(ksdata);
actionPerform();
assertNotNull(request.getAttribute(KickstartIpRangeAction.RANGES));
assertEquals(2, ksdata.getIps().size());
}
public void testNoRange() throws Exception {
setRequestPathInfo("/kickstart/KickstartIpRangeEdit");
actionPerform();
assertNotNull(request.getAttribute(KickstartIpRangeAction.RANGES));
assertEquals(0, ksdata.getIps().size());
}
public void testSubmit() throws Exception {
setRequestPathInfo("/kickstart/KickstartIpRangeEdit");
addRequestParameter(KickstartDetailsEditAction.SUBMITTED, Boolean.TRUE.toString());
addRequestParameter(KickstartIpRangeAction.OCTET1A, "192");
addRequestParameter(KickstartIpRangeAction.OCTET1B, "168");
addRequestParameter(KickstartIpRangeAction.OCTET1C, "1");
addRequestParameter(KickstartIpRangeAction.OCTET1D, "1");
addRequestParameter(KickstartIpRangeAction.OCTET2A, "192");
addRequestParameter(KickstartIpRangeAction.OCTET2B, "168");
addRequestParameter(KickstartIpRangeAction.OCTET2C, "1");
addRequestParameter(KickstartIpRangeAction.OCTET2D, "9");
actionPerform();
assertNotNull(request.getAttribute(RequestContext.KICKSTART));
String[] keys = {"kickstart.iprange_add.success"};
verifyActionMessages(keys);
}
public void testValidateFailure() throws Exception {
setRequestPathInfo("/kickstart/KickstartIpRangeEdit");
addRequestParameter(KickstartDetailsEditAction.SUBMITTED, Boolean.TRUE.toString());
addRequestParameter(KickstartIpRangeAction.OCTET1A, "192");
addRequestParameter(KickstartIpRangeAction.OCTET1B, "168");
addRequestParameter(KickstartIpRangeAction.OCTET1C, "1");
addRequestParameter(KickstartIpRangeAction.OCTET1D, "300");
addRequestParameter(KickstartIpRangeAction.OCTET2A, "192");
addRequestParameter(KickstartIpRangeAction.OCTET2B, "168");
addRequestParameter(KickstartIpRangeAction.OCTET2C, "1");
addRequestParameter(KickstartIpRangeAction.OCTET2D, "9");
actionPerform();
assertNotNull(request.getAttribute(RequestContext.KICKSTART));
String[] keys = {"kickstart.iprange_validate.failure"};
verifyActionErrors(keys);
}
public void testConflictFailure() throws Exception {
long [] range1 = {192, 168, 2, 1};
long [] range2 = {192, 168, 2, 9};
IpAddress ipa1 = new IpAddress(range1);
IpAddress ipa2 = new IpAddress(range2);
KickstartIpRange ipr = new KickstartIpRange();
ipr.setCreated(new Date());
ipr.setModified(new Date());
ipr.setKsdata(this.ksdata);
ipr.setOrg(ksdata.getOrg());
ipr.setMax(ipa2.getNumber());
ipr.setMin(ipa1.getNumber());
this.ksdata.addIpRange(ipr);
KickstartFactory.saveKickstartData(this.ksdata);
// now try to submit same range
setRequestPathInfo("/kickstart/KickstartIpRangeEdit");
addRequestParameter(KickstartDetailsEditAction.SUBMITTED, Boolean.TRUE.toString());
addRequestParameter(KickstartIpRangeAction.OCTET1A, "192");
addRequestParameter(KickstartIpRangeAction.OCTET1B, "168");
addRequestParameter(KickstartIpRangeAction.OCTET1C, "2");
addRequestParameter(KickstartIpRangeAction.OCTET1D, "1");
addRequestParameter(KickstartIpRangeAction.OCTET2A, "192");
addRequestParameter(KickstartIpRangeAction.OCTET2B, "168");
addRequestParameter(KickstartIpRangeAction.OCTET2C, "2");
addRequestParameter(KickstartIpRangeAction.OCTET2D, "9");
actionPerform();
assertNotNull(request.getAttribute(RequestContext.KICKSTART));
String[] keys = {"kickstart.iprange_conflict.failure"};
verifyActionErrors(keys);
}
public void testDeleteSuccess() throws Exception {
long [] range1 = {192, 168, 3, 1};
long [] range2 = {192, 168, 3, 9};
IpAddress ipa1 = new IpAddress(range1);
long ip1num = ipa1.getNumber();
IpAddress ipa2 = new IpAddress(range2);
long ip2num = ipa2.getNumber();
KickstartIpRange ipr = new KickstartIpRange();
ipr.setCreated(new Date());
ipr.setModified(new Date());
ipr.setKsdata(this.ksdata);
ipr.setOrg(ksdata.getOrg());
ipr.setMax(ipa2.getNumber());
ipr.setMin(ipa1.getNumber());
this.ksdata.addIpRange(ipr);
TestUtils.saveAndFlush(ksdata);
setRequestPathInfo("/kickstart/KickstartIpRangeDelete");
addRequestParameter(KickstartIpRangeDeleteAction.MAX, String.valueOf(ip2num));
addRequestParameter(KickstartIpRangeDeleteAction.MIN, String.valueOf(ip1num));
actionPerform();
assertNotNull(request.getAttribute(RequestContext.KICKSTART));
String[] keys = {"kickstart.iprange_delete.success"};
verifyActionMessages(keys);
}
public void testDeleteFailure() throws Exception {
long [] range1 = {192, 168, 4, 1};
long [] range2 = {192, 168, 4, 9};
IpAddress ipa1 = new IpAddress(range1);
IpAddress ipa2 = new IpAddress(range2);
KickstartIpRange ipr = new KickstartIpRange();
ipr.setCreated(new Date());
ipr.setModified(new Date());
ipr.setKsdata(this.ksdata);
ipr.setOrg(ksdata.getOrg());
ipr.setMax(ipa2.getNumber());
ipr.setMin(ipa1.getNumber());
this.ksdata.addIpRange(ipr);
KickstartFactory.saveKickstartData(this.ksdata);
setRequestPathInfo("/kickstart/KickstartIpRangeDelete");
addRequestParameter(KickstartIpRangeDeleteAction.MAX, "0");
addRequestParameter(KickstartIpRangeDeleteAction.MIN, "10");
actionPerform();
String[] keys = {"kickstart.iprange_delete.failure"};
verifyActionErrors(keys);
}
}