Created
March 12, 2012 04:10
-
-
Save fawaf/2019738 to your computer and use it in GitHub Desktop.
hw3 test script 2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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