/**
* Copyright (c) 2013 SUSE LLC
*
* 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.ssm.test;
import com.redhat.rhn.domain.server.Server;
import com.redhat.rhn.domain.user.User;
import com.redhat.rhn.frontend.action.kickstart.PowerManagementAction;
import com.redhat.rhn.frontend.action.kickstart.test.PowerManagementActionTest;
import com.redhat.rhn.manager.kickstart.cobbler.CobblerXMLRPCHelper;
import com.redhat.rhn.testing.RhnMockStrutsTestCase;
import com.redhat.rhn.testing.ServerTestUtils;
import org.cobbler.CobblerConnection;
import org.cobbler.SystemRecord;
import servletunit.HttpServletRequestSimulator;
import java.util.LinkedList;
import java.util.List;
/**
* Tests PowerManagementConfigurationAction
* @author Silvio Moioli <smoioli@suse.de>
*/
public class PowerManagementConfigurationActionTest extends RhnMockStrutsTestCase {
private CobblerConnection connection;
private List<Server> servers;
/**
* Sets up a request.
* @throws Exception if things go wrong
* @see com.redhat.rhn.testing.RhnMockStrutsTestCase#setUp()
*/
public void setUp() throws Exception {
super.setUp();
connection = CobblerXMLRPCHelper.getConnection(user.getLogin());
servers = setUpTestProvisionableSsmServers(user);
}
/**
* Sets up a list of servers with provisioning entitlement and adds them to
* the SSM for test purposes.
* @param user the current user
* @return the list of server
* @throws Exception if something goes wrong
*/
public static List<Server> setUpTestProvisionableSsmServers(User user)
throws Exception {
List<Server> result = new LinkedList<Server>();
for (int i = 0; i < 2; i++) {
Server server = ServerTestUtils.createTestSystem(user);
result.add(server);
ServerTestUtils.addServersToSsm(user, server.getId());
}
return result;
}
/**
* Tests creating Cobbler system records with a chosen profile from SSM.
* @throws Exception if something goes wrong
*/
public void testExecute() throws Exception {
setRequestPathInfo("/systems/ssm/provisioning/PowerManagementConfiguration");
request.setMethod(HttpServletRequestSimulator.POST);
addSubmitted();
addDispatchCall("ssm.provisioning.powermanagement.configuration.update");
request.addParameter(PowerManagementAction.POWER_TYPE,
PowerManagementActionTest.EXPECTED_TYPE);
request.addParameter(PowerManagementAction.POWER_ADDRESS,
PowerManagementActionTest.EXPECTED_ADDRESS);
request.addParameter(PowerManagementAction.POWER_USERNAME,
PowerManagementActionTest.EXPECTED_USERNAME);
request.addParameter(PowerManagementAction.POWER_PASSWORD,
PowerManagementActionTest.EXPECTED_PASSWORD);
request.addParameter(PowerManagementAction.POWER_ID,
PowerManagementActionTest.EXPECTED_ID);
actionPerform();
for (Server server : servers) {
SystemRecord record = SystemRecord
.lookupById(connection, server.getCobblerId());
assertEquals(PowerManagementActionTest.EXPECTED_TYPE, record.getPowerType());
assertEquals(PowerManagementActionTest.EXPECTED_ADDRESS,
record.getPowerAddress());
assertEquals(PowerManagementActionTest.EXPECTED_USERNAME,
record.getPowerUsername());
assertEquals(PowerManagementActionTest.EXPECTED_PASSWORD,
record.getPowerPassword());
assertEquals(PowerManagementActionTest.EXPECTED_ID, record.getPowerId());
}
// In SSM empty string means "do not change"
request.addParameter(PowerManagementAction.POWER_TYPE,
PowerManagementActionTest.EXPECTED_TYPE);
request.addParameter(PowerManagementAction.POWER_ADDRESS, "");
request.addParameter(PowerManagementAction.POWER_USERNAME,
PowerManagementActionTest.EXPECTED_USERNAME_2);
request.addParameter(PowerManagementAction.POWER_PASSWORD,
PowerManagementActionTest.EXPECTED_PASSWORD_2);
request.addParameter(PowerManagementAction.POWER_ID, "");
actionPerform();
for (Server server : servers) {
SystemRecord record = SystemRecord
.lookupById(connection, server.getCobblerId());
assertEquals(PowerManagementActionTest.EXPECTED_TYPE, record.getPowerType());
assertEquals(PowerManagementActionTest.EXPECTED_ADDRESS,
record.getPowerAddress());
assertEquals(PowerManagementActionTest.EXPECTED_USERNAME_2,
record.getPowerUsername());
assertEquals(PowerManagementActionTest.EXPECTED_PASSWORD_2,
record.getPowerPassword());
assertEquals(PowerManagementActionTest.EXPECTED_ID, record.getPowerId());
}
}
}