def test_admin_creates_keys(self): self.be_admin_user() get_response = self.testapp.get('/admin') self.assertEqual(get_response.status_int, 200) form = get_response.forms["private-key"] self.assertEqual(form.method, 'POST') form['oauth_key'] = 'oauth' form['api_key'] = 'api' post_response = form.submit() self.assertEqual(post_response.status_int, 302) self.assertEqual(post_response.headers['Location'], 'http://localhost:80/admin#tab-private-keys') self.assertEqual(PrivateKey.get_oauth(), 'oauth') self.assertEqual(PrivateKey.get_api(), 'api')
def admin(self): """Retrieve a page for performing administrative tasks.""" if not users.get_current_user(): raise cherrypy.HTTPRedirect(users.create_login_url(cherrypy.url())) elif not users.is_current_user_admin(): raise handlers.http_error(403) reload_status = PackageVersion.get_reload_status() if reload_status is not None: reload_status['percentage'] = '%d%%' % ( 100.0 * reload_status['count'] / reload_status['total']) return handlers.render('admin', reload_status=reload_status, private_keys_set=PrivateKey.get_oauth() is not None, production=handlers.is_production(), layout={'title': 'Admin Console'})
def requires_oauth_key(fn, *args, **kwargs): """A decorator for actions that require an OAuth2 private key to be set.""" if PrivateKey.get_oauth() is None: http_error(500, 'No OAuth2 private key set.') return fn(*args, **kwargs)