Skip to content

Instantly share code, notes, and snippets.

@fawaf
Created March 12, 2012 04:10
Show Gist options
  • Save fawaf/2019738 to your computer and use it in GitHub Desktop.
Save fawaf/2019738 to your computer and use it in GitHub Desktop.
hw3 test script 2
import mechanize
import sys
import os
import urlparse
import argparse
startTime = '2012-04-02 12:00 am'
endTime = '2012-04-07 12:00 am'
username = 'bbq2s7pumpkin2hjitterbug82hjs'
def tryLogout(browser):
#print "trying logout"
try:
browser.follow_link(text_regex=r"logout")
return browser
except:
pass
return browser
def testUserSanity(browser):
tryLogout(browser)
for i in range(1,6):
browser.follow_link(text_regex=r'sign up')
browser.select_form(nr=0)
browser['username']=username+str(i)
browser['password']='pass'
browser.submit()
browser.follow_link(text_regex=r"new calendar")
browser.follow_link(text_regex=r'logout')
browser.follow_link(text_regex=r'login')
browser.select_form(nr=0)
browser['username']=username+str(1)
browser['password']='pass'
browser.submit()
browser.follow_link(text_regex=r"new calendar")
browser.follow_link(text_regex=r'logout')
return 1
def testCalendarSimple(browser):
returnVal = 1
tryLogout(browser)
#print "start"
for i in range(1,4):
browser.follow_link(text_regex=r"login")
browser.select_form(nr=0)
browser['username'] = username + str(i)
browser['password'] = 'pass'
browser.submit()
#print "logged in"
browser.follow_link(text_regex=r"new calendar")
browser.select_form(nr=0)
browser['calName'] = 'otherPeopleEvents'
browser.submit()
#print "made Calendar"
browser.follow_link(text_regex=r"calendars")
browser.follow_link(text_regex=r"otherPeopleEvents")
browser.back()
#print "cal exists"
browser.follow_link(text_regex=r"new calendar")
browser.select_form(nr=0)
browser['calName']='onlyMeEvents'
browser['calDescription'] = 'i used to own a horse named jitterbug'
browser.submit()
#print "made other cal"
browser.follow_link(text_regex=r"calendars")
browser.follow_link(text_regex=r"onlyMeEvents")
if 'i used to own a horse named jitterbug' not in browser.response().read():
browser.follow_link(text_regex=r"logout")
return 0
browser.back()
browser.follow_link(text_regex=r"new calendar")
browser.select_form(nr=0)
browser['calName'] = 'onlyMeEvents'
browser.submit()
try:
browser.follow_link(text_regex=r"new event")
returnVal = 0
except:
#print "good dup cal not created"
pass
browser.follow_link(text_regex=r"logout")
return returnVal
def testEventSimple(browser):
tryLogout(browser)
#print "hi"
for i in range(1,4):
#print "loop"
browser.follow_link(text_regex=r"login")
browser.select_form(nr=0)
browser['username'] = username + str(i)
browser['password'] = 'pass'
browser.submit()
#print "logged in"
#print browser.response().read()
browser.follow_link(text_regex=r"onlyMeEvents")
#print "on cal page"
browser.follow_link(text_regex=r"new event")
#print "on new event page"
browser.select_form(nr=0)
#print "selected form"
browser['starts_at'] = startTime
browser['ends_at'] = endTime
#print browser.response().read()
#print "lolwut"
browser.submit()
#print "no name"
browser.select_form(nr=0)
browser['eventName'] = "e1"
browser['ends_at'] = endTime
browser.submit()
#print "no start"
browser.select_form(nr=0)
browser['starts_at'] = startTime
browser['eventName'] = "e1"
browser.submit()
#print "no end"
browser.select_form(nr=0)
browser['eventName'] = "e1"
browser['starts_at'] = startTime
browser['ends_at'] = endTime
browser.set_value_by_label(['onlyMeEvents'], 'cal_id')
response = browser.submit()
#print "event made"
if i is 1:
if 'e1' not in response.read():
#print "event not found"
browser.follow_link(text_regex=r"logout")
return 0
#print "all good"
browser.follow_link(text_regex=r"logout")
return 1
def testInviteSimple(browser):
#print "start"
browser = tryLogout(browser)
#print "logged out"
#print browser.response().read()
browser.follow_link(text_regex=r"login")
#print "no login link"
browser.select_form(nr=0)
#print "form"
browser['username'] = username + str(1)
browser['password'] = 'pass'
#print "info filled out"
browser.submit()
#print "logged in"
browser.follow_link(text_regex=r"otherPeopleEvents")
browser.follow_link(text_regex=r"new event")
browser.select_form(nr=0)
browser['eventName'] = 'event1'
browser['starts_at'] = startTime
browser['ends_at'] = endTime
browser.set_value_by_label(['otherPeopleEvents'], 'cal_id')
browser['invitees'] = username + str(2) + "," + username + str(3)
browser.submit()
#print "new event made"
browser.follow_link(text_regex=r"logout")
browser = loginUser(2, browser)
browser.follow_link(text_regex=r"pending invites")
browser.follow_link(text_regex=r"event1")
browser.select_form(nr=0)
#browser.set_value(["otherPeopleEvents"], name="cal_id", kind="list")
browser.set_value_by_label(['otherPeopleEvents'], name='cal_id')
browser.submit(label='Accept')
browser.follow_link(text_regex=r"calendars")
response = browser.follow_link(text_regex=r"otherPeopleEvents")
if 'event1' not in response.read():
browser.follow_link(text_regex=r"logout")
return 0
browser.follow_link(text_regex=r"logout")
browser = loginUser(3, browser)
browser.follow_link(text_regex=r"pending invites")
browser.follow_link(text_regex=r"event1")
browser.select_form(nr=0)
browser.set_value_by_label(['otherPeopleEvents'], name='cal_id')
browser.submit(label='Accept')
browser.follow_link(text_regex=r"logout")
return 1
def loginUser(num, browser):
browser.follow_link(text_regex=r"login")
browser.select_form(nr=0)
browser['username'] = username + str(num)
browser['password'] = 'pass'
browser.submit()
return browser
def testEditDeleteEvents(browser):
tryLogout(browser)
browser = loginUser(2, browser)
browser.follow_link(text_regex=r"otherPeopleEvents")
#print browser.response().read()
response = browser.follow_link(text_regex=r"edit")
#print "hi"
if "You can not edit" not in browser.response().read():
#print "lolol"
#print browser.response().read()
browser.follow_link(text_regex=r"logout")
#print "can edit when not owner"
return 0
browser.back()
response= browser.follow_link(text_regex="delete")
if "event1" in browser.response().read():
browser.follow_link(text_regex=r"logout")
#print "didnt delete"
return 0
browser.follow_link(text_regex=r"logout")
browser = loginUser(1, browser)
response = browser.response()
browser.follow_link(text_regex=r"otherPeopleEvents")
if "event1" not in browser.response().read():
browser.follow_link(text_regex=r"logout")
#print "deleted from owner"
return 0
browser.follow_link(text_regex=r"delete")
if "event1" in browser.response().read():
#print browser.response().read()
browser.follow_link(text_regex=r"logout")
#print "didnt delete when owner"
return 0
browser.follow_link(text_regex=r"logout")
browser = loginUser(3, browser)
#print "hellllo"
if "event1" in browser.response().read():
browser.follow_link(text_regex=r"logout")
return 0
browser.follow_link(text_regex=r"logout")
return 1
def testReinvites(browser):
#print "start"
tryLogout(browser)
browser = loginUser(3, browser)
browser.follow_link(text_regex=r"otherPeopleEvents")
browser.follow_link(text_regex=r"new event")
browser.select_form(nr=0)
browser['eventName'] = 'event2'
browser['starts_at'] = startTime
browser['ends_at'] = endTime
browser['invitees'] = username + str(1)
#print "before label"
browser.set_value_by_label(['otherPeopleEvents'], 'cal_id')
#print "before submit"
browser.submit()
#print "submitted"
browser.follow_link(text_regex=r"logout")
browser = loginUser(1, browser)
browser.follow_link(text_regex=r"pending invites")
browser.follow_link(text_regex=r"event2")
browser.select_form(nr=0)
browser.submit(label='Reject')
if 'event2' in browser.response().read():
#print "lol"
browser.follow_link(text_regex=r"logout")
return 0
browser.follow_link(text_regex=r"logout")
browser = loginUser(3, browser)
browser.follow_link(text_regex=r"otherPeopleEvents")
browser.follow_link(text_regex=r"edit")
browser.select_form(nr=0)
browser['invitees'] = username + str(1)
browser.submit()
browser.follow_link(text_regex=r"logout")
browser = loginUser(1, browser)
browser.follow_link(text_regex=r"otherPeopleEvents")
if "event2" in browser.response().read():
#print "hmm"
browser.follow_link(text_regex=r"logout")
return 0
browser.follow_link(text_regex=r"pending invites")
browser.follow_link(text_regex=r"event2")
browser.select_form(nr=0)
browser.set_value_by_label(['otherPeopleEvents'], name='cal_id')
browser.submit(label='Accept')
browser.follow_link(text_regex=r"calendars")
browser.follow_link(text_regex=r"otherPeopleEvents")
if "event2" not in browser.response().read():
#print "hi"
browser.follow_link(text_regex=r"logout")
return 0
browser.follow_link(text_regex=r"logout")
return 1
def testInvitesMessage(browser):
tryLogout(browser)
#print "start"
browser = loginUser(2, browser)
browser.follow_link(text_regex=r"otherPeopleEvents")
browser.follow_link(text_regex=r"new event")
browser.select_form(nr=0)
browser['eventName']='event3'
browser['starts_at']=startTime
browser['ends_at']=endTime
browser['invitees']=username + str(1)
browser['inviteMessage'] = 'My kitten is adorable.'
browser.set_value_by_label(['otherPeopleEvents'], 'cal_id')
browser.submit()
#print "made event"
browser.follow_link(text_regex=r"logout")
browser = loginUser(1, browser)
browser.follow_link(text_regex=r"pending invites")
browser.follow_link(text_regex=r"event3")
if 'My kitten is adorable' not in browser.response().read():
browser.follow_link(text_regex=r"logout")
return 0
#print "message right"
browser.follow_link(text_regex=r"logout")
browser = loginUser(2, browser)
browser.follow_link(text_regex=r"otherPeopleEvents")
browser.follow_link(text_regex=r"edit")
browser.select_form(nr=0)
browser['invitees'] = username + str(3)
browser['inviteMessage'] = 'her name is pumpkin'
browser.submit()
#print browser.response().read()
#print "submitted change"
browser.follow_link(text_regex=r"logout")
browser = loginUser(1, browser)
browser.follow_link(text_regex=r'pending invites')
browser.follow_link(text_regex=r'event3')
if 'her name is pumpkin' not in browser.response().read():
#print browser.response().read()
browser.follow_link(text_regex=r"logout")
return 0
#print "message changed"
browser.follow_link(text_regex=r"logout")
browser = loginUser(3, browser)
browser.follow_link(text_regex=r'pending invites')
browser.follow_link(text_regex=r'event3')
if 'her name is pumpkin' not in browser.response().read():
browser.follow_link(text_regex=r"logout")
return 0
#print "message changed still"
browser.follow_link(text_regex=r"logout")
return 1
def testAddInviteErrors(browser):
tryLogout(browser)
browser = loginUser(2, browser)
browser.follow_link(text_regex=r"otherPeopleEvents")
browser.follow_link(text_regex=r"edit")
browser.select_form(nr=0)
browser['invitees'] = username + str(1) + "," + username + str(4)
browser.submit()
if username + str(1) not in browser.response().read():
browser.follow_link(text_regex=r"logout")
return 0
browser.follow_link(text_regex=r"edit")
browser.select_form(nr=0)
browser['invitees'] = username + str(2) + "," + username + str(5) + "," + username + str(7)
browser.submit()
if username + str(2) not in browser.response().read() or username + str(7) not in browser.response().read():
browser.follow_link(text_regex=r"logout")
return 0
browser.follow_link(text_regex=r"logout")
browser = loginUser(4, browser)
browser.follow_link(text_regex=r"pending invites")
if 'event3' not in browser.response().read():
browser.follow_link(text_regex=r"logout")
return 0
browser.follow_link(text_regex=r"logout")
browser = loginUser(5, browser)
browser.follow_link(text_regex=r"pending invites")
if 'event3' not in browser.response().read():
browser.follow_link(text_regex=r"logout")
return 0
browser.follow_link(text_regex=r"logout")
browser.follow_link(text_regex=r"sign up")
browser.select_form(nr=0)
browser['username'] = username + str(7)
browser['password'] = 'pass'
browser.submit()
browser.follow_link(text_regex=r"pending invites")
if 'event3' in browser.response().read():
browser.follow_link(text_regex=r"logout")
return 0
browser.follow_link(text_regex=r"logout")
return 1
def testBeforeFilter(browser):
tryLogout(browser)
browser = loginUser(1, browser)
browser.follow_link(text_regex=r"otherPeopleEvents")
url1 = browser.geturl()
browser.follow_link(text_regex=r"pending invites")
browser.follow_link(text_regex=r"event3")
url2 = browser.geturl()
browser.follow_link(text_regex=r"logout")
browser.open(url1)
if 'Please log in to view this page' not in browser.response().read():
return 0
browser.open(url2)
if 'Please log in to view this page' not in browser.response().read():
return 0
browser = loginUser(2, browser)
browser.open(url1)
if 'You can not access' not in browser.response().read():
browser.follow_link(text_regex=r"logout")
return 0
browser.open(url2)
if 'You can not access' not in browser.response().read():
browser.follow_link(text_regex=r"logout")
return 0
browser.follow_link(text_regex=r"logout")
return 1
if __name__=='__main__':
parser = argparse.ArgumentParser(description='Grade a heroku hw3 app.')
parser.add_argument('website')
parser.add_argument('-v', '--verbose', nargs='?', const='true', default='false')
args = parser.parse_args()
f = open(args.website)
url = f.read().rstrip()
browser = mechanize.Browser(factory=mechanize.RobustFactory())
browser.set_handle_robots(False)
passedTests = 0
try:
browser.open(url)
passedTests += 1
print "a 1"
try:
val = testUserSanity(browser)
print "b ", val
except:
print "b 0"
browser.open(url)
pass
try:
val = testCalendarSimple(browser)
print "c ", val
except:
print "c 0"
browser.open(url)
pass
try:
val = testEventSimple(browser)
print "d ", val
except Exception as expt:
#print expt
print "d 0"
browser.open(url)
pass
try:
val = testInviteSimple(browser)
print "e ", val
except Exception as expt:
#print expt
print "e 0"
browser.open(url)
pass
try:
val = testEditDeleteEvents(browser)
print "f ", val
except Exception as expt:
#print expt
print "f 0"
browser.open(url)
pass
try:
val = testReinvites(browser)
print "g ", val
except:
print "g 0"
browser.open(url)
pass
try:
val = testInvitesMessage(browser)
print "h ", val
except:
print "h 0"
browser.open(url)
pass
try:
val = testAddInviteErrors(browser)
print "i ", val
except:
print "i 0"
browser.open(url)
pass
try:
val = testBeforeFilter(browser)
print "j ", val
except:
print "j 0"
browser.open(url)
pass
except Exception as expt:
#print "WARNING ALL FAILED"
#if args.verbose is 'true':
#print expt
pass
#print 'passed tests: ' + str(passedTests)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment