use of org.olat.core.id.User in project openolat by klemens.
the class UserTest method testUmFindCharsetPropertyByIdentity.
/**
* test set and get the user's charset
*
* @throws Exception
*/
@Test
public void testUmFindCharsetPropertyByIdentity() throws Exception {
User testuser = userManager.loadUserByKey(u1.getKey());
Assert.assertNotNull(testuser);
Identity identity = securityManager.findIdentityByName(u1.getProperty(UserConstants.LASTNAME, null));
userManager.setUserCharset(identity, WebappHelper.getDefaultCharset());
// simulate user clicks
dbInstance.closeSession();
String charset = userManager.getUserCharset(identity);
assertTrue(charset.matches(WebappHelper.getDefaultCharset()));
}
use of org.olat.core.id.User in project openolat by klemens.
the class LDAPLoginTest method testCronSync.
@Test
@Ignore
public void testCronSync() throws Exception {
Assume.assumeTrue(ldapLoginModule.isLDAPEnabled());
LdapContext ctx;
List<LDAPUser> ldapUserList;
List<Attributes> newLdapUserList;
Map<Identity, Map<String, String>> changedMapIdenityMap;
List<Identity> deletedUserList;
LDAPError errors = new LDAPError();
// find user changed after 2010,01,09,00,00
ctx = ldapManager.bindSystem();
Calendar cal = Calendar.getInstance();
cal.set(2010, 0, 10, 0, 0, 0);
Date syncDate = cal.getTime();
ldapUserList = ldapDao.getUserAttributesModifiedSince(syncDate, ctx);
assertEquals(1, ldapUserList.size());
// find all users
syncDate = null;
ldapUserList = ldapDao.getUserAttributesModifiedSince(syncDate, ctx);
assertEquals(6, ldapUserList.size());
// prepare create- and sync-Lists for each user from defined syncTime
Identity idenity;
Map<String, String> changedAttrMap;
newLdapUserList = new LinkedList<Attributes>();
changedMapIdenityMap = new HashMap<Identity, Map<String, String>>();
for (int i = 0; i < ldapUserList.size(); i++) {
Attributes userAttrs = ldapUserList.get(i).getAttributes();
String user = getAttributeValue(userAttrs.get(syncConfiguration.getOlatPropertyToLdapAttribute("userID")));
idenity = ldapManager.findIdentityByLdapAuthentication(userAttrs, errors);
if (idenity != null) {
changedAttrMap = ldapManager.prepareUserPropertyForSync(userAttrs, idenity);
if (changedAttrMap != null)
changedMapIdenityMap.put(idenity, changedAttrMap);
} else {
if (errors.isEmpty()) {
String[] reqAttrs = syncConfiguration.checkRequestAttributes(userAttrs);
if (reqAttrs == null)
newLdapUserList.add(userAttrs);
else
System.out.println("Cannot create User " + user + " required Attributes are missing");
} else
System.out.println(errors.get());
}
}
// create Users in LDAP Group only existing in OLAT
User user1 = UserManager.getInstance().createUser("hansi", "hürlima", "hansi@hansli.com");
Identity identity1 = securityManager.createAndPersistIdentityAndUser("hansi", null, user1, "LDAP", "hansi");
SecurityGroup secGroup1 = securityManager.findSecurityGroupByName(LDAPConstants.SECURITY_GROUP_LDAP);
securityManager.addIdentityToSecurityGroup(identity1, secGroup1);
user1 = UserManager.getInstance().createUser("chaspi", "meier", "chaspi@hansli.com");
identity1 = securityManager.createAndPersistIdentityAndUser("chaspi", null, user1, "LDAP", "chaspi");
securityManager.addIdentityToSecurityGroup(identity1, secGroup1);
// create User to Delete List
deletedUserList = ldapManager.getIdentitysDeletedInLdap(ctx);
assertEquals(4, (deletedUserList.size()));
// sync users
Iterator<Identity> itrIdent = changedMapIdenityMap.keySet().iterator();
while (itrIdent.hasNext()) {
Identity ident = itrIdent.next();
ldapManager.syncUser(changedMapIdenityMap.get(ident), ident);
}
// create all users
for (int i = 0; i < newLdapUserList.size(); i++) {
ldapManager.createAndPersistUser(newLdapUserList.get(i));
}
// delete all users
ldapManager.deletIdentities(deletedUserList);
// check if users are deleted
deletedUserList = ldapManager.getIdentitysDeletedInLdap(ctx);
assertEquals(0, (deletedUserList.size()));
}
use of org.olat.core.id.User in project openolat by klemens.
the class LDAPLoginTest method testIdentityDeletedInLDAP.
@Test
@Ignore
public void testIdentityDeletedInLDAP() {
Assume.assumeTrue(ldapLoginModule.isLDAPEnabled());
List<Identity> deletList;
// should be empty
LdapContext ctx = ldapManager.bindSystem();
deletList = ldapManager.getIdentitysDeletedInLdap(ctx);
assertEquals(0, (deletList.size()));
// simulate closed session (user adding from startup job)
DBFactory.getInstance().intermediateCommit();
// create some users in LDAPSecurityGroup
User user = UserManager.getInstance().createUser("grollia", "wa", "gorrila@olat.org");
Identity identity = securityManager.createAndPersistIdentityAndUser("gorilla", null, user, "LDAP", "gorrila");
SecurityGroup secGroup1 = securityManager.findSecurityGroupByName(LDAPConstants.SECURITY_GROUP_LDAP);
securityManager.addIdentityToSecurityGroup(identity, secGroup1);
user = UserManager.getInstance().createUser("wer", "immer", "immer@olat.org");
identity = securityManager.createAndPersistIdentityAndUser("der", null, user, "LDAP", "der");
securityManager.addIdentityToSecurityGroup(identity, secGroup1);
user = UserManager.getInstance().createUser("die", "da", "chaspi@olat.org");
identity = securityManager.createAndPersistIdentityAndUser("das", null, user, "LDAP", "das");
securityManager.addIdentityToSecurityGroup(identity, secGroup1);
// simulate closed session
DBFactory.getInstance().intermediateCommit();
// 3 members in LDAP group but not existing in OLAT
deletList = ldapManager.getIdentitysDeletedInLdap(ctx);
assertEquals(3, (deletList.size()));
// delete user in OLAT
securityManager.removeIdentityFromSecurityGroup(identity, secGroup1);
UserDeletionManager.getInstance().deleteIdentity(identity);
// simulate closed session
DBFactory.getInstance().intermediateCommit();
// 2 members in LDAP group but not existing in OLAT
deletList = ldapManager.getIdentitysDeletedInLdap(ctx);
assertEquals(2, (deletList.size()));
}
use of org.olat.core.id.User in project openolat by klemens.
the class LDAPLoginTest method testCreateChangedAttrMap.
@Test
@Ignore
public void testCreateChangedAttrMap() {
Assume.assumeTrue(ldapLoginModule.isLDAPEnabled());
// simulate closed session (user adding from startup job)
DBFactory.getInstance().intermediateCommit();
String uid = "kmeier";
String pwd = "olat";
LDAPError errors = new LDAPError();
boolean usersSyncedAtStartup = ldapLoginModule.isLdapSyncOnStartup();
if (usersSyncedAtStartup) {
try {
// create user but with different attributes - must fail since user already exists
User user = UserManager.getInstance().createUser("klaus", "Meier", "klaus@meier.ch");
Identity identity = securityManager.createAndPersistIdentityAndUser("kmeier", null, user, "LDAP", "kmeier");
SecurityGroup secGroup = securityManager.findSecurityGroupByName(LDAPConstants.SECURITY_GROUP_LDAP);
securityManager.addIdentityToSecurityGroup(identity, secGroup);
// simulate closed session (user adding from startup job)
DBFactory.getInstance().intermediateCommit();
fail("Expected constrant violation becaus of doupliate entry");
} catch (Exception e) {
// success, this is what we expected
}
// changedAttrMap empty since already synchronized
Attributes attrs = ldapManager.bindUser(uid, pwd, errors);
Identity identitys = securityManager.findIdentityByName(uid);
Map<String, String> changedAttrMap = ldapManager.prepareUserPropertyForSync(attrs, identitys);
// map is empty - no attributes to sync
assertNull(changedAttrMap);
} else {
// create user but with different attributes - must fail since user already exists
User user = UserManager.getInstance().createUser("klaus", "Meier", "klaus@meier.ch");
Identity identity = securityManager.createAndPersistIdentityAndUser("kmeier", null, user, "LDAP", "kmeier");
SecurityGroup secGroup = securityManager.findSecurityGroupByName(LDAPConstants.SECURITY_GROUP_LDAP);
securityManager.addIdentityToSecurityGroup(identity, secGroup);
// simulate closed session (user adding from startup job)
DBFactory.getInstance().intermediateCommit();
// changedAttrMap has 2 changes and uid as entrys (Klaus!=klaus, klaus@olat.org!=klaus@meier.ch)
Attributes attrs = ldapManager.bindUser(uid, pwd, errors);
Identity identitys = securityManager.findIdentityByName(uid);
Map<String, String> changedAttrMap = ldapManager.prepareUserPropertyForSync(attrs, identitys);
// result must be 3: 2 changed plus the user ID which is always in the map
assertEquals(3, changedAttrMap.keySet().size());
}
// nothing to change for this user
uid = "mrohrer";
Attributes attrs = ldapManager.bindUser(uid, pwd, errors);
Identity identitys = securityManager.findIdentityByName(uid);
Map<String, String> changedAttrMap = ldapManager.prepareUserPropertyForSync(attrs, identitys);
assertEquals(true, (changedAttrMap == null));
}
use of org.olat.core.id.User in project openolat by klemens.
the class UserMgmtTest method testUpdateUser_emptyInstitutionalEmail.
@Test
public void testUpdateUser_emptyInstitutionalEmail() throws IOException, URISyntaxException {
String login = "update-" + UUID.randomUUID();
User user = userManager.createUser(login, login, login + "@openolat.com");
user.setProperty(UserConstants.INSTITUTIONALEMAIL, "inst" + login + "@openolat.com");
Identity id = securityManager.createAndPersistIdentityAndUser(login, null, user, "OLAT", login, "secret");
dbInstance.commitAndCloseSession();
Assert.assertEquals("inst" + login + "@openolat.com", id.getUser().getInstitutionalEmail());
RestConnection conn = new RestConnection();
assertTrue(conn.login("administrator", "openolat"));
// set the institutional email empty
UserVO updateVo = new UserVO();
updateVo.setKey(id.getKey());
updateVo.setLogin(id.getName());
updateVo.setFirstName(id.getUser().getFirstName());
updateVo.setLastName(id.getUser().getLastName());
updateVo.setEmail(id.getUser().getEmail());
updateVo.putProperty(UserConstants.INSTITUTIONALEMAIL, "");
URI updateRequest = UriBuilder.fromUri(getContextURI()).path("users").path(id.getKey().toString()).build();
HttpPost updateMethod = conn.createPost(updateRequest, MediaType.APPLICATION_JSON);
conn.addJsonEntity(updateMethod, updateVo);
updateMethod.addHeader("Accept-Language", "en");
HttpResponse updateResponse = conn.execute(updateMethod);
int statusCode = updateResponse.getStatusLine().getStatusCode();
Assert.assertEquals(200, statusCode);
EntityUtils.consume(updateResponse.getEntity());
Identity identity = securityManager.loadIdentityByKey(id.getKey());
String institutionalEmail = identity.getUser().getInstitutionalEmail();
Assert.assertTrue(institutionalEmail == null || institutionalEmail.isEmpty());
}
Aggregations