1
from cStringIO import StringIO
3
from twisted.internet.defer import fail, succeed
4
from twisted.web.error import Error
6
from ensemble.errors import FileNotFound
7
from ensemble.lib.testing import TestCase
8
from ensemble.providers.orchestra import MachineProvider
11
def get_file_storage(with_storage_url=True):
12
config = {"storage-url": "http://somewhe.re/webdav",
13
"orchestra-server": "somewhereel.se",
14
"orchestra-user": "user",
15
"orchestra-pass": "pass",
16
"acquired-mgmt-class": "acquired",
17
"available-mgmt-class": "available"}
18
if not with_storage_url:
19
del config["storage-url"]
20
provider = MachineProvider("blah", config)
21
return provider.get_file_storage()
24
class FileStorageTest(TestCase):
26
def test_get_works_no_storage_url(self):
27
getPage = self.mocker.replace("twisted.web.client.getPage")
28
getPage("http://somewhereel.se/webdav/rubber/chicken")
29
self.mocker.result(succeed("pulley"))
32
fs = get_file_storage(with_storage_url=False)
33
d = fs.get("rubber/chicken")
36
self.assertEquals(result.read(), "pulley")
40
def test_get_works(self):
41
getPage = self.mocker.replace("twisted.web.client.getPage")
42
getPage("http://somewhe.re/webdav/rubber/chicken")
43
self.mocker.result(succeed("pulley"))
46
fs = get_file_storage()
47
d = fs.get("rubber/chicken")
50
self.assertEquals(result.read(), "pulley")
54
def test_get_fails(self):
55
getPage = self.mocker.replace("twisted.web.client.getPage")
56
getPage("http://somewhe.re/webdav/rubber/chicken")
57
self.mocker.result(fail(Error("404")))
60
fs = get_file_storage()
61
d = fs.get("rubber/chicken")
62
self.assertFailure(d, FileNotFound)
65
def test_get_errors(self):
66
getPage = self.mocker.replace("twisted.web.client.getPage")
67
getPage("http://somewhe.re/webdav/rubber/chicken")
68
self.mocker.result(fail(Error("500")))
71
fs = get_file_storage()
72
d = fs.get("rubber/chicken")
73
self.assertFailure(d, Error)
76
def test_put_works(self):
77
getPage = self.mocker.replace("twisted.web.client.getPage")
78
getPage("http://somewhe.re/webdav/rubber/chicken",
79
method="PUT", postdata="pulley")
80
self.mocker.result(succeed(None))
83
fs = get_file_storage()
84
d = fs.put("rubber/chicken", StringIO("pulley"))
87
self.assertEquals(result, True)
91
def test_put_errors(self):
92
getPage = self.mocker.replace("twisted.web.client.getPage")
93
getPage("http://somewhe.re/webdav/rubber/chicken",
94
method="PUT", postdata="pulley")
95
self.mocker.result(fail(Error("500")))
98
fs = get_file_storage()
99
d = fs.put("rubber/chicken", StringIO("pulley"))
100
self.assertFailure(d, Error)