Add test for banned user

This commit is contained in:
Joey Yakimowich-Payne 2018-07-22 18:44:16 +09:00
commit a6c0fe691c
5 changed files with 80 additions and 32 deletions

View file

@ -31,8 +31,8 @@ template sendKeys*(session: Session, element: string, keys: varargs[Key]) =
for key in keys:
session.press(key)
template ensureExists*(session: Session, element: string) =
let el = session.findElement(element)
template ensureExists*(session: Session, element: string, strategy=CssSelector) =
let el = session.findElement(element, strategy)
check el.isSome()
template check*(session: Session, element: string, function: untyped) =
@ -69,8 +69,22 @@ proc waitForLoad*(session: Session, timeout=20000) =
proc wait*(session: Session, msTimeout: int = 5000) =
session.waitForLoad(msTimeout)
proc logout*(session: Session) =
proc setUserRank*(session: Session, user, rank, baseUrl: string) =
with session:
navigate(baseUrl & "profile/" & user)
wait()
click "#settings-tab"
click "#rank-field"
click("#rank-field-" & rank.toLowerAscii)
click "#save-btn"
wait()
proc logout*(session: Session, baseUrl: string) =
with session:
navigate baseUrl
wait()
click "#profile-btn"
click "#profile-btn #logout-btn"
@ -79,8 +93,10 @@ proc logout*(session: Session) =
# Verify we have logged out by looking for the log in button.
ensureExists "#login-btn"
proc login*(session: Session, user, password: string) =
proc login*(session: Session, baseUrl, user, password: string) =
with session:
navigate baseUrl
wait()
click "#login-btn"
sendKeys "#login-form input[name='username']", user
@ -138,3 +154,9 @@ proc changeRank*(session: Session, rank: string) =
# TODO: Getting an "element click intercepted" error here.
click "#save-btn"
proc banUser*(session: Session, baseUrl: string) =
with session:
login baseUrl, "admin", "admin"
setUserRank "user", "banned", baseUrl
logout baseUrl

View file

@ -31,6 +31,4 @@ proc test*(session: Session, baseUrl: string) =
with session:
register("test", "test")
session.navigate(baseUrl)
session.wait()
logout(session)
session.logout(baseUrl)

View file

@ -2,18 +2,17 @@ import unittest, options, os, common
import webdriver
proc test*(session: Session, baseUrl: string) =
let
userTitleStr = "This is a user thread!"
userContentStr = "A user has filled this out"
let
userTitleStr = "This is a user thread!"
userContentStr = "A user has filled this out"
adminTitleStr = "This is a thread title!"
adminContentStr = "This is content"
adminTitleStr = "This is a thread title!"
adminContentStr = "This is content"
proc userTests(session: Session, baseUrl: string) =
suite "user thread tests":
session.navigate(baseUrl)
session.wait()
login(session, "user", "user")
session.login(baseUrl, "user", "user")
setup:
session.navigate(baseUrl)
@ -33,19 +32,39 @@ proc test*(session: Session, baseUrl: string) =
checkText "#thread-title", userTitleStr
checkText ".original-post div.post-content", userContentStr
session.navigate(baseUrl)
session.wait()
logout(session)
session.logout(baseUrl)
proc bannedTests(session: Session, baseUrl: string) =
suite "banned user thread tests":
session.login(baseUrl, "banned", "banned")
test "can't start thread":
with session:
click "#new-thread-btn"
wait()
sendKeys "#thread-title", "test"
sendKeys "#reply-textarea", "test"
click "#create-thread-btn"
wait()
ensureExists "#new-thread p.text-error"
session.logout(baseUrl)
proc adminTests(session: Session, baseUrl: string) =
suite "admin thread tests":
session.navigate(baseUrl)
session.wait()
login(session, "admin", "admin")
session.login(baseUrl, "admin", "admin")
setup:
session.navigate(baseUrl)
session.wait()
test "can view banned thread":
with session:
ensureExists userTitleStr, LinkTextSelector
test "can create thread":
with session:
click "#new-thread-btn"
@ -116,6 +135,12 @@ proc test*(session: Session, baseUrl: string) =
# Make sure the forum post is gone
checkIsNone adminTitleStr, LinkTextSelector
session.navigate(baseUrl)
session.wait()
logout(session)
session.logout(baseUrl)
proc test*(session: Session, baseUrl: string) =
userTests(session, baseUrl)
banUser(session, baseUrl)
bannedTests(session, baseUrl)
adminTests(session, baseUrl)