tests/app/soc/views/test_simple.py
author Sverre Rabbelier <srabbelier@gmail.com>
Thu, 20 Nov 2008 15:41:31 +0000
changeset 508 2b90baceac88
parent 419 e9280ea935e4
permissions -rw-r--r--
Add a access.deny and access.allow method Respectively always deny, and always allow access to view a part of the site.

from nose import tools

from google.appengine.api import users
from soc.views import simple
from soc.logic.site import page
from soc.views.helper import responses
from soc.models import user

from tests import test_utils

def mockRespond(request, template, context=None, response_args=None):
  """Mock implementation of respond that passes variables through.
  """
  return request, template, context, response_args


orig_respond = responses.respond
def setup():
  responses.respond = mockRespond


def teardown():
  responses.respond = orig_respond


def test_public_without_user():
  r = test_utils.MockRequest()
  inbound_ctx = {'foo': 'bar', }
  our_page = page.Page(page.Url('/', lambda r: None, name='Home'), 'Home',
                       'Home')
  (req, template, context,
   respond_args, ) = simple.public(r, our_page, context=dict(inbound_ctx),
                                   link_name='testuser')
  tools.eq_(req, r)
  tools.eq_(inbound_ctx['foo'], context['foo'])
  tools.assert_not_equal(inbound_ctx, context)
  tools.eq_(context['page'], our_page)
  tools.eq_(context['error_status'], 404)
  tools.eq_(context['error_message'], ('There is no user with a "link name" '
                                       'of "testuser".'))


def test_public_with_user():
  r = test_utils.MockRequest()
  inbound_ctx = {'foo': 'bar', }
  our_page = page.Page(page.Url('/', lambda r: None, name='Home'), 'Home',
                       'Home')
  u = user.User(link_name='testuser',
                nick_name='Test User!',
                id=users.User('foo@bar.com'))
  u.save()
  (req, template, context,
   respond_args, ) = simple.public(r, our_page, context=dict(inbound_ctx),
                                   link_name='testuser')
  tools.eq_(req, r)
  tools.eq_(inbound_ctx['foo'], context['foo'])
  tools.assert_not_equal(inbound_ctx, context)
  tools.eq_(context['page'], our_page)
  assert 'error_status' not in context
  assert 'error_message' not in context
  tools.eq_(context['link_name'], 'testuser')
  tools.eq_(context['link_name_user'].id, u.id)