コード例 #1
0
ファイル: test_receiver.py プロジェクト: ulif/megrok.paypal
 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: []'
コード例 #2
0
ファイル: test_receiver.py プロジェクト: ulif/megrok.paypal
 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: []'
コード例 #3
0
ファイル: test_receiver.py プロジェクト: ulif/megrok.paypal
 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 == ''
コード例 #4
0
ファイル: test_receiver.py プロジェクト: ulif/megrok.paypal
 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"
コード例 #5
0
ファイル: test_receiver.py プロジェクト: ulif/megrok.paypal
 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 == ''
コード例 #6
0
ファイル: test_receiver.py プロジェクト: ulif/megrok.paypal
 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"
コード例 #7
0
ファイル: tests.py プロジェクト: NemesisSOAD/moneypot
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()