~ubuntu-branches/ubuntu/oneiric/desktopcouch/oneiric

« back to all changes in this revision

Viewing changes to desktopcouch/records/tests/test_mocked_server.py

  • Committer: Kees Cook
  • Date: 2011-04-08 21:38:21 UTC
  • mfrom: (41.1.1 desktopcouch-natty)
  • Revision ID: kees@outflux.net-20110408213821-mrrkjrksqjy0ch3v
* New upstream release.
  - [critical] desktopcouch-service crashed with PreconditionFailed in
    request(): ('file_exists', 'The database could not be created, the file
    already exists.')  (LP: #707321)
  - 0.6.9b => 1.0.5 API break: desktopcouch.find_port()  (LP: #710424)
  - desktopcouch-service crashed with OSError in __init__()  (LP: #530322)
  - update_bookmark_file() finds but does not use couchdb.tmpl from alternate
    path  (LP: #673641)
  - erlang/desktopcouch/beam.smp don't let the processor go idle  (LP: #746367)
  - [low] replication_services/example.py needs update  (LP: #599847)

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
# Authors: Manuel de la Pena<manuel@canonical.com>
18
18
"""Test the database code mocking the db access."""
19
19
 
20
 
from couchdb.http import  ResourceNotFound
 
20
from couchdb.http import ResourceNotFound, PreconditionFailed
21
21
from mocker import MockerTestCase, ANY, KWARGS
22
22
 
23
23
from desktopcouch.application.server import DesktopDatabase
31
31
    testcase.server_class(testcase.uri, ctx=testcase.ctx,
32
32
        oauth_tokens=testcase.oauth_tokens)
33
33
    testcase.mocker.result(testcase.server_class)
34
 
    testcase.dbname in testcase.server_class
35
 
    testcase.mocker.result(True)
 
34
    testcase.server_class.create(testcase.dbname)
36
35
    testcase.server_class[testcase.dbname]
37
36
    testcase.mocker.result(testcase.server_class)
38
37
    testcase.server_class.info()
61
60
        views_factory=testcase.views_factory)
62
61
 
63
62
 
 
63
class TestMockedCouchDatabaseCreateStates(MockerTestCase):
 
64
    def setUp(self):
 
65
        """Set up tests."""
 
66
        super(TestMockedCouchDatabaseCreateStates, self).setUp()
 
67
        self.record_factory = self.mocker.mock()
 
68
        self.server_class = self.mocker.mock()
 
69
        self.oauth_tokens = self.mocker.mock()
 
70
        self.ctx = self.mocker.mock()
 
71
        self.uri = 'uri'
 
72
        self.dbname = self._testMethodName
 
73
 
 
74
    def test_create_already_exists(self):
 
75
        """Access DB with create=True, when it already exists."""
 
76
        self.server_class(self.uri, ctx=self.ctx,
 
77
            oauth_tokens=self.oauth_tokens)
 
78
        self.mocker.result(self.server_class)
 
79
        self.server_class.create(self.dbname)
 
80
        self.mocker.throw(PreconditionFailed)
 
81
 
 
82
        self.server_class[self.dbname]
 
83
        self.mocker.result(self.server_class)
 
84
        self.server_class.info()
 
85
        self.mocker.result({'update_seq': []})
 
86
 
 
87
        self.mocker.replay()
 
88
        database = DesktopDatabase(self.dbname, uri=self.uri,
 
89
            record_factory=self.record_factory, create=True,
 
90
            server_class=self.server_class,
 
91
            oauth_tokens=self.oauth_tokens, ctx=self.ctx)
 
92
 
 
93
    def test_create_new(self):
 
94
        """Access DB with create=True, when it doesn't exist."""
 
95
        self.server_class(self.uri, ctx=self.ctx,
 
96
            oauth_tokens=self.oauth_tokens)
 
97
        self.mocker.result(self.server_class)
 
98
        self.server_class.create(self.dbname)
 
99
        self.mocker.result(self.server_class)
 
100
        self.server_class[self.dbname]
 
101
        self.mocker.result(self.server_class)
 
102
        info = self.mocker.mock()
 
103
        self.server_class.info()
 
104
        self.mocker.result(info)
 
105
        info["update_seq"]
 
106
        self.mocker.result({})
 
107
        self.mocker.replay()
 
108
        database = DesktopDatabase(self.dbname, uri=self.uri,
 
109
            record_factory=self.record_factory, create=True,
 
110
            server_class=self.server_class,
 
111
            oauth_tokens=self.oauth_tokens, ctx=self.ctx)
 
112
 
 
113
    def test_no_create_not_exists(self):
 
114
        """Access DB with create=False, when it already exists."""
 
115
        self.server_class(self.uri, ctx=self.ctx,
 
116
            oauth_tokens=self.oauth_tokens)
 
117
        self.mocker.result(self.server_class)
 
118
 
 
119
        self.server_class[self.dbname]
 
120
        self.mocker.throw(ResourceNotFound)
 
121
 
 
122
        self.mocker.replay()
 
123
        self.assertRaises(NoSuchDatabase,
 
124
            DesktopDatabase, self.dbname, uri=self.uri,
 
125
            record_factory=self.record_factory, create=False,
 
126
            server_class=self.server_class,
 
127
            oauth_tokens=self.oauth_tokens, ctx=self.ctx)
 
128
 
 
129
    def test_no_create_already_exists(self):
 
130
        """Access DB with create=False, when it doesn't exist."""
 
131
        self.server_class(self.uri, ctx=self.ctx,
 
132
            oauth_tokens=self.oauth_tokens)
 
133
        self.mocker.result(self.server_class)
 
134
        self.server_class[self.dbname]
 
135
        self.mocker.result(self.server_class)
 
136
        info = self.mocker.mock()
 
137
        self.server_class.info()
 
138
        self.mocker.result(info)
 
139
        info["update_seq"]
 
140
        self.mocker.result({})
 
141
 
 
142
        self.mocker.replay()
 
143
        database = DesktopDatabase(self.dbname, uri=self.uri,
 
144
            record_factory=self.record_factory, create=False,
 
145
            server_class=self.server_class,
 
146
            oauth_tokens=self.oauth_tokens, ctx=self.ctx)
 
147
 
 
148
 
64
149
class TestMockedCouchDatabaseDeprecated(MockerTestCase):
65
150
    """Test the deprecated API."""
66
151
 
199
284
        self.server_class(self.uri, ctx=self.ctx,
200
285
            oauth_tokens=self.oauth_tokens)
201
286
        self.mocker.result(self.server_class)
202
 
        self.dbname in self.server_class
203
 
        self.mocker.result(False)
 
287
        self.server_class[self.dbname]
 
288
        self.mocker.throw(ResourceNotFound)
204
289
        self.mocker.replay()
205
290
        self.assertRaises(NoSuchDatabase, DesktopDatabase, self.dbname,
206
291
            uri=self.uri, record_factory=self.record_factory, create=False,