/**
* 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.manager.kickstart.crypto.test;
import com.redhat.rhn.common.util.MD5Crypt;
import com.redhat.rhn.domain.kickstart.KickstartFactory;
import com.redhat.rhn.domain.kickstart.crypto.CryptoKey;
import com.redhat.rhn.domain.kickstart.crypto.test.CryptoTest;
import com.redhat.rhn.manager.kickstart.crypto.BaseCryptoKeyCommand;
import com.redhat.rhn.manager.kickstart.crypto.CreateCryptoKeyCommand;
import com.redhat.rhn.manager.kickstart.crypto.DeleteCryptoKeyCommand;
import com.redhat.rhn.manager.kickstart.crypto.EditCryptoKeyCommand;
import com.redhat.rhn.testing.BaseTestCaseWithUser;
import org.apache.commons.lang.RandomStringUtils;
/**
* CryptoKeyCommandTest - test for CryptoKeyCommand
* @version $Rev$
*/
public class CryptoKeyCommandTest extends BaseTestCaseWithUser {
private BaseCryptoKeyCommand cmd;
public void setupKey(BaseCryptoKeyCommand cmdIn) throws Exception {
this.cmd = cmdIn;
assertNotNull(cmd.getCryptoKey().getOrg());
cmd.setDescription("Test desc");
cmd.setType("GPG");
cmd.setContents(MD5Crypt.md5Hex(RandomStringUtils.random(28)));
cmd.store();
}
public void testCreateCommand() throws Exception {
setupKey(new CreateCryptoKeyCommand(user.getOrg()));
CryptoKey key = cmd.getCryptoKey();
key = (CryptoKey) reload(key);
assertNotNull(key.getId());
assertNotNull(key.getKey());
}
public void testDuplicate() throws Exception {
setupKey(new CreateCryptoKeyCommand(user.getOrg()));
String usedDesc = cmd.getCryptoKey().getDescription();
cmd = new CreateCryptoKeyCommand(user.getOrg());
cmd.setDescription(usedDesc);
cmd.setType("GPG");
cmd.setContents(MD5Crypt.md5Hex(RandomStringUtils.random(28)));
assertNotNull(cmd.store());
}
public void testEdit() throws Exception {
CryptoKey key = CryptoTest.createTestKey(user.getOrg());
KickstartFactory.saveCryptoKey(key);
flushAndEvict(key);
setupKey(new EditCryptoKeyCommand(user, key.getId()));
assertNotNull(cmd.getCryptoKey());
assertNull(cmd.store());
}
public void testDelete() throws Exception {
CryptoKey key = CryptoTest.createTestKey(user.getOrg());
KickstartFactory.saveCryptoKey(key);
assertNotNull(KickstartFactory.lookupCryptoKeyById(key.getId(), key.getOrg()));
flushAndEvict(key);
KickstartFactory.removeCryptoKey(key);
assertNull(KickstartFactory.lookupCryptoKeyById(key.getId(), key.getOrg()));
//second method
CryptoKey key2 = CryptoTest.createTestKey(user.getOrg());
KickstartFactory.saveCryptoKey(key2);
assertNotNull(KickstartFactory.lookupCryptoKeyById(key2.getId(), key2.getOrg()));
flushAndEvict(key2);
//CryptoKey will be deleted by the cmd.store command in setupKey
setupKey(new DeleteCryptoKeyCommand(user, key2.getId()));
assertNull(KickstartFactory.lookupCryptoKeyById(key2.getId(), key2.getOrg()));
}
public void testDuplicateDelete() throws Exception {
CryptoKey key = CryptoTest.createTestKey(user.getOrg());
KickstartFactory.saveCryptoKey(key);
assertNotNull(KickstartFactory.lookupCryptoKeyById(key.getId(), key.getOrg()));
flushAndEvict(key);
//CryptoKey will be deleted by the cmd.store command in setupKey
setupKey(new DeleteCryptoKeyCommand(user, key.getId()));
assertNull(KickstartFactory.lookupCryptoKeyById(key.getId(), key.getOrg()));
try {
setupKey(new DeleteCryptoKeyCommand(user, key.getDescription()));
// if no exception was thrown there is a problem
fail();
}
catch (IllegalArgumentException e) {
// this is what we want to see
} // other exceptions are legitimate errors, throw them and fail the test
}
}