package com.constellio.model.services.security.roles;
import static java.util.Arrays.asList;
import static org.assertj.core.api.Assertions.assertThat;
import org.jdom2.Document;
import org.jdom2.Element;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import com.constellio.model.entities.security.Role;
import com.constellio.model.services.search.SearchServices;
import com.constellio.sdk.tests.ConstellioTest;
public class RolesManagerWriterTest extends ConstellioTest {
@Mock SearchServices searchServices;
private Role validRole;
private RolesManagerWriter writer;
private Document validNewDocument;
private Document document;
@Before
public void setUp()
throws Exception {
validRole = new Role(zeCollection, "uniqueCode", "zeValidRole", asList("operation1", "operation2"));
Element validNewXml = new Element("roles").addContent(new Element("role").setAttribute("code", "uniqueCode")
.setAttribute("title", "zeValidRole").setAttribute("collection", zeCollection)
.addContent(new Element("permission").setText("read")).addContent(new Element("permission").setText("write")));
validNewDocument = new Document(validNewXml);
document = new Document();
writer = new RolesManagerWriter(document);
writer.createEmptyRoles();
}
@Test
public void whenCreateNewRoleThenItIsreated()
throws Exception {
assertThat(document.getRootElement().getChildren()).isEmpty();
assertThat(document.getRootElement().getName()).isEqualTo("roles");
}
@Test
public void givenCorrectRoleThenManagerSaveIt()
throws RolesManagerRuntimeException {
writer.addRole(validRole);
assertThat(document.getRootElement().getChildren()).hasSize(1);
assertThat(document.getRootElement().getChild("role").getAttribute("collection").getValue()).isEqualTo(zeCollection);
assertThat(document.getRootElement().getChild("role").getAttribute("code").getValue()).isEqualTo("uniqueCode");
assertThat(document.getRootElement().getChild("role").getAttribute("title").getValue()).isEqualTo("zeValidRole");
assertThat(document.getRootElement().getChild("role").getText()).isEqualTo("operation1,operation2");
}
@Test
public void givenCorrectCodeAndUpdatedTitleThenTitleIsUpdated()
throws RolesManagerRuntimeException {
writer.addRole(validRole);
writer.updateRole(validRole.withTitle("validTitle"));
assertThat(document.getRootElement().getChildren()).hasSize(1);
assertThat(document.getRootElement().getChild("role").getAttribute("collection").getValue()).isEqualTo(zeCollection);
assertThat(document.getRootElement().getChild("role").getAttribute("code").getValue()).isEqualTo("uniqueCode");
assertThat(document.getRootElement().getChild("role").getAttribute("title").getValue()).isEqualTo("validTitle");
assertThat(document.getRootElement().getChild("role").getText()).isEqualTo("operation1,operation2");
}
@Test
public void givenCorrectCodeAndUpdatedPermissionsThenPermissionsIsUpdated()
throws RolesManagerRuntimeException {
writer.addRole(validRole);
writer.updateRole(validRole.withPermissions(asList("operation3", "operation4")));
assertThat(document.getRootElement().getChildren()).hasSize(1);
assertThat(document.getRootElement().getChild("role").getAttribute("collection").getValue()).isEqualTo(zeCollection);
assertThat(document.getRootElement().getChild("role").getAttribute("code").getValue()).isEqualTo("uniqueCode");
assertThat(document.getRootElement().getChild("role").getAttribute("title").getValue()).isEqualTo("zeValidRole");
assertThat(document.getRootElement().getChild("role").getText()).isEqualTo("operation3,operation4");
}
@Test
public void givenCorrectCodeAndDeleteThenRoleDeleted()
throws RolesManagerRuntimeException {
writer.addRole(validRole);
writer.deleteRole(validRole);
assertThat(document.getRootElement().getChildren()).hasSize(0);
}
}