blob: 5b87f04b5e55099ed49ae5c3c61a29f90946eb87 [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.
"""Task-based unittest for the Legion event server."""
import argparse
import httplib
import sys
import unittest
class CommServerTest(unittest.TestCase):
def __init__(self, *args, **kwargs):
super(CommServerTest, self).__init__(*args, **kwargs)
parser = argparse.ArgumentParser()
parser.add_argument('--address')
parser.add_argument('--port', type=int)
self.args, _ = parser.parse_known_args()
def Connect(self, verb, path, message=''):
conn = httplib.HTTPConnection(self.args.address, self.args.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__':
unittest.main(argv=sys.argv[:1])