diff --git a/src/test/TestPoster.java b/src/test/TestPoster.java index 87171af..ef2d25a 100644 --- a/src/test/TestPoster.java +++ b/src/test/TestPoster.java @@ -43,79 +43,79 @@ public class TestPoster { 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; - } + WebElement username = driver.findElement(By.id(USERNAME_BOX_ID)); + WebElement password = driver.findElement(By.id(PASSWORD_BOX_ID)); + WebElement login = driver.findElement(By.id(LOGIN_BUTTON_ID)); + username.sendKeys(usernameText); + password.sendKeys(passwordText); + login.click(); + + boolean loginSuccess = driver.getCurrentUrl().startsWith(LOGGEDIN_URL); + CsvBuilder.appendTestResult(role, usernameText, "Login", loginSuccess ? "PASS" : "FAIL"); + assertTrue(loginSuccess, "Login failed for user: " + usernameText); + + // Determine permission boolean canPost = role.equals("author"); boolean postAccessible = true; - // Step 2: Attempt to access post creation + // Step 2: Try accessing new post page try { - WebElement post_button = driver.findElement(By.id(POST_BUTTON_NAV_ID)); - post_button.click(); + WebElement postButton = driver.findElement(By.id(POST_BUTTON_NAV_ID)); + postButton.click(); } catch (NoSuchElementException e) { postAccessible = false; } if (canPost) { CsvBuilder.appendTestResult(role, usernameText, "Post Access", postAccessible ? "PASS" : "FAIL"); - if (!postAccessible) { - driver.quit(); - return; - } + assertTrue(postAccessible, "User should be able to access post creation but can't"); // 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; - } + WebElement title = driver.findElement(By.id(POST_TITLE_ID)); + WebElement content = driver.findElement(By.id(POST_CONTENT_ID)); + WebElement textSwitch = driver.findElement(By.id(POST_EDITOR_SWITCH_ID)); + WebElement publishButton = driver.findElement(By.id(PUBLISH_BUTTON_ID)); - // 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"); + textSwitch.click(); + title.sendKeys(POST_TITLE_TEXT); + content.sendKeys(POST_CONTENT_TEXT); + publishButton.click(); - // 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()); - } + CsvBuilder.appendTestResult(role, usernameText, "Post Creation", "PASS"); + + // Step 4: Verify post is visible + String editURL = driver.getCurrentUrl(); + driver.get(POST_URL); + String postedTitle = driver.getTitle(); + boolean postVisible = !postedTitle.startsWith("Page not found"); + + CsvBuilder.appendTestResult(role, usernameText, "Post Visible", postVisible ? "PASS" : "FAIL"); + assertTrue(postVisible, "Post is not visible after publishing"); + + // Step 5: Delete post + driver.get(editURL); + WebElement deleteButton = driver.findElement(By.id(DELETE_BUTTON_ID)); + deleteButton.click(); + driver.get(POST_URL); + postedTitle = driver.getTitle(); + boolean postDeleted = postedTitle.startsWith("Page not found"); + + CsvBuilder.appendTestResult(role, usernameText, "Post Deleted", postDeleted ? "PASS" : "FAIL"); + assertTrue(postDeleted, "Post was not properly deleted"); } else { - CsvBuilder.appendTestResult(role, usernameText, "Post Access", postAccessible ? "FAIL (Should be denied)" : "PASS"); + CsvBuilder.appendTestResult(role, usernameText, "Post Access", postAccessible ? "FAIL (Should not access)" : "PASS"); + assertFalse(postAccessible, "User without permissions accessed post creation page"); + 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()); + CsvBuilder.appendTestResult(role, usernameText, "Unexpected Error", "FAIL - " + t.getMessage()); + fail("Unexpected exception: " + t.getMessage()); } finally { driver.quit(); }