/** * Copyright (c) 2009--2014 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.domain.rhnpackage.test; import com.redhat.rhn.common.db.datasource.ModeFactory; import com.redhat.rhn.common.db.datasource.WriteMode; import com.redhat.rhn.common.hibernate.HibernateFactory; import com.redhat.rhn.common.util.MD5Crypt; import com.redhat.rhn.domain.channel.Channel; import com.redhat.rhn.domain.common.ChecksumFactory; import com.redhat.rhn.domain.org.Org; import com.redhat.rhn.domain.rhnpackage.Package; import com.redhat.rhn.domain.rhnpackage.PackageArch; import com.redhat.rhn.domain.rhnpackage.PackageCapability; import com.redhat.rhn.domain.rhnpackage.PackageEvr; import com.redhat.rhn.domain.rhnpackage.PackageFactory; import com.redhat.rhn.domain.rhnpackage.PackageFile; import com.redhat.rhn.domain.rhnpackage.PackageGroup; import com.redhat.rhn.domain.rhnpackage.PackageName; import com.redhat.rhn.domain.rhnpackage.PackageSource; import com.redhat.rhn.domain.rpm.SourceRpm; import com.redhat.rhn.domain.rpm.test.SourceRpmTest; import com.redhat.rhn.domain.user.User; import com.redhat.rhn.testing.RhnBaseTestCase; import com.redhat.rhn.testing.TestUtils; import com.redhat.rhn.testing.UserTestUtils; import java.util.Date; import java.util.HashMap; import java.util.Map; /** * PackageTest * @version $Rev$ */ public class PackageTest extends RhnBaseTestCase { public void testPackage() throws Exception { User user = UserTestUtils.findNewUser("testUser", "testOrg" + this.getClass().getSimpleName()); Package pkg = createTestPackage(user.getOrg()); assertNotNull(pkg); //make sure we got written to the db assertNotNull(pkg.getId()); TestUtils.flushAndEvict(pkg); Package lookup = PackageFactory.lookupByIdAndOrg(pkg.getId(), pkg.getOrg()); assertNotNull(lookup.getBuildTime()); } public void testFile() throws Exception { User user = UserTestUtils.findNewUser("testUser", "testOrg" + this.getClass().getSimpleName()); Package pkg = createTestPackage(user.getOrg()); assertNotNull(pkg); String filename = "foo-2.31-4-i386.rpm"; String path = "/foo/bar/foos/"; pkg.setPath(path + filename); assertEquals(filename, pkg.getFile()); pkg.setPath(filename); assertEquals(filename, pkg.getFile()); pkg.setPath(""); assertNull(pkg.getFile()); pkg.setPath(null); assertNull(pkg.getFile()); pkg.setPath("////foo//b///foo/"); assertEquals("foo", pkg.getFile()); } public static Package createTestPackage(Org org) throws Exception { Package p = new Package(); populateTestPackage(p, org); TestUtils.saveAndFlush(p); return p; } public static Package populateTestPackage(Package p, Org org) throws Exception { PackageName pname = PackageNameTest.createTestPackageName(); PackageEvr pevr = PackageEvrFactoryTest.createTestPackageEvr(); PackageGroup pgroup = PackageGroupTest.createTestPackageGroup(); SourceRpm srpm = SourceRpmTest.createTestSourceRpm(); Long testid = new Long(100); String query = "PackageArch.findById"; PackageArch parch = (PackageArch) TestUtils.lookupFromCacheById(testid, query); p.setRpmVersion("foo"); p.setDescription("RHN-JAVA Package Test"); p.setSummary("Created by RHN-JAVA unit tests. Please disregard."); p.setPackageSize(new Long(42)); p.setPayloadSize(new Long(42)); p.setBuildHost("foo2"); p.setBuildTime(new Date()); p.setChecksum(ChecksumFactory.safeCreate( MD5Crypt.crypt(TestUtils.randomString()), "md5")); p.setVendor("Rhn-Java"); p.setPayloadFormat("testpayloadformat"); p.setCompat(new Long(0)); p.setPath(MD5Crypt.crypt(TestUtils.randomString())); p.setHeaderSignature("Rhn-Java Unit Test"); p.setCopyright("Red Hat - RHN - 2005"); p.setCookie("Chocolate Chip"); p.setCreated(new Date()); p.setLastModified(new Date()); p.setOrg(org); p.setPackageName(pname); p.setPackageEvr(pevr); p.setPackageGroup(pgroup); p.setSourceRpm(srpm); p.setPackageArch(parch); p.getPackageFiles().add(createTestPackageFile(p)); p.getPackageFiles().add(createTestPackageFile(p)); HibernateFactory.getSession().save(createTestPackageSource(srpm, org)); return p; } public static PackageSource createTestPackageSource(SourceRpm rpm, Org org) { PackageSource source = new PackageSource(); String string = "dkfjdkjf"; Date date = new Date(); try { source.setBuildHost(string); source.setBuildTime(date); source.setCookie(string); source.setCreated(date); source.setChecksum(ChecksumFactory.safeCreate(string, "md5")); source.setOrg(org); source.setPackageGroup(PackageGroupTest.createTestPackageGroup()); source.setPackageSize(343L); source.setPath(string); source.setPayloadSize(343L); source.setRpmVersion(string); source.setSigchecksum(ChecksumFactory.safeCreate(string, "md5")); source.setSourceRpm(rpm); source.setVendor(string); } catch (Exception e) { e.printStackTrace(); } return source; } public static PackageFile createTestPackageFile(Package pack) { PackageFile file = new PackageFile(); PackageCapability cap = new PackageCapability(); cap.setName(TestUtils.randomString()); cap.setVersion(TestUtils.randomString()); cap.setCreated(new Date()); cap = (PackageCapability) TestUtils.saveAndReload(cap); file.setCapability(cap); file.setPack(pack); file.setDevice(234L); file.setFileMode(3434L); file.setFileSize(3434L); file.setFlags(343L); file.setGroupname("herjej"); file.setInode(343L); file.setLang("eng"); file.setLinkTo("dkfjdkfj"); file.setChecksum(ChecksumFactory.safeCreate("kfdjfkd", "md5")); file.setModified(new Date()); file.setMtime(new Date()); file.setRdev(3434L); file.setUsername("dkfjdk"); file.setCreated(new Date()); file.setVerifyFlags(34434L); return file; } public static void addPackageToChannelNewestPackage(Package p, Channel c) { /* INSERT INTO rhnChannelNewestPackage(CHANNEL_ID, NAME_ID, EVR_ID, PACKAGE_ARCH_ID, PACKGE_ID) VALUES(:channel_id, :name_id, :evr_id, :package_arch_id, :packge_id) */ WriteMode m = ModeFactory. getWriteMode("test_queries", "insert_into_rhnChannelNewestPackage"); Map<String, Object> params = new HashMap<String, Object>(); params.put("channel_id", c.getId()); params.put("name_id", p.getPackageName().getId()); params.put("evr_id", p.getPackageEvr().getId()); params.put("package_arch_id", p.getPackageArch().getId()); params.put("packge_id", p.getId()); m.executeUpdate(params); // insert_into_rhnChannelPackage WriteMode cp = ModeFactory. getWriteMode("test_queries", "insert_into_rhnChannelPackage"); params = new HashMap(); params.put("channel_id", c.getId()); params.put("packge_id", p.getId()); cp.executeUpdate(params); } public void testIsInChannel() { // TODO make this work on sate } }