| Index: appengine/chromium_cq_status/shared/test/utils_test.py
|
| diff --git a/appengine/chromium_cq_status/shared/test/utils_test.py b/appengine/chromium_cq_status/shared/test/utils_test.py
|
| index 6ce4c19aca05ccbb593e3c079a4e92678b1da2af..6a10ebeb1de59e6153615f114346c028b6a1cec6 100644
|
| --- a/appengine/chromium_cq_status/shared/test/utils_test.py
|
| +++ b/appengine/chromium_cq_status/shared/test/utils_test.py
|
| @@ -1,13 +1,17 @@
|
| # Copyright 2014 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.
|
| -
|
| +from contextlib import contextmanager
|
| from datetime import datetime
|
| +import os
|
|
|
| +from webtest.app import AppError
|
| from third_party.testing_utils import testing
|
| +import main
|
| from shared import utils
|
|
|
|
|
| +
|
| class MockWebApp(object):
|
| def __init__(self):
|
| self.response = MockResponse()
|
| @@ -31,44 +35,95 @@ class MockHeaders(object):
|
| elif key == 'Content-Type':
|
| self.is_json_content = (value == 'application/json')
|
|
|
| -class TestUtils(testing.AppengineTestCase):
|
| - def test_filter_dict(self):
|
| - self.assertEquals(
|
| - {'b': 2, 'c': 3},
|
| - utils.filter_dict({'a': 1, 'b': 2, 'c': 3}, ('b', 'c', 'd')))
|
| -
|
| - def test_is_valid_user(self):
|
| - self.assertFalse(utils.is_valid_user())
|
| -
|
| - self.mock_current_user('random', 'random@person.com')
|
| - self.assertFalse(utils.is_valid_user())
|
| -
|
| - self.mock_current_user(is_admin=True)
|
| - self.assertTrue(utils.is_valid_user())
|
| -
|
| - self.mock_current_user('real', 'real@chromium.org')
|
| - self.assertTrue(utils.is_valid_user())
|
|
|
| - self.mock_current_user('real', 'real@google.com')
|
| - self.assertTrue(utils.is_valid_user())
|
| -
|
| - self.mock_current_user('fake', 'fake@google.comm')
|
| - self.assertFalse(utils.is_valid_user())
|
| -
|
| - self.mock_current_user('fake', 'fake@google_com')
|
| - self.assertFalse(utils.is_valid_user())
|
| -
|
| - self.mock_current_user('fake', 'fake@chromium.orgg')
|
| - self.assertFalse(utils.is_valid_user())
|
| -
|
| - self.mock_current_user('fake', 'fake@chromium_org')
|
| - self.assertFalse(utils.is_valid_user())
|
| +@contextmanager
|
| +def mock_host_acls(acls):
|
| + old = utils.HOST_ACLS['Development']
|
| + try:
|
| + utils.HOST_ACLS['Development'] = acls
|
| + yield
|
| + finally:
|
| + utils.HOST_ACLS['Development'] = old
|
| +
|
| +
|
| +class TestPermissions(testing.AppengineTestCase):
|
| + app_module = main.app
|
| +
|
| + def test_has_permission_chromium(self):
|
| + with mock_host_acls(utils.HOST_ACLS['chromium-cq-status.appspot.com']):
|
| + # No user.
|
| + self.assertTrue(utils.has_permission('read'))
|
| + self.assertFalse(utils.has_permission('write'))
|
| +
|
| + self.mock_current_user('random', 'random@person.com')
|
| + self.assertTrue(utils.has_permission('read'))
|
| + self.assertFalse(utils.has_permission('write'))
|
| +
|
| + self.mock_current_user(is_admin=True)
|
| + self.assertTrue(utils.has_permission('read'))
|
| + self.assertTrue(utils.has_permission('write'))
|
| +
|
| + self.mock_current_user('real', 'real@chromium.org')
|
| + self.assertTrue(utils.has_permission('read'))
|
| + self.assertTrue(utils.has_permission('write'))
|
| +
|
| + self.mock_current_user('real', 'real@google.com')
|
| + self.assertTrue(utils.has_permission('read'))
|
| + self.assertTrue(utils.has_permission('write'))
|
| +
|
| + def test_has_permission_internal(self):
|
| + with mock_host_acls(utils.HOST_ACLS['internal-cq-status.appspot.com']):
|
| + # No user.
|
| + self.assertFalse(utils.has_permission('read'))
|
| + self.assertFalse(utils.has_permission('write'))
|
| +
|
| + self.mock_current_user('random', 'random@person.com')
|
| + self.assertFalse(utils.has_permission('read'))
|
| + self.assertFalse(utils.has_permission('write'))
|
| +
|
| + self.mock_current_user(is_admin=True)
|
| + self.assertTrue(utils.has_permission('read'))
|
| + self.assertTrue(utils.has_permission('write'))
|
| +
|
| + self.mock_current_user('real', 'real@chromium.org')
|
| + self.assertFalse(utils.has_permission('read'))
|
| + self.assertFalse(utils.has_permission('write'))
|
| +
|
| + self.mock_current_user('real', 'real@google.com')
|
| + self.assertTrue(utils.has_permission('read'))
|
| + self.assertTrue(utils.has_permission('write'))
|
| +
|
| + def test_read_access_decorator(self):
|
| + # No user, which has read access.
|
| + self.assertTrue(utils.has_permission('read'))
|
| + self.test_app.get('/recent')
|
| +
|
| + # Simulate read access requiring valid user.
|
| + with mock_host_acls(utils.HOST_ACLS['internal-cq-status.appspot.com']):
|
| + self.assertFalse(utils.has_permission('read'))
|
| + self.test_app.get('/recent')
|
| +
|
| + def test_host_permissions(self):
|
| + try:
|
| + old = os.environ.pop('SERVER_SOFTWARE')
|
| + utils.HOST_ACLS[None] = {'read': 'something', 'write': True}
|
| + self.assertEqual(utils.get_host_permissions('read'), 'something')
|
| + finally:
|
| + utils.HOST_ACLS.pop(None)
|
| + os.environ['SERVER_SOFTWARE'] = old
|
|
|
| def test_password_sha1(self):
|
| self.assertEquals(
|
| '018d644a17b71b65cef51fa0a523a293f2b3266f',
|
| utils.password_sha1('cq'))
|
|
|
| +
|
| +class TestUtils(testing.AppengineTestCase):
|
| + def test_filter_dict(self):
|
| + self.assertEquals(
|
| + {'b': 2, 'c': 3},
|
| + utils.filter_dict({'a': 1, 'b': 2, 'c': 3}, ('b', 'c', 'd')))
|
| +
|
| def test_to_unix_timestamp(self):
|
| self.assertEquals(100,
|
| utils.to_unix_timestamp(datetime.utcfromtimestamp(100)))
|
|
|