Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,9 @@ public enum HtmlElementType {
LI("li"), //
UL("ul"), //
TH("th"), //
TR("tr"); //
TR("tr"), //
PARAGRAPH("p"), //
TD("td"); //

private final String type;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,26 +42,30 @@ public class IDE {
private final WorkbenchFactory workbenchFactory;
private final DatabasePerspectiveFactory databasePerspectiveFactory;
private final GitPerspectiveFactory gitPerspectiveFactory;
private final SecurityPerspectiveFactory securityPerspectiveFactory;

@Autowired
IDE(Browser browser, RestAssuredExecutor restAssuredExecutor, WorkbenchFactory workbenchFactory,
DatabasePerspectiveFactory databasePerspectiveFactory, GitPerspectiveFactory gitPerspectiveFactory) {
DatabasePerspectiveFactory databasePerspectiveFactory, GitPerspectiveFactory gitPerspectiveFactory,
SecurityPerspectiveFactory securityPerspectiveFactory) {
this(browser, DirigibleTestTenant.createDefaultTenant()
.getUsername(),
DirigibleTestTenant.createDefaultTenant()
.getPassword(),
restAssuredExecutor, workbenchFactory, databasePerspectiveFactory, gitPerspectiveFactory);
restAssuredExecutor, workbenchFactory, databasePerspectiveFactory, gitPerspectiveFactory, securityPerspectiveFactory);
}

IDE(Browser browser, String username, String password, RestAssuredExecutor restAssuredExecutor, WorkbenchFactory workbenchFactory,
DatabasePerspectiveFactory databasePerspectiveFactory, GitPerspectiveFactory gitPerspectiveFactory) {
DatabasePerspectiveFactory databasePerspectiveFactory, GitPerspectiveFactory gitPerspectiveFactory,
SecurityPerspectiveFactory securityPerspectiveFactory) {
this.browser = browser;
this.restAssuredExecutor = restAssuredExecutor;
this.username = username;
this.password = password;
this.workbenchFactory = workbenchFactory;
this.databasePerspectiveFactory = databasePerspectiveFactory;
this.gitPerspectiveFactory = gitPerspectiveFactory;
this.securityPerspectiveFactory = securityPerspectiveFactory;
}

public Browser getBrowser() {
Expand All @@ -88,6 +92,14 @@ public void assertStatusBarMessage(String expectedMessage) {
browser.assertElementExistsByTypeAndText(HtmlElementType.SPAN, expectedMessage);
}

public SecurityPerspective openSecurityPerspective() {
openHomePage();

browser.clickOnElementById("perspective-security");

return securityPerspectiveFactory.create(browser);
}

public DatabasePerspective openDatabasePerspective() {
openHomePage();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,17 @@ public class IDEFactory {
private final WorkbenchFactory workbenchFactory;
private final DatabasePerspectiveFactory databasePerspectiveFactory;
private final GitPerspectiveFactory gitPerspectiveFactory;
private final SecurityPerspectiveFactory securityPerspectiveFactory;

protected IDEFactory(BrowserFactory browserFactory, RestAssuredExecutor restAssuredExecutor, WorkbenchFactory workbenchFactory,
DatabasePerspectiveFactory databasePerspectiveFactory, GitPerspectiveFactory gitPerspectiveFactory) {
DatabasePerspectiveFactory databasePerspectiveFactory, GitPerspectiveFactory gitPerspectiveFactory,
SecurityPerspectiveFactory securityPerspectiveFactory) {
this.browserFactory = browserFactory;
this.restAssuredExecutor = restAssuredExecutor;
this.workbenchFactory = workbenchFactory;
this.databasePerspectiveFactory = databasePerspectiveFactory;
this.gitPerspectiveFactory = gitPerspectiveFactory;
this.securityPerspectiveFactory = securityPerspectiveFactory;
}

public IDE create() {
Expand All @@ -46,11 +49,11 @@ public IDE create(String username, String password) {

public IDE create(Browser browser, String username, String password) {
return new IDE(browser, username, password, restAssuredExecutor, workbenchFactory, databasePerspectiveFactory,
gitPerspectiveFactory);
gitPerspectiveFactory, securityPerspectiveFactory);
}

public IDE create(String host, String username, String password) {
return new IDE(browserFactory.createByHost(host), username, password, restAssuredExecutor, workbenchFactory,
databasePerspectiveFactory, gitPerspectiveFactory);
databasePerspectiveFactory, gitPerspectiveFactory, securityPerspectiveFactory);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package org.eclipse.dirigible.tests.framework.ide;

import org.eclipse.dirigible.tests.framework.browser.Browser;
import org.eclipse.dirigible.tests.framework.browser.HtmlElementType;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;

@Lazy
@Component
public class SecurityPerspective {
private final Browser browser;

protected SecurityPerspective(Browser browser) {
this.browser = browser;
}

public void assertRoleIsPresent(String roleName, String roleDescription) {
browser.clickOnElementWithText(HtmlElementType.SPAN, "Roles");
browser.assertElementExistsByTypeAndText(HtmlElementType.TD, roleName);
browser.assertElementExistsByTypeAndText(HtmlElementType.TD, roleDescription);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package org.eclipse.dirigible.tests.framework.ide;

import org.eclipse.dirigible.tests.framework.browser.Browser;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;


@Lazy
@Component
public class SecurityPerspectiveFactory {
private final Browser browser;

protected SecurityPerspectiveFactory(Browser browser) {
this.browser = browser;
}

public SecurityPerspective create() {
return create(browser);
}

public SecurityPerspective create(Browser browser) {
return new SecurityPerspective(browser);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,20 @@
*/
package org.eclipse.dirigible.tests.framework.ide;

import org.apache.commons.lang3.SystemUtils;
import org.eclipse.dirigible.tests.framework.browser.Browser;
import org.eclipse.dirigible.tests.framework.browser.HtmlAttribute;
import org.eclipse.dirigible.tests.framework.browser.HtmlElementType;
import org.eclipse.dirigible.tests.framework.util.SynchronizationUtil;
import org.openqa.selenium.Keys;

public class Workbench {

public static final String PROJECTS_VIEW_ID = "pvtree";
public static final String PROJECT_NAME_INPUT_ID = "pgfi1";
public static final String FILE_NAME_INPUT_ID = "fdti1";
private static final String PROJECTS_CONTEXT_MENU_NEW_PROJECT = "New Project";
private static final String CREATE_PROJECT_BUTTON_TEXT = "Create";
private static final String CREATE_BUTTON_TEXT = "Create";

private final Browser browser;
private final WelcomeViewFactory welcomeViewFactory;
Expand Down Expand Up @@ -66,7 +69,7 @@ public void createNewProject(String projectName) {

browser.enterTextInElementById(PROJECT_NAME_INPUT_ID, projectName);

browser.clickOnElementWithText(HtmlElementType.BUTTON, CREATE_PROJECT_BUTTON_TEXT);
browser.clickOnElementWithText(HtmlElementType.BUTTON, CREATE_BUTTON_TEXT);
}

public void createFileInProject(String projectName, String newFileType) {
Expand Down Expand Up @@ -95,4 +98,38 @@ public Terminal openTerminal() {
return terminalFactory.create(browser);
}

public void createCustomElement(String fileName, String elementType) {
browser.clickOnElementByAttributePatternAndText(HtmlElementType.SPAN, HtmlAttribute.CLASS, "fd-menu__title", elementType);

browser.enterTextInElementById(FILE_NAME_INPUT_ID, fileName);
browser.clickOnElementWithText(HtmlElementType.BUTTON, CREATE_BUTTON_TEXT);
}

public void createCustomElementInProject(String projectName, String fileName, String elementType) {
browser.rightClickOnElementContainingText(HtmlElementType.ANCHOR, projectName);
createCustomElement(fileName, elementType);
}

public void openDialogFromButton(String buttonText) {
browser.clickOnElementByAttributePattern(HtmlElementType.BUTTON, HtmlAttribute.LABEL, buttonText);
}

public void saveAll() {
browser.clickOnElementByAttributeValue(HtmlElementType.BUTTON, HtmlAttribute.GLYPH, "sap-icon--save");
}

public void selectAll() {
if (SystemUtils.IS_OS_MAC)
browser.pressMultipleKeys(Keys.COMMAND, "a");
else
browser.pressMultipleKeys(Keys.CONTROL, "a");
}


public void addContentToField(String fieldId, String fieldContent) {
browser.clickOnElementById(fieldId);
selectAll();
browser.type(fieldContent);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package org.eclipse.dirigible.integration.tests.ui.tests;

import org.eclipse.dirigible.tests.base.UserInterfaceIntegrationTest;
import org.eclipse.dirigible.tests.framework.ide.SecurityPerspective;
import org.eclipse.dirigible.tests.framework.ide.Workbench;
import org.eclipse.dirigible.tests.framework.browser.HtmlAttribute;
import org.eclipse.dirigible.tests.framework.browser.HtmlElementType;
import org.junit.jupiter.api.Test;

public class CreateRolesDefinitionIT extends UserInterfaceIntegrationTest {

private static final String PROJECT_NAME = "CreateRolesDefinitionIT";
private static final String FILE_NAME = "test1.roles";
private static final String ROLE_NAME = "test";
private static final String ROLE_DESCRIPTION = "Test role";

@Test
void test() {
Workbench workbench = ide.openWorkbench();
workbench.createNewProject(this.getClass()
.getSimpleName());

workbench.createCustomElementInProject(PROJECT_NAME, FILE_NAME, "Roles Definitions");
workbench.openFile(FILE_NAME);

assertFileTabIsOpen(FILE_NAME);

workbench.openDialogFromButton("Add");

workbench.addContentToField("reriName", ROLE_NAME);
workbench.addContentToField("reriRoles", ROLE_DESCRIPTION);

browser.clickOnElementByAttributePattern(HtmlElementType.BUTTON, HtmlAttribute.LABEL, "Add");
workbench.saveAll();

workbench.publishAll(true);

SecurityPerspective securityPerspective = ide.openSecurityPerspective();
securityPerspective.assertRoleIsPresent(ROLE_NAME, ROLE_DESCRIPTION);
}

private void assertFileTabIsOpen(String fileName) {
browser.assertElementExistByAttributePatternAndText(HtmlElementType.SPAN, HtmlAttribute.CLASS, "fd-icon-tab-bar__tag", fileName);
}
}
Loading