blob: 652be69682692b4a5acb621a67fe0b447f60dbac [file] [log] [blame]
#!/usr/bin/env python
#
# Copyright 2007 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
"""Tests for devappserver2.admin.console."""
import unittest
import google
import mox
import webapp2
from google.appengine.tools.devappserver2 import dispatcher
from google.appengine.tools.devappserver2 import module
from google.appengine.tools.devappserver2.admin import console
class ConsoleRequestHandlerTest(unittest.TestCase):
"""Tests for devappserver2.admin.console.ConsoleRequestHandler."""
def setUp(self):
self.mox = mox.Mox()
self.mox.StubOutWithMock(console.ConsoleRequestHandler, 'dispatcher')
console.ConsoleRequestHandler._modulename_to_shell_module = {}
self.dispatcher = self.mox.CreateMock(dispatcher.Dispatcher)
self.module = self.mox.CreateMock(module.Module)
self.interactive_command_module = self.mox.CreateMock(
module.InteractiveCommandModule)
def tearDown(self):
self.mox.UnsetStubs()
def test_post_new_module(self):
request = webapp2.Request.blank('', POST={'code': 'print 5+5',
'module_name': 'default'})
response = webapp2.Response()
handler = console.ConsoleRequestHandler(request, response)
handler.dispatcher = self.dispatcher
handler.dispatcher.get_module_by_name('default').AndReturn(self.module)
self.module.create_interactive_command_module().AndReturn(
self.interactive_command_module)
self.interactive_command_module.send_interactive_command(
'print 5+5').AndReturn('10\n')
self.mox.ReplayAll()
handler.post()
self.mox.VerifyAll()
self.assertEqual(200, response.status_int)
self.assertEqual('10\n', response.body)
def test_post_cached_module(self):
console.ConsoleRequestHandler._modulename_to_shell_module = {
'default': self.interactive_command_module}
request = webapp2.Request.blank('', POST={'code': 'print 5+5',
'module_name': 'default'})
response = webapp2.Response()
handler = console.ConsoleRequestHandler(request, response)
handler.dispatcher = self.dispatcher
self.interactive_command_module.send_interactive_command(
'print 5+5').AndReturn('10\n')
self.mox.ReplayAll()
handler.post()
self.mox.VerifyAll()
self.assertEqual(200, response.status_int)
self.assertEqual('10\n', response.body)
def test_post_exception(self):
console.ConsoleRequestHandler._modulename_to_shell_module = {
'default': self.interactive_command_module}
request = webapp2.Request.blank('', POST={'code': 'print 5+5',
'module_name': 'default'})
response = webapp2.Response()
handler = console.ConsoleRequestHandler(request, response)
handler.dispatcher = self.dispatcher
self.interactive_command_module.send_interactive_command(
'print 5+5').AndRaise(module.InteractiveCommandError('restart'))
self.mox.ReplayAll()
handler.post()
self.mox.VerifyAll()
self.assertEqual(200, response.status_int)
self.assertEqual('restart', response.body)
def test_restart(self):
console.ConsoleRequestHandler._modulename_to_shell_module = {
'default': self.interactive_command_module}
self.interactive_command_module.restart()
self.mox.ReplayAll()
console.ConsoleRequestHandler.restart(webapp2.Request.blank('/'), 'default')
self.mox.VerifyAll()
def test_restart_uncached_module(self):
self.mox.ReplayAll()
console.ConsoleRequestHandler.restart(webapp2.Request.blank('/'), 'default')
self.mox.VerifyAll()
def test_quit(self):
console.ConsoleRequestHandler._modulename_to_shell_module = {
'default': self.interactive_command_module}
self.interactive_command_module.quit()
self.mox.ReplayAll()
console.ConsoleRequestHandler.quit()
self.mox.VerifyAll()
if __name__ == '__main__':
unittest.main()