~jorge/pyjuju/doc-bin-removal

« back to all changes in this revision

Viewing changes to ensemble/providers/orchestra/tests/test_files.py

  • Committer: William Reade
  • Date: 2011-08-05 07:17:27 UTC
  • mfrom: (281.3.10 webdav-storage)
  • Revision ID: fwereade@gmail.com-20110805071727-8oxoxnqgrpsgs6mt
orchestra provider now has a FileStorage implementation using WebDAV

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
from cStringIO import StringIO
 
2
 
 
3
from twisted.internet.defer import fail, succeed
 
4
from twisted.web.error import Error
 
5
 
 
6
from ensemble.errors import FileNotFound
 
7
from ensemble.lib.testing import TestCase
 
8
from ensemble.providers.orchestra import MachineProvider
 
9
 
 
10
 
 
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()
 
22
 
 
23
 
 
24
class FileStorageTest(TestCase):
 
25
 
 
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"))
 
30
        self.mocker.replay()
 
31
 
 
32
        fs = get_file_storage(with_storage_url=False)
 
33
        d = fs.get("rubber/chicken")
 
34
 
 
35
        def verify(result):
 
36
            self.assertEquals(result.read(), "pulley")
 
37
        d.addCallback(verify)
 
38
        return d
 
39
 
 
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"))
 
44
        self.mocker.replay()
 
45
 
 
46
        fs = get_file_storage()
 
47
        d = fs.get("rubber/chicken")
 
48
 
 
49
        def verify(result):
 
50
            self.assertEquals(result.read(), "pulley")
 
51
        d.addCallback(verify)
 
52
        return d
 
53
 
 
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")))
 
58
        self.mocker.replay()
 
59
 
 
60
        fs = get_file_storage()
 
61
        d = fs.get("rubber/chicken")
 
62
        self.assertFailure(d, FileNotFound)
 
63
        return d
 
64
 
 
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")))
 
69
        self.mocker.replay()
 
70
 
 
71
        fs = get_file_storage()
 
72
        d = fs.get("rubber/chicken")
 
73
        self.assertFailure(d, Error)
 
74
        return d
 
75
 
 
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))
 
81
        self.mocker.replay()
 
82
 
 
83
        fs = get_file_storage()
 
84
        d = fs.put("rubber/chicken", StringIO("pulley"))
 
85
 
 
86
        def verify(result):
 
87
            self.assertEquals(result, True)
 
88
        d.addCallback(verify)
 
89
        return d
 
90
 
 
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")))
 
96
        self.mocker.replay()
 
97
 
 
98
        fs = get_file_storage()
 
99
        d = fs.put("rubber/chicken", StringIO("pulley"))
 
100
        self.assertFailure(d, Error)
 
101
        return d