| # 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]) |