mirror of
https://dev.azure.com/Foster-X/CMP329%20CW2/_git/CMP329%20CW2
synced 2025-07-27 05:03:31 +00:00
123 lines
5.7 KiB
Java
123 lines
5.7 KiB
Java
package test;
|
|
|
|
import main.ConfigureDriver;
|
|
import main.CsvBuilder;
|
|
import main.DomainGrabber;
|
|
import org.junit.jupiter.api.BeforeAll;
|
|
import org.junit.jupiter.params.ParameterizedTest;
|
|
import org.junit.jupiter.params.provider.CsvFileSource;
|
|
import org.openqa.selenium.*;
|
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
public class TestPoster {
|
|
|
|
private static final String domain = DomainGrabber.getDomain();
|
|
private static final String LOGIN_PAGE = "https://" + domain + "/wp-login.php";
|
|
private static final String USERNAME_BOX_ID = "user_login";
|
|
private static final String PASSWORD_BOX_ID = "user_pass";
|
|
private static final String POST_TITLE_ID = "title";
|
|
private static final String POST_CONTENT_ID = "content";
|
|
private static final String LOGIN_BUTTON_ID = "wp-submit";
|
|
private static final String POST_BUTTON_NAV_ID = "wp-admin-bar-new-content";
|
|
private static final String POST_EDITOR_SWITCH_ID = "content-html";
|
|
private static final String PUBLISH_BUTTON_ID = "publish";
|
|
private static final String DELETE_BUTTON_ID = "delete-action";
|
|
private static final String LOGGEDIN_URL = "https://" + domain + "/wp-admin/";
|
|
private static final String NEW_POST_URL = "https://" + domain + "/wp-admin/post-new.php";
|
|
private static final String POST_CONTENT_TEXT = "Lorem ipsum dolor amet";
|
|
private static final String POST_TITLE_TEXT = "lipsum4u";
|
|
private static final String POST_URL = "https://" + domain + "/" + POST_TITLE_TEXT + "/";
|
|
|
|
@BeforeAll
|
|
public static void initReport() {
|
|
CsvBuilder.createTestReportFile();
|
|
}
|
|
|
|
@ParameterizedTest
|
|
@CsvFileSource(resources = "/csv/built/credentials_permissions.csv", numLinesToSkip = 0)
|
|
public void testPostEditDelete(String role, String usernameText, String passwordText) {
|
|
WebDriver driver = ConfigureDriver.configureDriver();
|
|
driver.manage().window().maximize();
|
|
driver.get(LOGIN_PAGE);
|
|
|
|
try {
|
|
// Step 1: Login
|
|
try {
|
|
driver.findElement(By.id(USERNAME_BOX_ID)).sendKeys(usernameText);
|
|
driver.findElement(By.id(PASSWORD_BOX_ID)).sendKeys(passwordText);
|
|
driver.findElement(By.id(LOGIN_BUTTON_ID)).click();
|
|
boolean loginSuccess = driver.getCurrentUrl().startsWith(LOGGEDIN_URL);
|
|
CsvBuilder.appendTestResult(role, usernameText, "Login", loginSuccess ? "PASS" : "FAIL");
|
|
if (!loginSuccess) {
|
|
driver.quit();
|
|
return;
|
|
}
|
|
} catch (Exception e) {
|
|
CsvBuilder.appendTestResult(role, usernameText, "Login", "FAIL - Exception: " + e.getMessage());
|
|
driver.quit();
|
|
return;
|
|
}
|
|
|
|
boolean canPost = role.equals("author");
|
|
boolean postAccessible = true;
|
|
|
|
// Step 2: Attempt to access post creation
|
|
try {
|
|
WebElement post_button = driver.findElement(By.id(POST_BUTTON_NAV_ID));
|
|
post_button.click();
|
|
} catch (NoSuchElementException e) {
|
|
postAccessible = false;
|
|
}
|
|
|
|
if (canPost) {
|
|
CsvBuilder.appendTestResult(role, usernameText, "Post Access", postAccessible ? "PASS" : "FAIL");
|
|
if (!postAccessible) {
|
|
driver.quit();
|
|
return;
|
|
}
|
|
|
|
// Step 3: Create post
|
|
try {
|
|
driver.findElement(By.id(POST_EDITOR_SWITCH_ID)).click();
|
|
driver.findElement(By.id(POST_TITLE_ID)).sendKeys(POST_TITLE_TEXT);
|
|
driver.findElement(By.id(POST_CONTENT_ID)).sendKeys(POST_CONTENT_TEXT);
|
|
driver.findElement(By.id(PUBLISH_BUTTON_ID)).click();
|
|
CsvBuilder.appendTestResult(role, usernameText, "Post Creation", "PASS");
|
|
} catch (Exception e) {
|
|
CsvBuilder.appendTestResult(role, usernameText, "Post Creation", "FAIL - " + e.getMessage());
|
|
driver.quit();
|
|
return;
|
|
}
|
|
|
|
// Step 4: Verify post
|
|
try {
|
|
String editURL = driver.getCurrentUrl();
|
|
driver.get(POST_URL);
|
|
boolean exists = !driver.getTitle().startsWith("Page not found");
|
|
CsvBuilder.appendTestResult(role, usernameText, "Post Visible", exists ? "PASS" : "FAIL");
|
|
|
|
// Step 5: Delete post
|
|
driver.get(editURL);
|
|
driver.findElement(By.id(DELETE_BUTTON_ID)).click();
|
|
driver.get(POST_URL);
|
|
boolean deleted = driver.getTitle().startsWith("Page not found");
|
|
CsvBuilder.appendTestResult(role, usernameText, "Post Deleted", deleted ? "PASS" : "FAIL");
|
|
} catch (Exception e) {
|
|
CsvBuilder.appendTestResult(role, usernameText, "Post Visible or Deletion", "FAIL - " + e.getMessage());
|
|
}
|
|
|
|
} else {
|
|
CsvBuilder.appendTestResult(role, usernameText, "Post Access", postAccessible ? "FAIL (Should be denied)" : "PASS");
|
|
CsvBuilder.appendTestResult(role, usernameText, "Post Creation", "SKIPPED (Not permitted)");
|
|
CsvBuilder.appendTestResult(role, usernameText, "Post Visible", "SKIPPED");
|
|
CsvBuilder.appendTestResult(role, usernameText, "Post Deleted", "SKIPPED");
|
|
}
|
|
|
|
} catch (Throwable t) {
|
|
CsvBuilder.appendTestResult(role, usernameText, "Test Error", "FAIL - " + t.getClass().getSimpleName() + ": " + t.getMessage());
|
|
} finally {
|
|
driver.quit();
|
|
}
|
|
}
|
|
}
|