/**
* Copyright (c) 2009--2010 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.token.test;
import com.redhat.rhn.domain.rhnpackage.PackageArch;
import com.redhat.rhn.domain.rhnpackage.PackageName;
import com.redhat.rhn.domain.token.ActivationKey;
import com.redhat.rhn.domain.token.Token;
import com.redhat.rhn.domain.token.TokenPackage;
import com.redhat.rhn.domain.token.TokenPackageFactory;
import com.redhat.rhn.testing.BaseTestCaseWithUser;
import com.redhat.rhn.testing.TestUtils;
import java.util.List;
/**
* TokenPackageFactoryTest
* @version $Rev$
*/
public class TokenPackageFactoryTest extends BaseTestCaseWithUser {
public void testLookupPackagesByToken() throws Exception {
// setup
ActivationKey key = ActivationKeyTest.createTestActivationKey(user);
int numPkgsBefore = key.getPackages().size();
TokenPackage pkg1 = TokenPackageTest.createTestPackage(user, key);
assertNotNull(pkg1);
pkg1.getPackageName().setName("cName");
TokenPackage pkg2 = TokenPackageTest.createTestPackage(user, key);
assertNotNull(pkg2);
pkg2.getPackageName().setName("bName");
TokenPackage pkg3 = TokenPackageTest.createTestPackage(user, key);
assertNotNull(pkg3);
pkg3.getPackageName().setName("aName");
TestUtils.flushAndEvict(pkg1);
TestUtils.flushAndEvict(pkg2);
TestUtils.flushAndEvict(pkg3);
//make sure we got written to the db
assertNotNull(pkg1.getId());
assertNotNull(pkg2.getId());
assertNotNull(pkg3.getId());
// execute
List<TokenPackage> pkgs = TokenPackageFactory.lookupPackages(key.getToken());
// verify
assertNotNull(pkgs);
assertEquals(numPkgsBefore + 3, pkgs.size());
Object[] array = pkgs.toArray();
assertEquals("aName", ((TokenPackage) array[0]).getPackageName().getName());
assertEquals("bName", ((TokenPackage) array[1]).getPackageName().getName());
assertEquals("cName", ((TokenPackage) array[2]).getPackageName().getName());
}
public void testLookupPackages() throws Exception {
// setup
ActivationKey key = ActivationKeyTest.createTestActivationKey(user);
int numPkgsBefore = key.getPackages().size();
TokenPackage pkg1 = TokenPackageTest.createTestPackage(user, key);
assertNotNull(pkg1);
// since createTestPackage randomly creates package names, we'll create
// a second package manually.
TokenPackage pkg2 = new TokenPackage();
Long testid = new Long(101);
String query = "PackageArch.findById";
PackageArch parch = (PackageArch) TestUtils.lookupFromCacheById(testid, query);
pkg2.setToken(key.getToken());
pkg2.setPackageName(pkg1.getPackageName());
pkg2.setPackageArch(parch);
key.getPackages().add(pkg2);
TestUtils.flushAndEvict(pkg1);
TestUtils.flushAndEvict(pkg2);
//make sure we got written to the db
assertNotNull(pkg1.getId());
assertNotNull(pkg2.getId());
// execute
List<TokenPackage> pkgs = TokenPackageFactory.lookupPackages(key.getToken(),
pkg1.getPackageName());
// verify
assertNotNull(pkgs);
assertEquals(numPkgsBefore + 2, pkgs.size());
boolean foundPkg1 = false, foundPkg2 = false;
for (TokenPackage pkg : pkgs) {
PackageName packageName = pkg.getPackageName();
PackageArch packageArch = pkg.getPackageArch();
Token token = pkg.getToken();
if (packageName != null && packageArch != null && token != null) {
if (packageName.equals(pkg1.getPackageName()) &&
packageArch.equals(pkg1.getPackageArch()) &&
token.equals(pkg1.getToken())) {
foundPkg1 = true;
}
else if (packageName.equals(pkg2.getPackageName()) &&
packageArch.equals(pkg2.getPackageArch()) &&
token.equals(pkg2.getToken())) {
foundPkg2 = true;
}
}
}
assertTrue(foundPkg1);
assertTrue(foundPkg2);
}
public void testLookupPackage() throws Exception {
// setup
ActivationKey key = ActivationKeyTest.createTestActivationKey(user);
TokenPackage pkg = TokenPackageTest.createTestPackage(user, key);
assertNotNull(pkg);
TestUtils.flushAndEvict(pkg);
//make sure we got written to the db
assertNotNull(pkg.getId());
// execute
TokenPackage lookup = TokenPackageFactory.lookupPackage(pkg.getToken(),
pkg.getPackageName(), pkg.getPackageArch());
// verify
assertNotNull(lookup);
assertEquals(pkg, lookup);
assertNotNull(lookup.getToken());
assertNotNull(lookup.getPackageName());
assertNotNull(lookup.getPackageArch());
}
}