public void testInvitations() throws Exception {
log.info("BEGIN");
// we need a second user for this test
User user = TestUtils.setupUser("testInvitations");
TestUtils.endSession(true);
UserManager mgr = WebloggerFactory.getWeblogger().getUserManager();
WeblogPermission perm = null;
List perms = null;
// invite user to weblog
perm = mgr.inviteUser(TestUtils.getManagedWebsite(testWeblog), user, WeblogPermission.LIMITED);
String id = perm.getId();
TestUtils.endSession(true);
// accept invitation
testWeblog = TestUtils.getManagedWebsite(testWeblog);
user = TestUtils.getManagedUser(user);
perm = mgr.getPermissions(testWeblog, user);
perm.setPending(false);
mgr.savePermissions(perm);
TestUtils.endSession(true);
// re-query now that we have changed things
user = mgr.getUserByUserName(user.getUserName());
testWeblog = mgr.getWebsiteByHandle(testWeblog.getHandle());
// assert that invitation list is empty
testWeblog = TestUtils.getManagedWebsite(testWeblog);
user = TestUtils.getManagedUser(user);
assertTrue(mgr.getPendingPermissions(user).isEmpty());
assertTrue(mgr.getPendingPermissions(testWeblog).isEmpty());
// assert that user is member of weblog
assertFalse(mgr.getPermissions(testWeblog, user).isPending());
List weblogs = mgr.getWebsites(TestUtils.getManagedUser(user), null, null, null, null, 0, -1);
assertEquals(1, weblogs.size());
assertEquals(testWeblog.getId(), ((Weblog)weblogs.get(0)).getId());
// assert that website has user
List users = mgr.getUsers(testWeblog, null, null, null, 0, -1);
assertEquals(2, users.size());
// test user can be retired from website
mgr.retireUser(testWeblog, user);
TestUtils.endSession(true);
user = mgr.getUser(user.getId());
weblogs = mgr.getWebsites(user, null, null, null, null, 0, -1);
assertEquals(0, weblogs.size());
// cleanup the extra test user
TestUtils.teardownUser(user.getId());
TestUtils.endSession(true);
log.info("END");
}