package org.bonitasoft.web.rest.server.datastore.profile.member;
import java.util.HashMap;
import java.util.Map;
import junit.framework.Assert;
import org.bonitasoft.test.toolkit.organization.TestGroup;
import org.bonitasoft.test.toolkit.organization.TestGroupFactory;
import org.bonitasoft.test.toolkit.organization.TestUser;
import org.bonitasoft.test.toolkit.organization.TestUserFactory;
import org.bonitasoft.test.toolkit.organization.profiles.TestProfile;
import org.bonitasoft.test.toolkit.organization.profiles.TestProfileFactory;
import org.bonitasoft.test.toolkit.organization.profiles.TestProfileMember;
import org.bonitasoft.web.rest.model.portal.profile.ProfileMemberItem;
import org.bonitasoft.web.rest.server.AbstractConsoleTest;
import org.bonitasoft.web.rest.server.api.profile.APIProfileMember;
import org.bonitasoft.web.rest.server.framework.search.ItemSearchResult;
import org.bonitasoft.web.toolkit.client.data.APIID;
import org.junit.Ignore;
import org.junit.Test;
public class ProfileMemberDatastoreIntegrationTest extends AbstractConsoleTest {
private APIProfileMember apiProfileMember;
@Override
public void consoleTestSetUp() throws Exception {
this.apiProfileMember = new APIProfileMember();
this.apiProfileMember.setCaller(getAPICaller(getInitiator().getSession(), "API/portal/profileMember"));
}
@Override
protected TestUser getInitiator() {
return TestUserFactory.getJohnCarpenter();
}
@Ignore("TestProfileFactory need to be updated to stop using command")
@Test
public void testWeCanSearchAUser() {
TestProfile profile = TestProfileFactory.newProfile(getInitiator().getSession()).create();
TestProfileMember membership = profile.addMember(getInitiator());
Map<String, String> filters = createSearchFilters(profile, ProfileMemberItem.VALUE_MEMBER_TYPE_USER);
ItemSearchResult<ProfileMemberItem> search = apiProfileMember.search(0, 1, null, null, filters);
Assert.assertEquals(APIID.makeAPIID(membership.getMembershipId()), search.getResults().get(0).getId());
}
/*
* FIXME engine throw npe when trying to add group to a profile
*/
@Ignore
@Test
public void testWeCanSearchAGroup() {
TestProfile profile = TestProfileFactory.newProfile(getInitiator().getSession()).create();
TestGroup group = TestGroupFactory.createGroup("name", "desciption");
TestProfileMember membership = profile.addMember(group);
Map<String, String> filters = createSearchFilters(profile, ProfileMemberItem.VALUE_MEMBER_TYPE_GROUP);
ItemSearchResult<ProfileMemberItem> search = apiProfileMember.search(0, 1, null, null, filters);
Assert.assertEquals(APIID.makeAPIID(membership.getMembershipId()), search.getResults().get(0).getId());
}
private Map<String, String> createSearchFilters(TestProfile profile, String memberType) {
Map<String, String> filters = new HashMap<String, String>();
filters.put(ProfileMemberItem.ATTRIBUTE_PROFILE_ID, String.valueOf(profile.getId()));
filters.put(ProfileMemberItem.FILTER_MEMBER_TYPE, memberType);
return filters;
}
}