tests/app/soc/views/model/test_base.py
author Sverre Rabbelier <srabbelier@gmail.com>
Mon, 14 Sep 2009 18:43:15 +0200
changeset 2915 76b5ef0fb5c6
parent 1691 c1d5a67e9e33
permissions -rw-r--r--
Use request.start and end Without the start and end we die on 'assert self.in_request' in the core per request value store methods.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1691
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     1
#!/usr/bin/python2.5
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     2
#
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     3
# Copyright 2009 the Melange authors.
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     4
#
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     5
# Licensed under the Apache License, Version 2.0 (the "License");
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     6
# you may not use this file except in compliance with the License.
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     7
# You may obtain a copy of the License at
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     8
#
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     9
#   http://www.apache.org/licenses/LICENSE-2.0
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    10
#
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    11
# Unless required by applicable law or agreed to in writing, software
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    12
# distributed under the License is distributed on an "AS IS" BASIS,
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    14
# See the License for the specific language governing permissions and
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    15
# limitations under the License.
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    16
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    17
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    18
__authors__ = [
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    19
  '"Sverre Rabbelier" <sverre@rabbelier.nl>',
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    20
  ]
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    21
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    22
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    23
import unittest
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    24
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    25
from tests.test_utils import MockRequest
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    26
from tests.pymox import stubout
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    27
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    28
from tests.app.soc.logic.models.test_model import TestModelLogic
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    29
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    30
from soc.views.helper import access
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    31
from soc.views.helper import responses
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    32
from soc.views.models import base
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    33
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    34
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    35
def error_raw(error, request, template=None, context=None):
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    36
  """
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    37
  """
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    38
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    39
  return {
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    40
      'error': error,
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    41
      'request': request,
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    42
      'template': template,
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    43
      'context': context,
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    44
      }
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    45
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    46
def respond_raw(request, template, context=None, args=None, headers=None):
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    47
  """
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    48
  """
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    49
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    50
  return {
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    51
      'request': request,
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    52
      'template': template,
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    53
      'context': context,
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    54
      'args': args,
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    55
      'headers': headers,
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    56
      }
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    57
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    58
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    59
class TestView(base.View):
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    60
  """
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    61
  """
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    62
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    63
  def __init__(self):
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    64
    """
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    65
    """
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    66
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    67
    rights = access.Checker(None)
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    68
    rights['unspecified'] = ['deny']
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    69
    rights['any_access'] = ['allow']
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    70
    rights['show'] = ['allow']
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    71
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    72
    params = {}
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    73
    params['name'] = "Test"
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    74
    params['logic'] = TestModelLogic()
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    75
    params['rights'] = rights
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    76
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    77
    super(TestView, self).__init__(params=params)
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    78
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    79
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    80
class BaseTest(unittest.TestCase):
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    81
  """Tests related to the base view.
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    82
  """
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    83
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    84
  def setUp(self):
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    85
    """Set up required for the view tests.
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    86
    """
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    87
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    88
    self.view = TestView()
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    89
    self.stubout = stubout.StubOutForTesting()
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    90
    self.stubout.Set(responses, 'respond', respond_raw)
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    91
    self.stubout.Set(responses, 'errorResponse', error_raw)
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    92
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    93
  def testErrorOnNonExistantEntity(self):
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    94
    """
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    95
    """
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    96
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    97
    request = MockRequest("/test/public")
2915
76b5ef0fb5c6 Use request.start and end
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1691
diff changeset
    98
    request.start()
1691
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    99
    access_type = "show"
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   100
    page_name = "Show Test"
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   101
    django_args = {'link_id': 'foo', 'scope_path': 'bar'}
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   102
    actual = self.view.public(request, access_type, page_name=page_name, **django_args)
2915
76b5ef0fb5c6 Use request.start and end
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1691
diff changeset
   103
    request.end()
1691
c1d5a67e9e33 Add a very basic view test
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   104
    self.assertTrue('error' in actual)