Esempio n. 1
0
def maintenance(global_config, **local_conf):
    config = Configurator()
    config.begin()
    config.add_static_view('static', 'karl.views:static')
    config.add_route(name='maintenance',
                    path='/*url',
                    view=dummy_view,
                    view_renderer='down_for_maintenance.pt')
    config.end()
    return config.make_wsgi_app()
Esempio n. 2
0
class ViewTests(unittest.TestCase):

    """ These tests are unit tests for the view.  They test the
    functionality of *only* the view.  They register and use dummy
    implementations of repoze.bfg functionality to allow you to avoid
    testing 'too much'"""

    def setUp(self):
        """ cleanUp() is required to clear out the application registry
        between tests (done in setUp for good measure too)
        """
        self.config = Configurator()
        self.config.begin()
        self.config.add_settings({'title' : 'Tattoo', 'description' : 'Another URL Shortener'})
        self.config.add_route(name='home', path='', request_method='GET')
        self.config.add_route(name='view', path=':short_url', request_method='GET')
        self.config.add_route(name='post', path ='', request_method='POST')
        self.config.add_route(name='put', path='', request_method='PUT')
        self.config.add_route(name='list', path='list', request_method='GET')
        self.config.add_route(name='nohead', path=':short_url', request_method='HEAD')
        self.config.add_static_view(name='static', path='templates/static', cache_max_age=0)
        self.config.scan()
        
    def tearDown(self):
        """ cleanUp() is required to clear out the application registry
        between tests
        """
        self.config.end()

    def _callFUT(self, context, request, view):
        return view(request)

    def test_home_view(self):
        from tattoo.views import home_view
        context = testing.DummyModel(title='Tattoo',
                                     description="URL Shortener")
        request = testing.DummyRequest()
        self._callFUT(context, request, home_view)
        view = home_view(request)
        self.assertEquals(view['title'], 'Tattoo')
        self.assertEquals(view['description'], "Another URL Shortener")
Esempio n. 3
0
class ViewIntegrationTests(unittest.TestCase):
    def setUp(self):
        self.config = Configurator()
        self.config.begin()
        self.config.add_settings({'title' : 'Tattoo', 
                                  'description' : 'Another URL Shortener',
                                  'min_url_len': '21',
                                  'reload_templates' : False})
        self.config.add_route(name='home', path='', request_method='GET')
        self.config.add_route(name='view', path=':short_url', request_method='GET')
        self.config.add_route(name='post', path ='', request_method='POST')
        self.config.add_route(name='put', path='', request_method='PUT')
        self.config.add_route(name='list', path='list', request_method='GET')
        self.config.add_route(name='nohead', path=':short_url', request_method='HEAD')
        self.config.add_static_view(name='static', path='templates/static', cache_max_age=0)
        self.config.scan()

    def tearDown(self):
         self.config.end()

    def _make_request(self, dispatch):
        request = testing.DummyRequest(              
            url='AURL',
            environ={'HTTP_HOST': 'bfg.io:80'},
            matchdict= {'short_url': u'8K!kpD'},
            dispatch=dispatch)
        return request

    def test_url_view(self):
        from tattoo.views import url_view
        request = self._make_request(dispatch=None)
        result = url_view(request, URL=URL)
        self.assertEquals(result.status, '302 Found')
        self.assertEquals(result.headers['location'], 'AUrl')

    def test_url_not_found(self):
        from tattoo.views import url_view
        request = self._make_request(dispatch='test_stop_iteration')
        URL = DummyURL()
        URL.m.find = ModelURL({})
        URL.m.find.one = StopIteration
        result = url_view(request, URL=URL)
        self.assertEquals(result.status, '404 Not Found')
        self.assertEquals(result.body, '<h1>404 Not Found</h1> Nobody here but us fish...glug glug.')
        

    def test_post_view_new(self):
        from tattoo.views import create_post_view
        request = testing.DummyRequest(              
            url='http://bfg.io/create?url=http://example.com/somplace/really/long',
            environ={'HTTP_HOST': 'bfg.io:80'})
        result = create_post_view(request, url_factory=url_factory)
        self.assertEqual(result.status, '200 OK')

    def test_post_view_zero(self):
        from tattoo.views import create_post_view
        request = self._make_request(dispatch='test_zero')
        result = create_post_view(request, url_factory=url_factory)
        self.assertEqual(result.status, '412 Precondition Failed')

    def test_post_view_one(self):
        from tattoo.views import create_post_view
        request = self._make_request(dispatch='test_one')
        result = create_post_view(request, url_factory=url_factory)
        self.assertEqual(result.status, '303 See Other')

    def test_post_view_not_found(self):
        from tattoo.views import create_post_view
        request = self._make_request(dispatch='test_not_found')
        result = create_post_view(request, url_factory=url_factory)
        self.assertEqual(result.status, '404 Not Found')

    def test_post_view_precond_failed(self):
        from tattoo.views import create_post_view
        request = self._make_request(dispatch='test_precondfailed')
        result = create_post_view(request, url_factory=url_factory)
        self.assertEqual(result.status, '412 Precondition Failed')
        
    def test_post_view_too_short(self):
        from tattoo.views import create_post_view
        request = self._make_request(dispatch='test_too_short')
        result = create_post_view(request, url_factory=url_factory)
        self.assertEqual(result.status, '303 See Other')
        self.assertEqual(result.headers['location'], 'short')

    def test_put_view_integration(self):
        from tattoo.views import put_view
        request = testing.DummyRequest(              
            url='http://bfg.io/create?url=http://example.com/somplace/really/long',
            environ={'HTTP_HOST': 'bfg.io:80'})
        result = put_view(request, url_factory=url_factory)
        self.assertEqual(result.status, '201 Created')

    def test_put_view_zero(self):
        from tattoo.views import put_view
        request = self._make_request(dispatch='test_zero')
        result = put_view(request, url_factory=url_factory)
        self.assertEqual(result.status, '412 Precondition Failed')

    def test_put_view_one(self):
        from tattoo.views import put_view
        request = self._make_request(dispatch='test_one')
        result = put_view(request, url_factory=url_factory)
        self.assertEqual(result.status, '303 See Other')

    def test_put_view_not_found(self):
        from tattoo.views import put_view
        request = self._make_request(dispatch='test_not_found')
        result = put_view(request, url_factory=url_factory)
        self.assertEqual(result.status, '404 Not Found')

    def test_put_view_precond_failed(self):
        from tattoo.views import put_view
        request = self._make_request(dispatch='test_precondfailed')
        result = put_view(request, url_factory=url_factory)
        self.assertEqual(result.status, '412 Precondition Failed')
        
    def test_put_view_too_short(self):
        from tattoo.views import put_view
        request = self._make_request(dispatch='test_too_short')
        result = put_view(request, url_factory=url_factory)
        self.assertEqual(result.status, '303 See Other')
        self.assertEqual(result.headers['location'], 'short')

    def test_not_allowed(self):
        from tattoo.views import not_allowed
        request = self._make_request(dispatch=None)
        result = not_allowed(request)
        self.assertEquals(result.status, '405 Method Not Allowed')
        self.assertEquals(result.headers['Allow'], 'GET')