public void testLookup() {
    // first lets just check on permissions...
    user.addPermanentRole(RoleFactory.ACTIVATION_KEY_ADMIN);
    final ActivationKey key = manager.createNewActivationKey(user, "Test");
    ActivationKey temp;
    // we make newuser
    // unfortunately satellite is NOT multiorg aware...
    // So we can't check on the org clause
    // so...
    User newUser =
        UserTestUtils.findNewUser("testUser2", "testOrg" + this.getClass().getSimpleName());
    try {
      manager.lookupByKey(key.getKey(), newUser);
      String msg =
          "Permission check failed :(.."
              + "Activation key should not have gotten found out"
              + " because the user does not have activation key admin role";

      fail(msg);
    } catch (Exception e) {
      // great!.. Exception for permission failure always welcome
    }
    try {
      temp = manager.lookupByKey(key.getKey() + "FOFOFOFOFOFOF", user);
      String msg = "NUll lookup failed, because this object should NOT exist!";
      fail(msg);
    } catch (Exception e) {
      // great!.. Exception for null lookpu is controvoersial but convenient..
    }
    temp = manager.lookupByKey(key.getKey(), user);
    assertNotNull(temp);
    assertEquals(user.getOrg(), temp.getOrg());
  }
  public void testCreate() throws Exception {
    user.addPermanentRole(RoleFactory.ACTIVATION_KEY_ADMIN);
    String note = "Test";
    final ActivationKey key = manager.createNewActivationKey(user, note);
    assertEquals(user.getOrg(), key.getOrg());
    assertEquals(note, key.getNote());
    assertNotNull(key.getKey());
    Server server = ServerFactoryTest.createTestServer(user, true);

    final ActivationKey key1 = manager.createNewReActivationKey(user, server, note);
    assertEquals(server, key1.getServer());

    ActivationKey temp = manager.lookupByKey(key.getKey(), user);
    assertNotNull(temp);
    assertEquals(user.getOrg(), temp.getOrg());
    assertEquals(note, temp.getNote());

    String keyName = "I_RULE_THE_WORLD";
    Long usageLimit = new Long(1200);
    Channel baseChannel = ChannelTestUtils.createBaseChannel(user);

    final ActivationKey key2 =
        manager.createNewReActivationKey(
            user, server, keyName, note, usageLimit, baseChannel, true, null);

    temp = (ActivationKey) reload(key2);
    assertTrue(temp.getKey().endsWith(keyName));
    assertEquals(note, temp.getNote());
    assertEquals(usageLimit, temp.getUsageLimit());
    Set channels = new HashSet();
    channels.add(baseChannel);
    assertEquals(channels, temp.getChannels());

    // since universal default == true we have to
    // check if the user org has it..
    Token token = user.getOrg().getToken();
    assertEquals(channels, token.getChannels());
    assertEquals(usageLimit, token.getUsageLimit());
  }
  public void testLookupBySession() throws Exception {
    // Still have that weird error creating a test server
    // sometimes in hosted.
    ActivationKey k = createTestActivationKey(user);
    KickstartData ksdata = KickstartDataTest.createKickstartWithOptions(k.getOrg());
    KickstartFactory.saveKickstartData(ksdata);
    KickstartSession sess = KickstartSessionTest.createKickstartSession(ksdata, k.getCreator());
    KickstartFactory.saveKickstartSession(sess);
    k.setKickstartSession(sess);
    ActivationKeyFactory.save(k);
    k = (ActivationKey) reload(k);

    ActivationKey lookedUp = ActivationKeyFactory.lookupByKickstartSession(sess);
    assertNotNull(lookedUp);
  }