1149
1146
self.assertEqual('LockFailed', response.args[0])
1149
class TestInsertStreamBase(tests.TestCaseWithMemoryTransport):
1151
def make_empty_byte_stream(self, repo):
1152
byte_stream = smart.repository._stream_to_byte_stream([], repo._format)
1153
return ''.join(byte_stream)
1156
class TestSmartServerRepositoryInsertStream(TestInsertStreamBase):
1158
def test_insert_stream_empty(self):
1159
backing = self.get_transport()
1160
request = smart.repository.SmartServerRepositoryInsertStream(backing)
1161
repository = self.make_repository('.')
1162
response = request.execute('', '')
1163
self.assertEqual(None, response)
1164
response = request.do_chunk(self.make_empty_byte_stream(repository))
1165
self.assertEqual(None, response)
1166
response = request.do_end()
1167
self.assertEqual(SmartServerResponse(('ok', )), response)
1170
class TestSmartServerRepositoryInsertStreamLocked(TestInsertStreamBase):
1172
def test_insert_stream_empty(self):
1173
backing = self.get_transport()
1174
request = smart.repository.SmartServerRepositoryInsertStreamLocked(
1176
repository = self.make_repository('.', format='knit')
1177
lock_token = repository.lock_write()
1178
response = request.execute('', '', lock_token)
1179
self.assertEqual(None, response)
1180
response = request.do_chunk(self.make_empty_byte_stream(repository))
1181
self.assertEqual(None, response)
1182
response = request.do_end()
1183
self.assertEqual(SmartServerResponse(('ok', )), response)
1186
def test_insert_stream_with_wrong_lock_token(self):
1187
backing = self.get_transport()
1188
request = smart.repository.SmartServerRepositoryInsertStreamLocked(
1190
repository = self.make_repository('.', format='knit')
1191
lock_token = repository.lock_write()
1193
errors.TokenMismatch, request.execute, '', '', 'wrong-token')
1152
1197
class TestSmartServerRepositoryUnlock(tests.TestCaseWithMemoryTransport):
1154
1199
def setUp(self):
1339
1384
'Repository.get_revision_graph'),
1340
1385
smart.repository.SmartServerRepositoryGetRevisionGraph)
1341
1386
self.assertEqual(
1387
smart.request.request_handlers.get('Repository.get_stream'),
1388
smart.repository.SmartServerRepositoryGetStream)
1342
1390
smart.request.request_handlers.get('Repository.has_revision'),
1343
1391
smart.repository.SmartServerRequestHasRevision)
1344
1392
self.assertEqual(
1393
smart.request.request_handlers.get('Repository.insert_stream'),
1394
smart.repository.SmartServerRepositoryInsertStream)
1396
smart.request.request_handlers.get('Repository.insert_stream_locked'),
1397
smart.repository.SmartServerRepositoryInsertStreamLocked)
1345
1399
smart.request.request_handlers.get('Repository.is_shared'),
1346
1400
smart.repository.SmartServerRepositoryIsShared)
1347
1401
self.assertEqual(
1348
1402
smart.request.request_handlers.get('Repository.lock_write'),
1349
1403
smart.repository.SmartServerRepositoryLockWrite)
1350
1404
self.assertEqual(
1351
smart.request.request_handlers.get('Repository.get_stream'),
1352
smart.repository.SmartServerRepositoryGetStream)
1354
1405
smart.request.request_handlers.get('Repository.tarball'),
1355
1406
smart.repository.SmartServerRepositoryTarball)
1356
1407
self.assertEqual(