Search in sources :

Example 86 with User

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()));
}
Also used : User(org.olat.core.id.User) Identity(org.olat.core.id.Identity) Test(org.junit.Test)

Example 87 with User

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()));
}
Also used : LDAPUser(org.olat.ldap.model.LDAPUser) User(org.olat.core.id.User) Calendar(java.util.Calendar) Attributes(javax.naming.directory.Attributes) LDAPUser(org.olat.ldap.model.LDAPUser) SecurityGroup(org.olat.basesecurity.SecurityGroup) Date(java.util.Date) Identity(org.olat.core.id.Identity) HashMap(java.util.HashMap) Map(java.util.Map) LdapContext(javax.naming.ldap.LdapContext) Ignore(org.junit.Ignore) Test(org.junit.Test)

Example 88 with User

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()));
}
Also used : LDAPUser(org.olat.ldap.model.LDAPUser) User(org.olat.core.id.User) Identity(org.olat.core.id.Identity) SecurityGroup(org.olat.basesecurity.SecurityGroup) LdapContext(javax.naming.ldap.LdapContext) Ignore(org.junit.Ignore) Test(org.junit.Test)

Example 89 with User

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));
}
Also used : LDAPUser(org.olat.ldap.model.LDAPUser) User(org.olat.core.id.User) Attributes(javax.naming.directory.Attributes) Identity(org.olat.core.id.Identity) SecurityGroup(org.olat.basesecurity.SecurityGroup) NamingException(javax.naming.NamingException) Ignore(org.junit.Ignore) Test(org.junit.Test)

Example 90 with User

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());
}
Also used : HttpPost(org.apache.http.client.methods.HttpPost) User(org.olat.core.id.User) ManagedUserVO(org.olat.user.restapi.ManagedUserVO) UserVO(org.olat.user.restapi.UserVO) HttpResponse(org.apache.http.HttpResponse) Identity(org.olat.core.id.Identity) URI(java.net.URI) Test(org.junit.Test)

Aggregations

User (org.olat.core.id.User)260 Identity (org.olat.core.id.Identity)126 Test (org.junit.Test)82 UserPropertyHandler (org.olat.user.propertyhandlers.UserPropertyHandler)52 HashMap (java.util.HashMap)28 Translator (org.olat.core.gui.translator.Translator)26 SecurityGroup (org.olat.basesecurity.SecurityGroup)20 Date (java.util.Date)18 ArrayList (java.util.ArrayList)16 Locale (java.util.Locale)16 FormItem (org.olat.core.gui.components.form.flexible.FormItem)16 File (java.io.File)14 VelocityContext (org.apache.velocity.VelocityContext)14 MailTemplate (org.olat.core.util.mail.MailTemplate)12 LDAPUser (org.olat.ldap.model.LDAPUser)12 UserManager (org.olat.user.UserManager)12 IOException (java.io.IOException)10 Map (java.util.Map)10 List (java.util.List)8 CloseableModalController (org.olat.core.gui.control.generic.closablewrapper.CloseableModalController)8