Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
CommonSteps.java 5 KiB
Newer Older
package stepDefinitions.ui.simplOpen;

import com.microsoft.playwright.Locator;
import com.microsoft.playwright.Page;
import framework.ui.helpers.UiSetup;
import framework.ui.helpers.Utils;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;

import static configuration.ui.data.simplOpen.Authority.*;
import static configuration.ui.data.simplOpen.Participant.*;
import static framework.ui.locators.simplOpen.Authority.*;

public class CommonSteps {

    private final Page page = UiSetup.getPage();
    private final String ERROR_MESSAGE = "Invalid username or password.";

    @When("the (dataspace governance authority )user navigates to the {string} page")
Adolfo Han's avatar
Adolfo Han committed
    public void the_user_navigates_to_the_page(String pageName) {
        getURLByPageName(pageName);
    }

    @Then("the user is redirected to the {string} keycloak")
    public void theUserIsRedirectedToTheKeycloak(String keycloak) {
        switch (keycloak) {
            case "Governance Authority":
                page.waitForURL(URL_KEYCLOAK_AUTHORITY + "/**");
                break;
            case "Consumer":
                page.waitForURL(URL_KEYCLOAK_CONSUMER + "/**");
                break;
            case "Data Provider":
                page.waitForURL(URL_KEYCLOAK_DATA_PROVIDER + "/**");
                break;
            default:
                throw new IllegalArgumentException("Unknown keycloak: " + keycloak);
        }
    }

    @When("the user logs in with a user with {string} role")
Adolfo Han's avatar
Adolfo Han committed
    public void the_user_logs_in_with_a_user_with_role(String role) {
        Utils.LogInDetails userAndPassword = Utils.getUserAndPasswordByRole(role);
        keycloakLogin(userAndPassword);
    }

    @When("the user tries to log in with invalid login credentials")
    public void theUserTriesToLogInWithInvalidLoginCredentials() {
        Utils.LogInDetails invalidCredentials = Utils.getUserNameAndPassword("INVALID");
        keycloakLogin(invalidCredentials);
    }

    @When("the user clicks on the first result from {string}")
    public void theUserClicksOnTheFirstResult(String listName) {
        switch (listName) {
            case "Participant List":
                page.locator(PARTICIPANT_TYPE_COLUMN_FROM_PARTICIPANT_LIST_TABLE_LOCATOR).first().click();
                break;
            case "Request List":
                page.locator(REQUEST_STATUS_COLUMN_FROM_REQUEST_LIST_TABLE_LOCATOR).first().click();
                break;
Adolfo Han's avatar
Adolfo Han committed
            case "Identity Attributes List":
                page.locator(LIST_IDENTITY_ATTRIBUTE_ID_LOCATOR).first().click();
                break;
            default:
                throw new IllegalArgumentException("Unknown List name: ".concat(listName));
        }
    }

    @Then("the user sees an error message displayed")
    public void theUserSeesAnErrorMessageDisplayed() {
        assert (page.locator(ERROR_MESSAGE_LOCATOR).textContent()).contains(ERROR_MESSAGE);
    }

    public void keycloakLogin(Utils.LogInDetails userAndPassword) {
        page.locator(KEYCLOAK_USERNAME_INPUT_LOCATOR).fill(userAndPassword.getUsername());
        page.locator(KEYCLOAK_PASSWORD_INPUT_LOCATOR).fill(userAndPassword.getPassword());
        Locator signInButton = page.locator(KEYCLOAK_SIGN_IN_BUTTON_LOCATOR);
        if (signInButton.isEnabled()) {
            signInButton.click();
        } else {
            throw new RuntimeException("Keycloak's sign in button was not enabled.");
        }
    }

    private void getURLByPageName(String pageName) {
        switch (pageName) {
            case "Welcome to Dataspace Info":
Paola Lucero's avatar
Paola Lucero committed
                page.navigate(URL_AUTHORITY.concat(HOST_ONBOARDING).concat(HOST_APPLICATION));
                break;
            case "Participant Management":
Paola Lucero's avatar
Paola Lucero committed
                page.navigate(URL_AUTHORITY.concat(HOST_ONBOARDING).concat(HOST_ADMINISTRATION).concat("/").concat(HOST_MANAGEMENT_PARTICIPANT));
                break;
            case "Onboarding Status":
Paola Lucero's avatar
Paola Lucero committed
                page.navigate(URL_AUTHORITY.concat(HOST_ONBOARDING).concat(HOST_APPLICATION_ONBOARDING_STATUS));
            case "Additional Request":
Paola Lucero's avatar
Paola Lucero committed
                page.navigate(URL_AUTHORITY.concat(HOST_ONBOARDING).concat(HOST_ADDITIONAL_REQUEST));
            case "Dashboard Requests List":
Paola Lucero's avatar
Paola Lucero committed
                page.navigate(URL_AUTHORITY.concat(HOST_ONBOARDING).concat(HOST_ADMINISTRATION));
            case "Consumer Participant Utility":
                page.navigate(URL_CONSUMER);
                break;
            case "Data Provider Participant Utility":
                page.navigate(URL_DATA_PROVIDER);
Adolfo Han's avatar
Adolfo Han committed
            case "Identity Attributes":
                page.navigate(URL_AUTHORITY.concat(HOST_IDENTITY_ATTRIBUTE));
                break;
Adolfo Han's avatar
Adolfo Han committed
            case "Identity Attributes Creation":
Adolfo Han's avatar
Adolfo Han committed
                page.navigate(URL_AUTHORITY.concat(HOST_IDENTITY_ATTRIBUTE).concat(HOST_IDENTITY_ATTRIBUTE_CREATION));
Adolfo Han's avatar
Adolfo Han committed
                break;
            default:
                throw new IllegalArgumentException("Unknown page: " + pageName);
        }
    }

}