Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(36)

Side by Side Diff: appengine/auth_service/handlers_frontend_test.py

Issue 1148073005: Use luci-config for infrequently changing settings, part 2. (Closed) Base URL: git@github.com:luci/luci-py@master
Patch Set: fix pylint (??!) Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « appengine/auth_service/handlers_frontend.py ('k') | appengine/auth_service/importer.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2014 The Swarming Authors. All rights reserved. 2 # Copyright 2014 The Swarming Authors. All rights reserved.
3 # Use of this source code is governed by the Apache v2.0 license that can be 3 # Use of this source code is governed by the Apache v2.0 license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 import logging 6 import logging
7 import sys 7 import sys
8 import unittest 8 import unittest
9 9
10 import test_env 10 import test_env
11 test_env.setup_test_env() 11 test_env.setup_test_env()
12 12
13 import webtest 13 import webtest
14 14
15 from components import auth_testing 15 from components import auth_testing
16 from components import template 16 from components import template
17 from test_support import test_case 17 from test_support import test_case
18 18
19 import handlers_frontend 19 import handlers_frontend
20 import importer 20 import importer
21 import replication 21 import replication
22 22
23 23
24 GOOD_IMPORTER_CONFIG = [ 24 GOOD_IMPORTER_CONFIG = """
25 { 25 # Comment.
26 'domain': 'example.com', 26 tarball {
27 'systems': ['ldap'], 27 domain: "example.com"
28 'url': 'http://example.com/stuff.tar.gz', 28 systems: "ldap"
29 }, 29 url: "http://example.com/stuff.tar.gz"
30 { 30 }
31 'format': 'plainlist', 31 plainlist {
32 'group': 'chromium-committers', 32 group: "chromium-committers"
33 'url': 'http://chromium-committers.appspot.com/chromium', 33 url: "http://chromium-committers.appspot.com/chromium"
34 }, 34 }
35 ] 35 """
36 36
37 BAD_IMPORTER_CONFIG = [ 37 BAD_IMPORTER_CONFIG = """
38 # Missing 'url'. 38 # Missing 'url'.
39 { 39 tarball {
40 'domain': 'example.com', 40 domain: "example.com"
41 'systems': ['ldap'], 41 systems: "ldap"
42 }, 42 }
43 ] 43 """
44 44
45 45
46 class FrontendHandlersTest(test_case.TestCase): 46 class FrontendHandlersTest(test_case.TestCase):
47 """Tests the frontend handlers.""" 47 """Tests the frontend handlers."""
48 48
49 def setUp(self): 49 def setUp(self):
50 super(FrontendHandlersTest, self).setUp() 50 super(FrontendHandlersTest, self).setUp()
51 self.mock(replication, 'trigger_replication', lambda *_args, **_kws: None) 51 self.mock(replication, 'trigger_replication', lambda *_args, **_kws: None)
52 self.app = webtest.TestApp( 52 self.app = webtest.TestApp(
53 handlers_frontend.create_application(debug=True), 53 handlers_frontend.create_application(debug=True),
54 extra_environ={'REMOTE_ADDR': '127.0.0.1'}) 54 extra_environ={'REMOTE_ADDR': '127.0.0.1'})
55 auth_testing.mock_is_admin(self, True) 55 auth_testing.mock_is_admin(self, True)
56 auth_testing.mock_get_current_identity(self) 56 auth_testing.mock_get_current_identity(self)
57 57
58 def tearDown(self): 58 def tearDown(self):
59 try: 59 try:
60 template.reset() 60 template.reset()
61 finally: 61 finally:
62 super(FrontendHandlersTest, self).tearDown() 62 super(FrontendHandlersTest, self).tearDown()
63 63
64 def test_warmup(self): 64 def test_warmup(self):
65 response = self.app.get('/_ah/warmup') 65 response = self.app.get('/_ah/warmup')
66 self.assertEqual(200, response.status_code) 66 self.assertEqual(200, response.status_code)
67 self.assertEqual('ok', response.body) 67 self.assertEqual('ok', response.body)
68 68
69 def test_importer_config_get_default(self): 69 def test_importer_config_get_default(self):
70 response = self.app.get('/auth_service/api/v1/importer/config', status=200) 70 response = self.app.get('/auth_service/api/v1/importer/config', status=200)
71 self.assertEqual({'config': []}, response.json) 71 self.assertEqual({'config': ''}, response.json)
72 72
73 def test_importer_config_get(self): 73 def test_importer_config_get(self):
74 importer.write_config(GOOD_IMPORTER_CONFIG) 74 importer.write_config_text(GOOD_IMPORTER_CONFIG)
75 response = self.app.get('/auth_service/api/v1/importer/config', status=200) 75 response = self.app.get('/auth_service/api/v1/importer/config', status=200)
76 self.assertEqual({'config': GOOD_IMPORTER_CONFIG}, response.json) 76 self.assertEqual({'config': GOOD_IMPORTER_CONFIG}, response.json)
77 77
78 def test_importer_config_post_ok(self): 78 def test_importer_config_post_ok(self):
79 response = self.app.post_json( 79 response = self.app.post_json(
80 '/auth_service/api/v1/importer/config', 80 '/auth_service/api/v1/importer/config',
81 {'config': GOOD_IMPORTER_CONFIG}, 81 {'config': GOOD_IMPORTER_CONFIG},
82 headers={'X-XSRF-Token': auth_testing.generate_xsrf_token_for_test()}, 82 headers={'X-XSRF-Token': auth_testing.generate_xsrf_token_for_test()},
83 status=200) 83 status=200)
84 self.assertEqual({'ok': True}, response.json) 84 self.assertEqual({'ok': True}, response.json)
85 self.assertEqual(GOOD_IMPORTER_CONFIG, importer.read_config()) 85 self.assertEqual(GOOD_IMPORTER_CONFIG, importer.read_config_text())
86 86
87 def test_importer_config_post_bad(self): 87 def test_importer_config_post_bad(self):
88 response = self.app.post_json( 88 response = self.app.post_json(
89 '/auth_service/api/v1/importer/config', 89 '/auth_service/api/v1/importer/config',
90 {'config': BAD_IMPORTER_CONFIG}, 90 {'config': BAD_IMPORTER_CONFIG},
91 headers={'X-XSRF-Token': auth_testing.generate_xsrf_token_for_test()}, 91 headers={'X-XSRF-Token': auth_testing.generate_xsrf_token_for_test()},
92 status=400) 92 status=400)
93 self.assertEqual({'text': 'Invalid config format.'}, response.json) 93 self.assertEqual(
94 self.assertEqual([], importer.read_config()) 94 {'text': '"url" field is required in TarballEntry'}, response.json)
95 self.assertEqual('', importer.read_config_text())
95 96
96 def test_importer_config_post_locked(self): 97 def test_importer_config_post_locked(self):
97 self.mock(handlers_frontend.config, 'is_remote_configured', lambda: True) 98 self.mock(handlers_frontend.config, 'is_remote_configured', lambda: True)
98 response = self.app.post_json( 99 response = self.app.post_json(
99 '/auth_service/api/v1/importer/config', 100 '/auth_service/api/v1/importer/config',
100 {'config': GOOD_IMPORTER_CONFIG}, 101 {'config': GOOD_IMPORTER_CONFIG},
101 headers={'X-XSRF-Token': auth_testing.generate_xsrf_token_for_test()}, 102 headers={'X-XSRF-Token': auth_testing.generate_xsrf_token_for_test()},
102 status=409) 103 status=409)
103 self.assertEqual( 104 self.assertEqual(
104 {'text': 'The configuration is managed elsewhere'}, response.json) 105 {'text': 'The configuration is managed elsewhere'}, response.json)
105 106
106 107
107 if __name__ == '__main__': 108 if __name__ == '__main__':
108 if '-v' in sys.argv: 109 if '-v' in sys.argv:
109 unittest.TestCase.maxDiff = None 110 unittest.TestCase.maxDiff = None
110 logging.basicConfig(level=logging.DEBUG) 111 logging.basicConfig(level=logging.DEBUG)
111 else: 112 else:
112 logging.basicConfig(level=logging.FATAL) 113 logging.basicConfig(level=logging.FATAL)
113 unittest.main() 114 unittest.main()
OLDNEW
« no previous file with comments | « appengine/auth_service/handlers_frontend.py ('k') | appengine/auth_service/importer.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698