136
136
def do_POST(self):
137
137
"""Create a message on POST."""
138
138
message = self.rfile.read(int(self.headers['content-length']))
139
scheme, netloc, path, params, query_string, fragments = (
141
parts = path.split('/')
142
if parts[1] == 'archive':
143
# This expected path is /archive/archive_id/message_id.
144
self.server.store.put_message(parts[2], parts[3], message)
139
145
if message == 'This is a message':
140
146
self.send_response(httplib.CREATED)
141
147
self.end_headers()
172
178
def test_put_message(self):
173
179
client = GrackleClient('localhost', 8420)
174
with ForkedFakeService.from_client(client):
175
client.put_message('arch1', 'asdf', StringIO('This is a message'))
180
message_archives = {'arch1': []}
181
service = ForkedFakeService.from_client(client, message_archives)
183
client.put_message('arch1', 'id1', StringIO('This is a message'))
184
response = client.get_messages('arch1')
185
self.assertEqual(1, len(response['messages']))
186
message = response['messages'][0]
187
self.assertEqual('id1', message['message_id'])
189
def test_put_message_without_message(self):
190
client = GrackleClient('localhost', 8421)
191
message_archives = {'arch1': []}
192
with ForkedFakeService.from_client(client, message_archives):
176
193
with ExpectedException(Exception, 'wtf'):
177
client.put_message('arch1', 'asdf',
194
client.put_message('arch1', 'id1',
178
195
StringIO('This is not a message'))