|
22 | 22 |
|
23 | 23 |
|
24 | 24 | import os |
| 25 | +import time |
25 | 26 | import unittest |
26 | 27 | import gdata.client |
27 | 28 | import gdata.data |
@@ -106,9 +107,96 @@ def testGetRevisionFeed(self): |
106 | 107 | uri = 'http://docs.google.com/feeds/default/private/full/-/document' |
107 | 108 | feed = self.client.GetDocList(uri=uri, limit=1) |
108 | 109 | self.assertEqual(len(feed.entry), 1) |
109 | | - acl_feed = self.client.GetRevisions(feed.entry[0].resource_id.text) |
110 | | - self.assert_(isinstance(acl_feed, gdata.docs.data.RevisionFeed)) |
111 | | - self.assert_(isinstance(acl_feed.entry[0], gdata.docs.data.Revision)) |
| 110 | + revision_feed = self.client.GetRevisions(feed.entry[0].resource_id.text) |
| 111 | + self.assert_(isinstance(revision_feed, gdata.docs.data.RevisionFeed)) |
| 112 | + self.assert_(isinstance(revision_feed.entry[0], gdata.docs.data.Revision)) |
| 113 | + |
| 114 | + |
| 115 | +class DocsRevisionsTest(DocsTestCase): |
| 116 | + |
| 117 | + def setUp(self): |
| 118 | + self.client = None |
| 119 | + if conf.options.get_value('runlive') == 'true': |
| 120 | + self.client = gdata.docs.client.DocsClient() |
| 121 | + self.client.ssl = conf.options.get_value('ssl') == 'true' |
| 122 | + conf.configure_client(self.client, 'DocsTest', self.client.auth_service) |
| 123 | + conf.configure_cache(self.client, 'testDocsRevisions') |
| 124 | + try: |
| 125 | + self.testdoc = self.client.Create( |
| 126 | + gdata.docs.data.DOCUMENT_LABEL, 'My Doc') |
| 127 | + # Because of an etag change issue, we must sleep for a few seconds |
| 128 | + time.sleep(10) |
| 129 | + except: |
| 130 | + self.tearDown() |
| 131 | + raise |
| 132 | + try: |
| 133 | + self.testdoc = self.client.GetDoc(self.testdoc.resource_id.text) |
| 134 | + self.testfile = self.client.Upload( |
| 135 | + 'test.bin', 'My Binary File', content_type='application/octet-stream') |
| 136 | + # Because of an etag change issue, we must sleep for a few seconds |
| 137 | + time.sleep(10) |
| 138 | + self.testfile = self.client.GetDoc(self.testfile.resource_id.text) |
| 139 | + except: |
| 140 | + self.tearDown() |
| 141 | + raise |
| 142 | + |
| 143 | + def tearDown(self): |
| 144 | + if conf.options.get_value('runlive') == 'true': |
| 145 | + # Do a best effort tearDown, so pass on any exception |
| 146 | + try: |
| 147 | + self.client.Delete(self.testdoc) |
| 148 | + except: |
| 149 | + pass |
| 150 | + try: |
| 151 | + self.client.Delete(self.testfile) |
| 152 | + except: |
| 153 | + pass |
| 154 | + conf.close_client(self.client) |
| 155 | + |
| 156 | + def testArbFileRevisions(self): |
| 157 | + if not conf.options.get_value('runlive') == 'true': |
| 158 | + return |
| 159 | + revisions = self.client.GetRevisions(self.testfile.resource_id.text) |
| 160 | + self.assert_(isinstance(revisions, gdata.docs.data.RevisionFeed)) |
| 161 | + self.assert_(isinstance(revisions.entry[0], gdata.docs.data.Revision)) |
| 162 | + self.assertEqual(len(revisions.entry), 1) |
| 163 | + |
| 164 | + ms = gdata.data.MediaSource( |
| 165 | + file_path='test.bin', content_type='application/octet-stream') |
| 166 | + self.testfile.title.text = 'My Binary File Updated' |
| 167 | + self.testfile = self.client.Update(self.testfile, media_source=ms) |
| 168 | + self.assertEqual(self.testfile.title.text, 'My Binary File Updated') |
| 169 | + |
| 170 | + revisions = self.client.GetRevisions(self.testfile.resource_id.text) |
| 171 | + self.assert_(isinstance(revisions, gdata.docs.data.RevisionFeed)) |
| 172 | + self.assert_(isinstance(revisions.entry[0], gdata.docs.data.Revision)) |
| 173 | + self.assert_(isinstance(revisions.entry[1], gdata.docs.data.Revision)) |
| 174 | + self.assertEqual(len(revisions.entry), 2) |
| 175 | + |
| 176 | + self.client.Delete(revisions.entry[1], force=True) |
| 177 | + revisions = self.client.GetRevisions(self.testfile.resource_id.text) |
| 178 | + self.assert_(isinstance(revisions, gdata.docs.data.RevisionFeed)) |
| 179 | + self.assert_(isinstance(revisions.entry[0], gdata.docs.data.Revision)) |
| 180 | + self.assertEqual(len(revisions.entry), 1) |
| 181 | + |
| 182 | + def testDocRevisions(self): |
| 183 | + if not conf.options.get_value('runlive') == 'true': |
| 184 | + return |
| 185 | + revisions = self.client.GetRevisions(self.testdoc.resource_id.text) |
| 186 | + self.assert_(isinstance(revisions, gdata.docs.data.RevisionFeed)) |
| 187 | + self.assert_(isinstance(revisions.entry[0], gdata.docs.data.Revision)) |
| 188 | + self.assertEqual(len(revisions.entry), 1) |
| 189 | + |
| 190 | + ms = gdata.data.MediaSource( |
| 191 | + file_path='test.doc', content_type='application/msword') |
| 192 | + self.testdoc.title.text = 'My Doc Updated' |
| 193 | + self.testdoc = self.client.Update(self.testdoc, media_source=ms) |
| 194 | + |
| 195 | + revisions = self.client.GetRevisions(self.testdoc.resource_id.text) |
| 196 | + self.assert_(isinstance(revisions, gdata.docs.data.RevisionFeed)) |
| 197 | + self.assert_(isinstance(revisions.entry[0], gdata.docs.data.Revision)) |
| 198 | + self.assert_(isinstance(revisions.entry[1], gdata.docs.data.Revision)) |
| 199 | + self.assertEqual(len(revisions.entry), 2) |
112 | 200 |
|
113 | 201 |
|
114 | 202 | class CreatingAndDeletionTest(DocsTestCase): |
@@ -255,7 +343,8 @@ def testDownloadPdf(self): |
255 | 343 |
|
256 | 344 | def suite(): |
257 | 345 | return conf.build_suite([DocsFetchingDataTest, CreatingAndDeletionTest, |
258 | | - DocumentListUploadTest, DocumentListExportTest]) |
| 346 | + DocumentListUploadTest, DocumentListExportTest, |
| 347 | + DocsRevisionsTest]) |
259 | 348 |
|
260 | 349 |
|
261 | 350 | if __name__ == '__main__': |
|
0 commit comments