Merge branch 'main' into ui-ingestion-service

This commit is contained in:
darth-coder00 2022-01-25 11:59:30 +05:30
commit 92e3e40698
3 changed files with 139 additions and 1 deletions

View File

@ -62,7 +62,7 @@ base_plugins = {
plugins: Dict[str, Set[str]] = {
"amundsen": {"neo4j~=4.4.0"},
"athena": {"PyAthena[SQLAlchemy]"},
"bigquery": {"sqlalchemy-bigquery==1.2.2", "pyarrow-6.0.1"},
"bigquery": {"sqlalchemy-bigquery==1.2.2", "pyarrow~=6.0.1"},
"bigquery-usage": {"google-cloud-logging", "cachetools"},
# "docker": {"docker==5.0.3"},
"docker": {"python_on_whales==0.34.0"},

View File

@ -101,6 +101,7 @@ const AddRuleModal: FC<AddRuleProps> = ({
'focus:tw-outline-none focus:tw-border-focus hover:tw-border-hover tw-h-10 tw-bg-white',
{ 'tw-cursor-not-allowed tw-opacity-60': isEditing }
)}
data-testid="select-operation"
disabled={isEditing}
name="operation"
value={data.operation}
@ -123,6 +124,7 @@ const AddRuleModal: FC<AddRuleProps> = ({
className="tw-text-sm tw-appearance-none tw-border tw-border-main
tw-rounded tw-w-full tw-py-2 tw-px-3 tw-text-grey-body tw-leading-tight
focus:tw-outline-none focus:tw-border-focus hover:tw-border-hover tw-h-10 tw-bg-white"
data-testid="select-access"
name="access"
value={access}
onChange={(e) => setAccess(e.target.value as RuleAccess)}>

View File

@ -0,0 +1,136 @@
package org.openmetadata.catalog.selenium.pages.roles;
import com.github.javafaker.Faker;
import java.time.Duration;
import java.util.ArrayList;
import java.util.logging.Logger;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;
import org.openmetadata.catalog.selenium.events.Events;
import org.openmetadata.catalog.selenium.properties.Property;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.Assert;
@Order(19)
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class RolesPageTest {
private static final Logger LOG = Logger.getLogger(RolesPageTest.class.getName());
static WebDriver webDriver;
static String url = Property.getInstance().getURL();
static Faker faker = new Faker();
static String roleDisplayName = faker.name().firstName();
static String enterDescription = "//div[@data-testid='enterDescription']/div/div[2]/div/div/div/div/div/div";
static Actions actions;
static WebDriverWait wait;
Integer waitTime = Property.getInstance().getSleepTime();
@BeforeEach
public void openMetadataWindow() {
System.setProperty("webdriver.chrome.driver", "src/test/resources/drivers/linux/chromedriver");
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
options.addArguments("--window-size=1280,800");
webDriver = new ChromeDriver(options);
actions = new Actions(webDriver);
wait = new WebDriverWait(webDriver, Duration.ofSeconds(30));
webDriver.manage().window().maximize();
webDriver.get(url);
}
@Test
@Order(1)
public void openRolesPage() throws InterruptedException {
Events.click(webDriver, By.cssSelector("[data-testid='closeWhatsNew']")); // Close What's new
Events.click(webDriver, By.cssSelector("[data-testid='menu-button'][id='menu-button-Settings']")); // Setting
Events.click(webDriver, By.cssSelector("[data-testid='menu-item-Roles']")); // Setting/Roles
Thread.sleep(waitTime);
}
@Test
@Order(2)
public void addRole() throws InterruptedException {
openRolesPage();
Events.click(webDriver, By.cssSelector("[data-testid='add-role']"));
Events.sendKeys(webDriver, By.name("name"), faker.name().firstName()); // name
Events.sendKeys(webDriver, By.name("displayName"), roleDisplayName); // displayName
Events.sendKeys(webDriver, By.xpath(enterDescription), faker.address().toString());
Events.click(webDriver, By.cssSelector("[data-testid='boldButton']"));
Events.click(webDriver, By.cssSelector("[data-testid='italicButton']"));
Events.click(webDriver, By.cssSelector("[data-testid='linkButton']"));
Events.click(webDriver, By.cssSelector("[data-testid='saveButton']"));
}
@Test
@Order(3)
public void editDescription() throws InterruptedException {
openRolesPage();
Events.click(webDriver, By.xpath("//*[text()[contains(.,'" + roleDisplayName + "')]] "));
Events.click(webDriver, By.cssSelector("[data-testid='edit-description']"));
wait.until(ExpectedConditions.elementToBeClickable(By.xpath(enterDescription)));
Events.sendKeys(webDriver, By.xpath(enterDescription), faker.address().toString());
Events.click(webDriver, By.cssSelector("[data-testid='save']"));
}
@Test
@Order(4)
public void addRules() throws InterruptedException {
openRolesPage();
Events.click(webDriver, By.xpath("//*[text()[contains(.,'" + roleDisplayName + "')]] "));
Events.click(webDriver, By.cssSelector("[data-testid='add-new-user-button']"));
Events.click(webDriver, By.cssSelector("[data-testid='select-operation']"));
Events.click(webDriver, By.cssSelector("[value='UpdateDescription']"));
Events.click(webDriver, By.cssSelector("[data-testid='select-access']"));
Events.click(webDriver, By.cssSelector("[value='allow']"));
Events.click(webDriver, By.cssSelector("[data-testid='rule-switch']"));
Events.click(webDriver, By.cssSelector("[data-testid='saveButton']"));
}
@Test
@Order(5)
public void editRule() throws InterruptedException {
openRolesPage();
Events.click(webDriver, By.xpath("//*[text()[contains(.,'" + roleDisplayName + "')]] "));
Events.click(webDriver, By.xpath("//tbody[@data-testid='table-body']/tr/td[4]/div/span"));
Events.click(webDriver, By.cssSelector("[data-testid='select-access']"));
Events.click(webDriver, By.cssSelector("[value='deny']"));
Events.click(webDriver, By.cssSelector("[data-testid='saveButton']"));
Thread.sleep(2000);
String access =
webDriver.findElement(By.xpath("//tbody[@data-testid='table-body']/tr/td[2]/p")).getAttribute("innerHTML");
Assert.assertEquals(access, "DENY");
}
@Test
@Order(6)
public void deleteRule() throws InterruptedException {
openRolesPage();
Events.click(webDriver, By.xpath("//*[text()[contains(.,'" + roleDisplayName + "')]] "));
Events.click(webDriver, By.cssSelector("[data-testid='image'][title='Delete']"));
Events.click(webDriver, By.cssSelector("[data-testid='save-button']"));
}
@AfterEach
public void closeTabs() {
ArrayList<String> tabs = new ArrayList<>(webDriver.getWindowHandles());
String originalHandle = webDriver.getWindowHandle();
for (String handle : webDriver.getWindowHandles()) {
if (!handle.equals(originalHandle)) {
webDriver.switchTo().window(handle);
webDriver.close();
}
}
webDriver.switchTo().window(tabs.get(0)).close();
}
}