34
35
from bzrlib.errors import ParamikoNotPresent
35
36
from bzrlib.smart import client, medium
36
37
from bzrlib.smart.server import SmartTCPServer
37
from bzrlib.tests import TestCaseWithTransport, TestSkipped
38
from bzrlib.tests import (
39
TestCaseWithTransport,
40
TestCaseWithMemoryTransport,
38
43
from bzrlib.trace import mutter
39
44
from bzrlib.transport import get_transport, remote
315
320
client_medium.disconnect()
323
class TestUserdirExpansion(TestCaseWithMemoryTransport):
325
def fake_expanduser(self, path):
326
"""A simple, environment-independent, function for the duration of this
329
Paths starting with a path segment of '~user' will expand to start with
330
'/home/user/'. Every other path will be unchanged.
332
if path.split('/', 1)[0] == '~user':
333
return '/home/user' + path[len('~user'):]
336
def make_test_server(self, base_path='/'):
337
"""Make and setUp a BzrServerMaker, backed by a memory transport, and
338
creat '/home/user' in that transport.
340
from bzrlib.smart.server import BzrServerMaker
341
bzr_server = BzrServerMaker(
342
self.fake_expanduser, lambda t: base_path)
343
mem_transport = self.get_transport()
344
mem_transport.mkdir_multi(['home', 'home/user'])
345
bzr_server.setUp(mem_transport, None, None, inet=True)
348
def test_bzr_serve_expands_userdir(self):
349
bzr_server = self.make_test_server()
350
self.assertTrue(bzr_server.smart_server.backing_transport.has('~user'))
352
def test_bzr_serve_does_not_expand_userdir_outside_base(self):
353
bzr_server = self.make_test_server('/foo')
354
self.assertFalse(bzr_server.smart_server.backing_transport.has('~user'))