Skip to content

Commit 7d4ae6c

Browse files
committed
issue #615: fix up FileService tests for new logic
Can't perform authorization test in the same process so easily any more since it checks is_privileged
1 parent 5888594 commit 7d4ae6c

File tree

1 file changed

+62
-24
lines changed

1 file changed

+62
-24
lines changed

tests/file_service_test.py

Lines changed: 62 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,26 @@ def replyable_msg(self, **kwargs):
2222
return recv, msg
2323

2424
def test_unauthorized(self):
25+
l1 = self.router.local()
26+
2527
service = self.klass(self.router)
26-
recv, msg = self.replyable_msg()
27-
service.fetch(
28-
path='/etc/shadow',
29-
sender=None,
30-
msg=msg,
28+
pool = mitogen.service.Pool(
29+
router=self.router,
30+
services=[service],
31+
size=1,
3132
)
32-
e = self.assertRaises(mitogen.core.CallError,
33-
lambda: recv.get().unpickle())
33+
try:
34+
e = self.assertRaises(mitogen.core.CallError,
35+
lambda: l1.call(
36+
mitogen.service.FileService.get,
37+
context=self.router.myself(),
38+
path='/etc/shadow',
39+
out_fp=None,
40+
)
41+
)
42+
finally:
43+
pool.stop()
44+
3445
expect = service.unregistered_msg % ('/etc/shadow',)
3546
self.assertTrue(expect in e.args[0])
3647

@@ -85,30 +96,57 @@ def test_prefix_authorized(self):
8596
self._validate_response(recv.get().unpickle())
8697

8798
def test_prefix_authorized_abspath_bad(self):
88-
recv = mitogen.core.Receiver(self.router)
99+
l1 = self.router.local()
100+
89101
service = self.klass(self.router)
90102
service.register_prefix('/etc')
91-
recv, msg = self.replyable_msg()
92-
service.fetch(
93-
path='/etc/foo/bar/../../../passwd',
94-
sender=recv.to_sender(),
95-
msg=msg,
103+
104+
pool = mitogen.service.Pool(
105+
router=self.router,
106+
services=[service],
107+
size=1,
96108
)
97-
self.assertEquals(None, recv.get().unpickle())
109+
path = '/etc/foo/bar/../../../passwd'
110+
try:
111+
e = self.assertRaises(mitogen.core.CallError,
112+
lambda: l1.call(
113+
mitogen.service.FileService.get,
114+
context=self.router.myself(),
115+
path=path,
116+
out_fp=None,
117+
)
118+
)
119+
finally:
120+
pool.stop()
121+
122+
expect = service.unregistered_msg % (path,)
123+
self.assertTrue(expect in e.args[0])
124+
125+
def test_prefix_authorized_abspath_good(self):
126+
l1 = self.router.local()
98127

99-
def test_prefix_authorized_abspath_bad(self):
100-
recv = mitogen.core.Receiver(self.router)
101128
service = self.klass(self.router)
102129
service.register_prefix('/etc')
103-
recv, msg = self.replyable_msg()
104-
service.fetch(
105-
path='/etc/../shadow',
106-
sender=recv.to_sender(),
107-
msg=msg,
130+
path = '/etc/../shadow'
131+
132+
pool = mitogen.service.Pool(
133+
router=self.router,
134+
services=[service],
135+
size=1,
108136
)
109-
e = self.assertRaises(mitogen.core.CallError,
110-
lambda: recv.get().unpickle())
111-
expect = service.unregistered_msg % ('/etc/../shadow',)
137+
try:
138+
e = self.assertRaises(mitogen.core.CallError,
139+
lambda: l1.call(
140+
mitogen.service.FileService.get,
141+
context=self.router.myself(),
142+
path=path,
143+
out_fp=None
144+
)
145+
)
146+
finally:
147+
pool.stop()
148+
149+
expect = service.unregistered_msg % (path,)
112150
self.assertTrue(expect in e.args[0])
113151

114152

0 commit comments

Comments
 (0)