218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major/*
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major * The contents of this file are subject to the terms of the Common Development and
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major * Distribution License (the License). You may not use this file except in compliance with the
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major * License.
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major *
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major * specific language governing permission and limitations under the License.
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major *
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major * When distributing Covered Software, include this CDDL Header Notice in each file and include
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major * Header, with the fields enclosed by brackets [] replaced by your own identifying
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major * information: "Portions copyright [year] [name of copyright owner]".
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major *
a4544a5a0e622ef69e38641f87ab1b5685e05911Phill Cunnington * Copyright 2014-2015 ForgeRock AS.
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major */
a4544a5a0e622ef69e38641f87ab1b5685e05911Phill Cunnington
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Majorpackage org.forgerock.openam.idrepo.ldap;
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Majorimport com.sun.identity.idm.IdRepo;
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Majorimport com.sun.identity.idm.IdType;
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Majorimport com.sun.identity.idm.RepoSearchResults;
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Majorimport static org.fest.assertions.Assertions.*;
3fc1b5e9b2ff286cd528a06154cc998198de1e70Craig McDonnell
c42550c0e86e2c3f821f5e754ea8ba52d8bb5427Tony Bamfordimport org.forgerock.openam.utils.CrestQuery;
3fc1b5e9b2ff286cd528a06154cc998198de1e70Craig McDonnellimport org.forgerock.openam.utils.MapHelper;
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Majorimport org.forgerock.opendj.ldap.MemoryBackend;
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Majorimport org.forgerock.opendj.ldap.RequestContext;
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Majorimport org.forgerock.opendj.ldap.RequestHandler;
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Majorimport org.forgerock.opendj.ldap.ResultCode;
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Majorimport org.testng.annotations.BeforeClass;
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Majorimport org.testng.annotations.Test;
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major/**
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major * Contains test cases against an AD where the authentication and user lookup occurs based on the mail attribute.
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major */
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Majorpublic class ADMailBasedRepoTest extends IdRepoTestBase {
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major private static final String AD_MAIL_SETTINGS = "/config/admailsettings.properties";
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major private static final String AD_MAIL_LDIF = "/ldif/admail.ldif";
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major private static final String DEMO_MAIL = "demo@example.com";
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major @BeforeClass
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major public void setUp() throws Exception {
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major idrepo.initialize(MapHelper.readMap(AD_MAIL_SETTINGS));
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major idrepo.addListener(null, idRepoListener);
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major }
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major @Override
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major protected RequestHandler<RequestContext> decorateBackend(MemoryBackend memoryBackend) {
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major return new ADBackend(memoryBackend);
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major }
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major @Override
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major protected String getLDIFPath() {
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major return AD_MAIL_LDIF;
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major }
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major @Test(description = "OPENAM-3428")
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major public void canAuthenticateWithMailAttribute() throws Exception {
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major assertThat(idrepo.authenticate(getCredentials(DEMO_MAIL, "changeit"))).isTrue();
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major //simulate profile lookup
c42550c0e86e2c3f821f5e754ea8ba52d8bb5427Tony Bamford CrestQuery crestQuery = new CrestQuery(DEMO_MAIL);
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major RepoSearchResults results =
c42550c0e86e2c3f821f5e754ea8ba52d8bb5427Tony Bamford idrepo.search(null, IdType.USER, crestQuery, 0, 0, null, true, IdRepo.OR_MOD, null, true);
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major assertThat(results.getErrorCode()).isEqualTo(ResultCode.SUCCESS.intValue());
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major assertThat(results.getType()).isEqualTo(IdType.USER);
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major assertThat(results.getSearchResults()).isNotEmpty().hasSize(1).containsOnly(DEMO_MAIL);
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major }
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major @Test(description = "OPENAM-3428")
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major public void searchReturnsSearchAttributeValues() throws Exception {
c42550c0e86e2c3f821f5e754ea8ba52d8bb5427Tony Bamford CrestQuery crestQuery = new CrestQuery(DEMO_MAIL);
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major RepoSearchResults results =
c42550c0e86e2c3f821f5e754ea8ba52d8bb5427Tony Bamford idrepo.search(null, IdType.USER, crestQuery, 0, 0, null, true, IdRepo.OR_MOD, null, true);
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major assertThat(results.getErrorCode()).isEqualTo(ResultCode.SUCCESS.intValue());
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major assertThat(results.getType()).isEqualTo(IdType.USER);
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major assertThat(results.getSearchResults()).isNotEmpty().hasSize(1).containsOnly(DEMO_MAIL);
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major }
218850cd2701baccfca6d95a95e7bcbffe1293cePeter Major}