def test_use_test_browser(self): # TEMPORARY test. Make sure we can use a virtual browser. app = SampleApp() self.layer.getRootFolder()['app'] = app browser = Browser() browser.open("http://localhost/app/@@foo") assert browser.contents == 'Hi from SampleAppView, VARS: []'
def test_use_test_browser(self): # TEMPORARY test. Make sure we can use a virtual browser. app = SampleApp() self.layer.getRootFolder()['app'] = app browser = Browser() browser.open("http://localhost/app/@@foo") assert browser.contents == 'Hi from SampleAppView, VARS: []'
def test_index_returns_empty_body(self): # if we deliver normal data we will return with an empty doc. receiver = PayPalIPNReceiver() receiver.validation_url = '' self.layer.getRootFolder()['app'] = receiver browser = Browser() browser.open('http://localhost/app/@@index') assert browser.contents == ''
def test_index_returns_200_Ok(self): # if we deliver normal data we will get a 200 Ok. receiver = PayPalIPNReceiver() receiver.validation_url = '' self.layer.getRootFolder()['app'] = receiver browser = Browser() browser.open('http://localhost/app/@@index') assert browser.headers.get("status") == "200 Ok"
def test_index_returns_empty_body(self): # if we deliver normal data we will return with an empty doc. receiver = PayPalIPNReceiver() receiver.validation_url = '' self.layer.getRootFolder()['app'] = receiver browser = Browser() browser.open('http://localhost/app/@@index') assert browser.contents == ''
def test_index_returns_200_Ok(self): # if we deliver normal data we will get a 200 Ok. receiver = PayPalIPNReceiver() receiver.validation_url = '' self.layer.getRootFolder()['app'] = receiver browser = Browser() browser.open('http://localhost/app/@@index') assert browser.headers.get("status") == "200 Ok"
class FunctionalTest(unittest.TestCase): ''' Test the web interface: * create a pot * add expense * invite user * invited user adds expense test: correct result is shown ''' SITE = 'http://localhost/' def setUp(self): from moneypot import main self.browser = Browser(wsgi_app=main({}, **{'sqlalchemy.url': "sqlite://", 'debugmail': 'true', 'mail.default_sender': '*****@*****.**', })) def tearDown(self): testing.tearDown() def invite_bob(self, email=''): ''' start on pot site invite bob and return link for bob ''' link = self.browser.getLink('Invite') link.click() name = self.browser.getControl(name='Participant--name') mail = self.browser.getControl(name='Participant--email') name.value = 'Bob' mail.value = email submit = self.browser.getControl(name='submit') submit.click() #now look for link for bob soup = BeautifulSoup(self.browser.contents) boblink = soup.find('div', 'alert').a['href'] # the link is inside the first "alert" (where messages are presented) return boblink def create_pot(self): self.browser.open(self.SITE) #Create Pot potinput = self.browser.getControl(name="HomeForm--potname") nameinput = self.browser.getControl(name="HomeForm--yourname") nameinput.value = "Alice" potinput.value = "My New Cool Pot" submit = self.browser.getControl(name='submit') submit.click() def add_expense(self, amount="42.0"): '''adds an expese''' description = self.browser.getControl(name='Expense--description') expense = self.browser.getControl(name='Expense--amount') description.value = "my very first test expense" expense.value = amount submit = self.browser.getControl(name='submit') submit.click() def remove_expense(self): pass def register(self): '''register Alice''' username = self.browser.getControl(name='RegisterForm--username') email = self.browser.getControl(name='RegisterForm--yourmail') password = self.browser.getControl(name='RegisterForm--password') password_confirm = self.browser.getControl(name='RegisterForm--password_confirm') username.value = 'alice' email.value = '*****@*****.**' password.value = 'secret' password_confirm.value = 'secret' submit = self.browser.getControl(name='submit') submit.click() def login(self, username='******', password='******'): '''login Alice''' username_control = self.browser.getControl(name='LoginForm--username') password_control = self.browser.getControl(name='LoginForm--password') username_control.value = username password_control.value = password submit = self.browser.getControl(name='submit') submit.click() def test_create_pot(self): self.create_pot() def test_invite_bob(self): self.create_pot() boblink = self.invite_bob('*****@*****.**') #try to call this site self.browser.open(boblink) #try to remove someone link = self.browser.getLink(url="remove") link.click() def test_add_expense(self): self.create_pot() self.add_expense() soup = BeautifulSoup(self.browser.contents) expense_text = soup.find('td', text="42.00") self.assertIsNotNone(expense_text) def test_remove_expense(self): self.create_pot() self.add_expense() soup = BeautifulSoup(self.browser.contents) expense_text = soup.find('td', text="42.00") self.assertIsNotNone(expense_text) self.remove_expense() amount_text = soup.find('td', text="0.00") self.assertIsNotNone(amount_text) def test_register_login_logout(self): ''' go to login page, from there follow "register" link. register alice and go back to login page login then try to logout (logout link is only visible if login was successfull) ''' self.browser.open(self.SITE) login_link = self.browser.getLink('Login') login_link.click() register_link = self.browser.getLink('Registration') register_link.click() self.register() login_link = self.browser.getLink('Login') login_link.click() self.login() logout_link = self.browser.getLink('Logout') logout_link.click() def test_change_password(self): ''' go to login page, from there follow "register" link. register alice and go back to login page login change alices password logout and login with new password ''' self.browser.open(self.SITE) #go to login page login_link = self.browser.getLink('Login') login_link.click() #follow registration link register_link = self.browser.getLink('Registration') register_link.click() #register alice with password secret self.register() #log her in login_link = self.browser.getLink('Login') login_link.click() self.login() #try to change her password change_password_link = self.browser.getLink('Change Password') change_password_link.click() old_password = self.browser.getControl(name='ChangePasswordForm--old_password') new_password = self.browser.getControl(name='ChangePasswordForm--password') confirm_password = self.browser.getControl(name='ChangePasswordForm--confirm_password') old_password.value = 'secret' new_password.value = 'newsecret' confirm_password.value = 'newsecret' submit = self.browser.getControl(name='submit') submit.click() self.assertIn('changed password', self.browser.contents) #logout logout_link = self.browser.getLink('Logout') logout_link.click() #login with new password login_link = self.browser.getLink('Login') login_link.click() self.login(password='******') #try if login was successfull: logout link is only visible when logged in logout_link = self.browser.getLink('Logout') #change back change_password_link = self.browser.getLink('Change Password') change_password_link.click() old_password = self.browser.getControl(name='ChangePasswordForm--old_password') new_password = self.browser.getControl(name='ChangePasswordForm--password') confirm_password = self.browser.getControl(name='ChangePasswordForm--confirm_password') old_password.value = 'newsecret' new_password.value = 'secret' confirm_password.value = 'secret' submit = self.browser.getControl(name='submit') submit.click() self.assertIn('changed password', self.browser.contents) def test_overview(self): ''' log in as registered user, check in the overview page for newly created pots ''' self.test_register_login_logout() login_link = self.browser.getLink('Login') login_link.click() self.login() #now we should directly be redirected to overview page self.assertIn('Overview', self.browser.contents) self.assertIn('alice', self.browser.contents) #now create new pot new_pot_link = self.browser.getLink('New Pot') new_pot_link.click() #name and email should be set automatically potname = self.browser.getControl(name='HomeForm--potname') potname.value = 'testpot' submit = self.browser.getControl(name='submit') submit.click() #go to overview overview_link = self.browser.getLink('Overview') overview_link.click() self.assertIn('testpot', self.browser.contents) archive_link = self.browser.getLink(url='archive') archive_link.click() #need to check that the pot was moved in the archive #just try to unarchive it unarchive_link = self.browser.getLink(url='unarchive') unarchive_link.click()