/**
* Copyright (C) 2012 BonitaSoft S.A.
* BonitaSoft, 32 rue Gustave Eiffel - 38000 Grenoble
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2.0 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.bonitasoft.web.rest.server.api.organization;
import static org.bonitasoft.web.rest.model.builder.identity.ContactDataBuilder.aContactData;
import static org.bonitasoft.web.toolkit.client.data.APIID.makeAPIID;
import static org.junit.Assert.assertEquals;
import java.util.List;
import org.bonitasoft.engine.api.IdentityAPI;
import org.bonitasoft.engine.api.TenantAPIAccessor;
import org.bonitasoft.engine.exception.BonitaHomeNotSetException;
import org.bonitasoft.engine.exception.DeletionException;
import org.bonitasoft.engine.exception.ServerAPIException;
import org.bonitasoft.engine.exception.UnknownAPITypeException;
import org.bonitasoft.engine.identity.User;
import org.bonitasoft.engine.identity.UserCreator;
import org.bonitasoft.engine.identity.UserCriterion;
import org.bonitasoft.test.toolkit.organization.TestUser;
import org.bonitasoft.test.toolkit.organization.TestUserFactory;
import org.bonitasoft.web.rest.model.builder.identity.ContactDataBuilder;
import org.bonitasoft.web.rest.model.identity.ProfessionalContactDataItem;
import org.bonitasoft.web.rest.server.AbstractConsoleTest;
import org.bonitasoft.web.toolkit.client.data.APIID;
import org.junit.After;
import org.junit.Test;
/**
* @author Paul AMAR
*/
public class APIProfessionalContactDataIntegrationTest extends AbstractConsoleTest {
private APIProfessionalContactData apiProfessionalContactData;
@After
public void cleanUsersInDB() throws BonitaHomeNotSetException, ServerAPIException, UnknownAPITypeException, DeletionException {
final IdentityAPI identityAPI = TenantAPIAccessor.getIdentityAPI(TestUserFactory.getRidleyScott().getSession());
List<User> users = identityAPI.getUsers(0, 200, UserCriterion.FIRST_NAME_ASC);
while (!users.isEmpty()) {
for (final User user : users) {
identityAPI.deleteUser(user.getId());
}
users = identityAPI.getUsers(0, 200, UserCriterion.FIRST_NAME_ASC);
}
}
@Override
public void consoleTestSetUp() throws Exception {
apiProfessionalContactData = new APIProfessionalContactData();
apiProfessionalContactData.setCaller(getAPICaller(TestUserFactory.getRidleyScott().getSession(), "API/identity/professionalcontactdata"));
}
@Override
protected TestUser getInitiator() {
return TestUserFactory.getRidleyScott();
}
protected TestUser createUserWithProfessionnalContactData(final ContactDataBuilder aContactData) {
final UserCreator userCreator = new UserCreator("aUser", "aPassword");
userCreator.setProfessionalContactData(aContactData.toContactDataCreator());
return getInitiator().createUser(userCreator);
}
@Test
public void
getProfessionalContactData_return_professional_contact_data_of_user_with_given_id() {
final ContactDataBuilder aContactData = aContactData();
final TestUser user = createUserWithProfessionnalContactData(aContactData);
final ProfessionalContactDataItem result = apiProfessionalContactData.get(makeAPIID(user.getId()));
final ProfessionalContactDataItem expectedItem = aContactData.toProfessionalContactDataItem();
assertEquals(expectedItem.getEmail(), result.getEmail());
assertEquals(expectedItem.getPhoneNumber(), result.getPhoneNumber());
assertEquals(expectedItem.getMobileNumber(), result.getMobileNumber());
assertEquals(expectedItem.getFaxNumber(), result.getFaxNumber());
assertEquals(expectedItem.getBuilding(), result.getBuilding());
assertEquals(expectedItem.getRoom(), result.getRoom());
assertEquals(expectedItem.getAddress(), result.getAddress());
assertEquals(expectedItem.getZipCode(), result.getZipCode());
assertEquals(expectedItem.getCity(), result.getCity());
assertEquals(expectedItem.getState(), result.getState());
assertEquals(expectedItem.getCountry(), result.getCountry());
assertEquals(expectedItem.getWebsite(), result.getWebsite());
}
@Test
public void updateProfessionalContactData_update_professional_contact_data_of_given_user() {
final TestUser user = createUserWithProfessionnalContactData(aContactData());
final ProfessionalContactDataItem contactDataItem = aContactData().withAddress("anOtherAddress").toProfessionalContactDataItem();
final ProfessionalContactDataItem updatedItem =
apiProfessionalContactData.update(makeAPIID(user.getId()), contactDataItem.getAttributes());
final ProfessionalContactDataItem expectedItem = apiProfessionalContactData.get(makeAPIID(user.getId()));
assertItemEquals(expectedItem, updatedItem);
}
@Test
public void addProfessionalContactData_add_professional_contact_data_to_a_user() {
final TestUser user = getInitiator().createUser("user", "pwd");
final ProfessionalContactDataItem res = new ProfessionalContactDataItem();
res.setAddress("New address");
res.setId(user.getId());
apiProfessionalContactData.add(res);
final ProfessionalContactDataItem result = apiProfessionalContactData.get(APIID.makeAPIID(user.getId()));
assertEquals(result.getCity(), null);
assertEquals(result.getAddress(), "New address");
assertEquals(result.getBuilding(), null);
}
}