| Index: chromium-shortener/www-crbug/app_test.py
|
| ===================================================================
|
| --- chromium-shortener/www-crbug/app_test.py (revision 0)
|
| +++ chromium-shortener/www-crbug/app_test.py (revision 0)
|
| @@ -0,0 +1,71 @@
|
| +#!/usr/bin/env python
|
| +# Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +import unittest
|
| +
|
| +import redirect as app
|
| +
|
| +
|
| +class GaeTestCase(unittest.TestCase):
|
| + def setUp(self, *args, **kwargs):
|
| + self.clear_datastore()
|
| + super(GaeTestCase, self).setUp(*args, **kwargs)
|
| +
|
| + @staticmethod
|
| + def clear_datastore():
|
| + from google.appengine.api import apiproxy_stub_map, datastore_file_stub
|
| + from google.appengine.api import memcache
|
| +
|
| + # See http://code.google.com/p/gaeunit/issues/detail?id=15 for clue.
|
| + for key in ['datastore', 'datastore_v3']:
|
| + # W0212: 23,16:GaeTestCase.clear_datastore: Access to a protected member
|
| + # _APIProxyStubMap__stub_map of a client class
|
| + # pylint: disable=W0212
|
| + # E1101: 50,16:GaeTestCase.clear_datastore: Instance of 'APIProxyStubMap'
|
| + # has no '_APIProxyStubMap__stub_map' member
|
| + # pylint: disable=E1101
|
| + if key in apiproxy_stub_map.apiproxy._APIProxyStubMap__stub_map:
|
| + # W0212: 24,12:GaeTestCase.clear_datastore: Access to a protected
|
| + # member _APIProxyStubMap__stub_map of a client class
|
| + # pylint: disable=W0212
|
| + # E1101: 54,12:GaeTestCase.clear_datastore: Instance of
|
| + # 'APIProxyStubMap' has no '_APIProxyStubMap__stub_map' member
|
| + # pylint: disable=E1101
|
| + del apiproxy_stub_map.apiproxy._APIProxyStubMap__stub_map[key]
|
| +
|
| + # Use a fresh stub datastore.
|
| + stub = datastore_file_stub.DatastoreFileStub(
|
| + app.APP_NAME, '/dev/null', '/dev/null')
|
| + apiproxy_stub_map.apiproxy.RegisterStub('datastore', stub)
|
| +
|
| + # Flush memcache.
|
| + memcache.flush_all()
|
| +
|
| +
|
| +class RedirectTestCase(GaeTestCase):
|
| + def redirect_helper(self, path):
|
| + from webtest import TestApp
|
| + testapp = TestApp(app.application)
|
| + response = testapp.get(path)
|
| + self.assertEquals('302 Moved Temporarily', response.status)
|
| + self.assertEquals('', response.body)
|
| + return response
|
| +
|
| + def test_main_page_redirect(self):
|
| + page = self.redirect_helper('/')
|
| + self.assertEquals(page.headers['Location'],
|
| + 'http://code.google.com/p/chromium/issues/list')
|
| +
|
| + def test_issue_page_redirect(self):
|
| + page = self.redirect_helper('/123456')
|
| + self.assertEquals(page.headers['Location'],
|
| + 'http://code.google.com/p/chromium/issues/detail?id=123456')
|
| +
|
| + def test_username_page_redirect(self):
|
| + page = self.redirect_helper('/~agable')
|
| + self.assertEquals(page.headers['Location'],
|
| + 'http://code.google.com/p/chromium/issues/list?'
|
| + 'can=2&q=owner:agable&cells=tiles&colspec='
|
| + 'ID+Pri+Mstone+ReleaseBlock+OS+Area+Feature+Status+Owner+Summary')
|
|
|