blob: 62575095a6bd804e54ca49cf0134a249331db6c2 [file] [log] [blame]
# Copyright 2016 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.
"""Local unittest for legion.lib.comm_server."""
import httplib
# pylint: disable=relative-import
import legion_unittest
from legion.lib.comm_server import comm_server
class CommServerTest(legion_unittest.TestCase):
def setUp(self):
super(CommServerTest, self).setUp()
self.server = comm_server.CommServer()
self.server.start()
def tearDown(self):
try:
self.server.shutdown()
finally:
super(CommServerTest, self).tearDown()
def Connect(self, verb, path, message=''):
conn = httplib.HTTPConnection('localhost', self.server.port)
conn.request(verb, path, body=message)
return conn.getresponse()
def testMessagesUsedAsSignals(self):
self.assertEquals(
self.Connect('GET', '/messages/message1').status, 404)
self.assertEquals(
self.Connect('PUT', '/messages/message1').status, 200)
self.assertEquals(
self.Connect('GET', '/messages/message1').status, 200)
self.assertEquals(
self.Connect('DELETE', '/messages/message1').status, 200)
self.assertEquals(
self.Connect('DELETE', '/messages/message1').status, 404)
self.assertEquals(
self.Connect('GET', '/messages/message1').status, 404)
def testErrors(self):
for verb in ['GET', 'PUT', 'DELETE']:
self.assertEquals(
self.Connect(verb, '/').status, 403)
self.assertEquals(
self.Connect(verb, '/foobar').status, 403)
self.assertEquals(
self.Connect(verb, '/foobar/').status, 405)
def testMessagePassing(self):
self.assertEquals(
self.Connect('GET', '/messages/message2').status, 404)
self.assertEquals(
self.Connect('PUT', '/messages/message2', 'foo').status, 200)
self.assertEquals(
self.Connect('GET', '/messages/message2').read(), 'foo')
self.assertEquals(
self.Connect('DELETE', '/messages/message2').status, 200)
self.assertEquals(
self.Connect('DELETE', '/messages/message2').status, 404)
self.assertEquals(
self.Connect('GET', '/messages/message2').status, 404)
if __name__ == '__main__':
legion_unittest.main()