Exemplo n.º 1
0
 def __init__(self, driver, base_url, pathspec):
     # pathspec = (pagename, {param: value})
     self.driver = driver
     self.base_url = base_url
     self.url = Url().for_page(pathspec[0],
                               include_hostname=True,
                               **(pathspec[1] if len(pathspec) > 1 else {}))
    def test_missing_key_gives_error(self):
        missing_charity_identifier = '1'
        request = webapp2.Request.blank(Url().for_page('view_charity', include_hostname=False, charity_identifier=missing_charity_identifier))

        response = webapp2.Response()
        ViewCharityPage(request=request, response=response).get(charity_id=missing_charity_identifier)

        self.assertIn('Could not find', response.body)
Exemplo n.º 3
0
    def post(self):
        POST = self.request.POST
        email = POST['email']
        user = User(email=email)

        try:
            self.user_repo.create_unconfirmed_user(user=user, send_email=True)
            response = self.redirect(Url().for_page('signedup'))
            return response
        except AlreadyExistsException:
            self.write_template('signup', {'title': 'Givabit - Sign up', 'success': False, 'error': 'User already exists'})
Exemplo n.º 4
0
    def test_fails_if_email_already_exists(self):
        email = '*****@*****.**'
        user = User(email=email)
        self.user_repo.create_unconfirmed_user(user)

        request = webapp2.Request.blank(Url().for_page('signup'))
        request.method = 'POST'
        request.POST['email'] = email

        response = webapp2.Response()
        SignupPage(request=request, response=response).post()

        self.assertIn('already exists', response.body)
Exemplo n.º 5
0
    def test_user_confirmation_mail_contains_confirmation_code(self):
        confirmation_code = str(uuid.uuid4())
        email = '*****@*****.**' % str(uuid.uuid4())
        user = User(email=email, confirmation_code=confirmation_code)
        EmailService().send_user_confirmation_mail(user)

        messages = self.mail_stub.get_sent_messages()
        self.assertEquals(len(messages), 1)

        message = messages[0]
        self.assertEquals(message.to, email)
        self.assertIn(
            Url().for_page('confirmation',
                           confirmation_code=confirmation_code,
                           email=email), str(message.body))
Exemplo n.º 6
0
    def test_signing_up_requires_confirmation(self):
        email = '*****@*****.**' % self.get_random_value()

        self._assert_no_confirmed_user(email=email)
        self._assert_no_unconfirmed_user(email=email)

        request = webapp2.Request.blank(Url().for_page('signup'))
        request.method = 'POST'
        request.POST['email'] = email

        SignupPage(request=request, response=webapp2.Response()).post()

        user = self.user_repo.get_unconfirmed_user(email=email)
        self.assertEquals(user.email, email)

        self._assert_no_confirmed_user(email=email)
Exemplo n.º 7
0
    def test_sends_email_with_confirmation_link(self):
        email = '*****@*****.**' % self.get_random_value()

        self._assert_no_confirmed_user(email=email)
        self._assert_no_unconfirmed_user(email=email)

        request = webapp2.Request.blank(Url().for_page('signup'))
        request.method = 'POST'
        request.POST['email'] = email

        class MockEmailService(object):
            def send_user_confirmation_mail(self, user):
                self.user = user
        email_service = MockEmailService()
        user_repo = UserRepository(email_service=email_service)

        SignupPage(request=request, response=webapp2.Response(), user_repository=user_repo).post()

        user = self.user_repo.get_unconfirmed_user(email=email)
        self.assertEquals(email_service.user, user)
Exemplo n.º 8
0
 def send_user_confirmation_mail(self, user):
     self.send_mail(to=user.email,
                    subject='Welcome to givabit',
                    sender='*****@*****.**',
                    body='Please visit %s to confirm your account' % Url().for_page('confirmation', confirmation_code=user.confirmation_code, email=user.email, include_hostname=True),
                   )
Exemplo n.º 9
0
import os
import webapp2

from givabit.webapp.template_cache import TemplateCache
from givabit.webapp.url import Url

from jinja2 import Environment, FileSystemLoader

env = Environment(loader=TemplateCache(FileSystemLoader(os.path.abspath(os.path.join(__file__, '..', 'templates')))))
url = Url()

class BasePage(webapp2.RequestHandler):
    def _render_template(self, template_name, data):
        template = env.get_template('%s.html' % template_name)
        return template.render(data)

    def _write_html(self, response, html):
        response.headers['Content-Type'] = 'text/html'
        response.out.write(html)

    def write_template(self, template_name, data=None):
        if data is None:
            data = {}
        data['URL'] = url
        self._write_html(self.response, self._render_template(template_name, data))