~didrocks/unity/altf10

« back to all changes in this revision

Viewing changes to grackle/tests/test_client.py

  • Committer: Aaron Bentley
  • Date: 2012-01-11 11:18:15 UTC
  • Revision ID: aaron@canonical.com-20120111111815-0ecv9fihdao2u68o
Start working on GET.

Show diffs side-by-side

added added

removed removed

Lines of Context:
36
36
 
37
37
class FakeGrackleRequestHandler(BaseHTTPRequestHandler):
38
38
 
39
 
    def do_PUT(self):
 
39
    def do_POST(self):
40
40
        message = self.rfile.read(int(self.headers['content-length']))
41
41
        if message == 'This is a message':
42
42
            self.send_response(httplib.CREATED)
46
46
            self.send_error(httplib.BAD_REQUEST)
47
47
 
48
48
 
49
 
def run_service(port):
 
49
def run_service(port, messages):
50
50
    service = HTTPServer(('', port), FakeGrackleRequestHandler)
 
51
    service.messages = messages
51
52
    service.serve_forever()
52
53
 
53
54
 
 
55
def fake_grackle_service(client, messages=None):
 
56
    if messages is None:
 
57
        messages = {}
 
58
    return Forked(run_service, client.port, messages)
 
59
 
54
60
 
55
61
class TestPutMessage(TestCase):
56
62
 
57
63
    def test_put_message(self):
58
64
        client = GrackleClient('localhost', 8435)
59
 
        with Forked(run_service, client.port):
 
65
        with fake_grackle_service(client):
 
66
            import time; time.sleep(0.5)
60
67
            client.put_message('arch1', 'asdf', StringIO('This is a message'))
61
68
            with ExpectedException(Exception, 'wtf'):
62
69
                client.put_message('arch1', 'asdf',
63
70
                    StringIO('This is not a message'))
 
71
 
 
72
 
 
73
class TestGetMessages(TestCase):
 
74
 
 
75
    def test_get_messages(self):
 
76
        client = GrackleClient('localhost', 8435)
 
77
        with fake_grackle_service(client,
 
78
            {'baz':
 
79
            [{'message-id': 'foo'},
 
80
             {'message-id': 'bar'}]}):
 
81
            response = client.get_messages('baz')
 
82
        self.assertEqual(['bar', 'foo'], sorted(response.keys()))