package com.denimgroup.threadfix.selenium.pages;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.Select;
public class FindingEditPage extends BasePage {
private WebElement staticButton;
private WebElement dynamicButton;
private WebElement cweText;
private WebElement urlText;
private WebElement lineNumber;
private WebElement sourceFile;
private WebElement paramText;
private Select severity;
private WebElement descText;
private WebElement dynamicSubmitButton;
private WebElement backLink;
public FindingEditPage(WebDriver webdriver) {
super(webdriver);
dynamicButton = driver.findElementById("dynamicRadioButton");
staticButton = driver.findElementById("staticRadioButton");
cweText = driver.findElementById("txtSearch");
urlText = driver.findElementById("urlDynamicSearch");
paramText = driver.findElementById("parameterInput");
severity = new Select(driver.findElementById("severityInput"));
descText = driver.findElementById("descriptionInput");
dynamicSubmitButton = driver.findElementById("dynamicSubmit");
backLink = driver.findElementById("backToAppLink");
}
public FindingEditPage clickDynamicRadioButton() {
if (!dynamicButton.isSelected())
dynamicButton.click();
return this;
}
public FindingEditPage clickStaticRadioButton() {
if (!staticButton.isSelected())
staticButton.click();
return this;
}
public FindingEditPage setCWE(String status) {
cweText.clear();
cweText.sendKeys(status + "\n");
return new FindingEditPage(driver);
}
public String getCWE() {
return cweText.getAttribute("value");
}
public FindingEditPage setURL(String status) {
urlText.clear();
urlText.sendKeys(status);
return this;
}
public String getURL() {
return urlText.getAttribute("value");
}
public FindingEditPage setParameter(String status) {
paramText.clear();
paramText.sendKeys(status);
return this;
}
public String getParameter() {
return paramText.getAttribute("value");
}
public FindingEditPage setDescription(String status) {
descText.clear();
descText.sendKeys(status);
return this;
}
public String getDescription() {
return descText.getText();
}
public FindingEditPage selectSeverityList(String text) {
severity.selectByVisibleText(text);
return this;
}
public String getSeverity() {
return severity.getFirstSelectedOption().getText();
}
public ApplicationDetailPage clickBack() {
backLink.click();
return new ApplicationDetailPage(driver);
}
public ApplicationDetailPage clickDynamicSubmit() {
dynamicSubmitButton.click();
return new ApplicationDetailPage(driver);
}
public ApplicationDetailPage clickStaticSubmit() {
driver.findElementById("staticSubmit").click();
return new ApplicationDetailPage(driver);
}
public FindingEditPage clickDynamicSubmitInvalid() {
dynamicSubmitButton.click();
return new FindingEditPage(driver);
}
public FindingEditPage clickStaticSubmitInvalid() {
driver.findElementById("staticSubmit").click();
return new FindingEditPage(driver);
}
public String getChannelVulnError() {
return driver.findElementById("channelVulnerability.code.errors").getText();
}
public String getDescriptionError() {
return driver.findElementById("longDescription.errors").getText();
}
public ApplicationDetailPage fillAllClickSaveDynamic(Boolean dynamicRadioButton, String cwe, String url,
String param, String severity, String description) {
clickDynamicRadioButton();
fillRequiredDynamic(cwe, url, param, severity,description);
clickDynamicSubmit();
return new ApplicationDetailPage(driver);
}
public ApplicationDetailPage fillAllClickSaveStatic(Boolean staticRadioBtn, String cwe,
String sourceFile, String lineNumber, String param,
String severity, String description) {
clickStaticRadioButton();
fillRequiredStatic(staticRadioBtn,cwe, sourceFile,lineNumber, param, severity,description);
clickStaticSubmit();
return new ApplicationDetailPage(driver);
}
public ApplicationDetailPage fillRequiredDynamic(String cwe, String url, String param, String severity, String description) {
setCWE(cwe);
setURL(url);
setParameter(param);
selectSeverityList(severity);
setDescription(description);
return new ApplicationDetailPage(driver);
}
public ApplicationDetailPage fillRequiredStatic(Boolean staticRadioBtn, String cwe,
String sourceFile, String lineNumber, String param,
String severity, String description) {
setCWE(cwe);
setSourceFile(sourceFile);
setLineNumber(lineNumber);
setParameter(param);
selectSeverityList(severity);
setDescription(description);
return new ApplicationDetailPage(driver);
}
public FindingEditPage setLineNumber(String lineNo) {
if (staticButton.isSelected()) {
lineNumber = driver.findElementById("urlSearch");
lineNumber.clear();
lineNumber.sendKeys(lineNo);
}
return this;
}
public String getLineNumber() {
return driver.findElementById("urlSearch").getAttribute("value");
}
public String getLineNumberError() {
return driver.findElementById("dataFlowElements0.errors").getText();
}
public FindingEditPage setSourceFile(String sourcefile) {
if (staticButton.isSelected()) {
sourceFile = driver.findElementById("urlStaticSearch");
sourceFile.clear();
sourceFile.sendKeys(sourcefile);
}
return this;
}
public String getSourceFile() {
return driver.findElementById("urlStaticSearch").getAttribute("value");
}
}