Merge lp:~elopio/cloudspacesclient/refactor into lp:cloudspacesclient
- refactor
- Merge into trunk
Proposed by
Leo Arias
Status: | Merged |
---|---|
Merged at revision: | 41 |
Proposed branch: | lp:~elopio/cloudspacesclient/refactor |
Merge into: | lp:cloudspacesclient |
Prerequisite: | lp:~elopio/cloudspacesclient/update_filename |
Diff against target: |
375 lines (+62/-82) 1 file modified
src/cloudspacesclient/tests/conformance/test_cloudspaces_api.py (+62/-82) |
To merge this branch: | bzr merge lp:~elopio/cloudspacesclient/refactor |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Richard Huddie (community) | Approve | ||
Review via email: mp+197976@code.launchpad.net |
Commit message
Refactor tests to make them smaller or clearer.
Description of the change
To post a comment you must log in.
Revision history for this message
Richard Huddie (rhuddie) : | # |
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'src/cloudspacesclient/tests/conformance/test_cloudspaces_api.py' | |||
2 | --- src/cloudspacesclient/tests/conformance/test_cloudspaces_api.py 2013-12-06 00:21:49 +0000 | |||
3 | +++ src/cloudspacesclient/tests/conformance/test_cloudspaces_api.py 2013-12-06 00:21:49 +0000 | |||
4 | @@ -39,13 +39,13 @@ | |||
5 | 39 | return getattr(test_server_module, test_server_adapter[-1])() | 39 | return getattr(test_server_module, test_server_adapter[-1])() |
6 | 40 | 40 | ||
7 | 41 | 41 | ||
9 | 42 | class CloudspacesAPITestCase(unittest.TestCase): | 42 | class BaseCloudspacesAPITestCase(unittest.TestCase): |
10 | 43 | 43 | ||
11 | 44 | cloudspaces_server_url = config.get( | 44 | cloudspaces_server_url = config.get( |
12 | 45 | 'cloudspaces', 'cloudspaces_server_url') | 45 | 'cloudspaces', 'cloudspaces_server_url') |
13 | 46 | 46 | ||
14 | 47 | def setUp(self): | 47 | def setUp(self): |
16 | 48 | super(CloudspacesAPITestCase, self).setUp() | 48 | super(BaseCloudspacesAPITestCase, self).setUp() |
17 | 49 | self.start_datetime = self._get_now_datetime() | 49 | self.start_datetime = self._get_now_datetime() |
18 | 50 | self.test_server = get_test_server_adapter() | 50 | self.test_server = get_test_server_adapter() |
19 | 51 | self.test_user = self.test_server.create_test_user() | 51 | self.test_user = self.test_server.create_test_user() |
20 | @@ -64,6 +64,14 @@ | |||
21 | 64 | rfc3339_now = now.isoformat().replace("T ", "T").split(".")[0] + "Z" | 64 | rfc3339_now = now.isoformat().replace("T ", "T").split(".")[0] + "Z" |
22 | 65 | return parser.parse(rfc3339_now) | 65 | return parser.parse(rfc3339_now) |
23 | 66 | 66 | ||
24 | 67 | def assert_datetime_limits(self, datetime, start_datetime, end_datetime): | ||
25 | 68 | # The server doesn't return microseconds, so times may be equal. | ||
26 | 69 | self.assertGreaterEqual(datetime, start_datetime) | ||
27 | 70 | self.assertLessEqual(datetime, end_datetime) | ||
28 | 71 | |||
29 | 72 | |||
30 | 73 | class UserRepresentationTestCase(BaseCloudspacesAPITestCase): | ||
31 | 74 | |||
32 | 67 | def test_get_user_representation(self): | 75 | def test_get_user_representation(self): |
33 | 68 | user_rep = self.cloudspaces_api_client.get_user_representation() | 76 | user_rep = self.cloudspaces_api_client.get_user_representation() |
34 | 69 | 77 | ||
35 | @@ -80,23 +88,33 @@ | |||
36 | 80 | end_datetime): | 88 | end_datetime): |
37 | 81 | for volume in volumes: | 89 | for volume in volumes: |
38 | 82 | when_created = parser.parse(volume.get('when_created')) | 90 | when_created = parser.parse(volume.get('when_created')) |
40 | 83 | self._assert_datetime_limits( | 91 | self.assert_datetime_limits( |
41 | 84 | when_created, start_datetime, end_datetime) | 92 | when_created, start_datetime, end_datetime) |
42 | 85 | 93 | ||
43 | 86 | def _assert_datetime_limits(self, datetime, start_datetime, end_datetime): | ||
44 | 87 | # The server doesn't return microseconds, so times may be equal. | ||
45 | 88 | self.assertGreaterEqual(datetime, start_datetime) | ||
46 | 89 | self.assertLessEqual(datetime, end_datetime) | ||
47 | 90 | |||
48 | 91 | def _assert_new_user_volumes_name(self, volumes): | 94 | def _assert_new_user_volumes_name(self, volumes): |
49 | 92 | volume_names = [volume.get('name') for volume in volumes] | 95 | volume_names = [volume.get('name') for volume in volumes] |
50 | 93 | self.assertEqual( | 96 | self.assertEqual( |
51 | 94 | volume_names, self.test_server.get_new_user_volume_names()) | 97 | volume_names, self.test_server.get_new_user_volume_names()) |
52 | 95 | 98 | ||
53 | 99 | |||
54 | 100 | class TestCaseWithRootNodeInfo(BaseCloudspacesAPITestCase): | ||
55 | 101 | |||
56 | 102 | def setUp(self): | ||
57 | 103 | super(TestCaseWithRootNodeInfo, self).setUp() | ||
58 | 104 | self.root_node_id = self._get_root_node_id() | ||
59 | 105 | |||
60 | 106 | def _get_root_node_id(self): | ||
61 | 107 | user_rep = self.cloudspaces_api_client.get_user_representation() | ||
62 | 108 | root_volume = self._get_root_volume(user_rep.get('volumes')) | ||
63 | 109 | return root_volume.get('node_id') | ||
64 | 110 | |||
65 | 111 | def _get_root_volume(self, volumes): | ||
66 | 112 | # FIXME The first volume returned is not necessarily the root. | ||
67 | 113 | # --elopio - 2013-11-23 | ||
68 | 114 | return volumes[0] | ||
69 | 115 | |||
70 | 96 | def test_get_root_metadata(self): | 116 | def test_get_root_metadata(self): |
74 | 97 | node_id = self._get_root_node_id() | 117 | metadata = self.cloudspaces_api_client.get_metadata(self.root_node_id) |
72 | 98 | |||
73 | 99 | metadata = self.cloudspaces_api_client.get_metadata(node_id) | ||
75 | 100 | 118 | ||
76 | 101 | validictory.validate( | 119 | validictory.validate( |
77 | 102 | metadata, schemas.GET_FOLDER_METADATA_RESPONSE_SCHEMA) | 120 | metadata, schemas.GET_FOLDER_METADATA_RESPONSE_SCHEMA) |
78 | @@ -104,7 +122,7 @@ | |||
79 | 104 | path, filename = os.path.split(self.test_server.get_root_path()) | 122 | path, filename = os.path.split(self.test_server.get_root_path()) |
80 | 105 | expected = dict( | 123 | expected = dict( |
81 | 106 | is_deleted=False, is_folder=True, is_root=True, filename=filename, | 124 | is_deleted=False, is_folder=True, is_root=True, filename=filename, |
83 | 107 | node_id=node_id, path=path) | 125 | node_id=self.root_node_id, path=path) |
84 | 108 | self._assert_json_object_values(expected, metadata) | 126 | self._assert_json_object_values(expected, metadata) |
85 | 109 | 127 | ||
86 | 110 | self._assert_normal_folder_keys_not_in_root(metadata) | 128 | self._assert_normal_folder_keys_not_in_root(metadata) |
87 | @@ -117,16 +135,6 @@ | |||
88 | 117 | # --elopio - 2013-11-25 | 135 | # --elopio - 2013-11-25 |
89 | 118 | # TODO Check the volume_id field. --elopio - 2013-11-25 | 136 | # TODO Check the volume_id field. --elopio - 2013-11-25 |
90 | 119 | 137 | ||
91 | 120 | def _get_root_node_id(self): | ||
92 | 121 | user_rep = self.cloudspaces_api_client.get_user_representation() | ||
93 | 122 | root_volume = self._get_root_volume(user_rep.get('volumes')) | ||
94 | 123 | return root_volume.get('node_id') | ||
95 | 124 | |||
96 | 125 | def _get_root_volume(self, volumes): | ||
97 | 126 | # FIXME The first volume returned is not necessarily the root. | ||
98 | 127 | # --elopio - 2013-11-23 | ||
99 | 128 | return volumes[0] | ||
100 | 129 | |||
101 | 130 | def _assert_json_object_values(self, expected, actual): | 138 | def _assert_json_object_values(self, expected, actual): |
102 | 131 | """Assert the values of the returned json object. | 139 | """Assert the values of the returned json object. |
103 | 132 | 140 | ||
104 | @@ -163,7 +171,7 @@ | |||
105 | 163 | metadata_log = [] | 171 | metadata_log = [] |
106 | 164 | # if a node id is not given, then use the root as default | 172 | # if a node id is not given, then use the root as default |
107 | 165 | if not parent_node_id: | 173 | if not parent_node_id: |
109 | 166 | parent_node_id = self._get_root_node_id() | 174 | parent_node_id = self.root_node_id |
110 | 167 | # create the folders in the parent folder | 175 | # create the folders in the parent folder |
111 | 168 | for count in range(folder_count): | 176 | for count in range(folder_count): |
112 | 169 | metadata = self.cloudspaces_api_client.make_folder( | 177 | metadata = self.cloudspaces_api_client.make_folder( |
113 | @@ -177,13 +185,11 @@ | |||
114 | 177 | return metadata_log | 185 | return metadata_log |
115 | 178 | 186 | ||
116 | 179 | def test_create_folder_in_root(self): | 187 | def test_create_folder_in_root(self): |
117 | 180 | # get the root node id and root folder name | ||
118 | 181 | root_node_id = self._get_root_node_id() | ||
119 | 182 | # create the folder | 188 | # create the folder |
120 | 183 | folder_name = 'root_folder_1' | 189 | folder_name = 'root_folder_1' |
121 | 184 | 190 | ||
122 | 185 | metadata = self.cloudspaces_api_client.make_folder( | 191 | metadata = self.cloudspaces_api_client.make_folder( |
124 | 186 | root_node_id, folder_name) | 192 | self.root_node_id, folder_name) |
125 | 187 | # validate the folder properties from response | 193 | # validate the folder properties from response |
126 | 188 | validictory.validate( | 194 | validictory.validate( |
127 | 189 | metadata, schemas.GET_FOLDER_METADATA_RESPONSE_SCHEMA) | 195 | metadata, schemas.GET_FOLDER_METADATA_RESPONSE_SCHEMA) |
128 | @@ -191,12 +197,10 @@ | |||
129 | 191 | root_path = self.test_server.get_root_path() | 197 | root_path = self.test_server.get_root_path() |
130 | 192 | expected = dict( | 198 | expected = dict( |
131 | 193 | is_folder=True, is_deleted=False, is_root=False, path=root_path, | 199 | is_folder=True, is_deleted=False, is_root=False, path=root_path, |
133 | 194 | filename=folder_name, parent_node_id=root_node_id, version=1) | 200 | filename=folder_name, parent_node_id=self.root_node_id, version=1) |
134 | 195 | self._assert_json_object_values(expected, metadata) | 201 | self._assert_json_object_values(expected, metadata) |
135 | 196 | 202 | ||
136 | 197 | def test_create_folder_no_parent_id(self): | 203 | def test_create_folder_no_parent_id(self): |
137 | 198 | # get the root node id and root folder name | ||
138 | 199 | root_node_id = self._get_root_node_id() | ||
139 | 200 | # create the folder without specifying the parent folder id | 204 | # create the folder without specifying the parent folder id |
140 | 201 | # this should add folder to root level by default | 205 | # this should add folder to root level by default |
141 | 202 | folder_name = 'folder_no_parent_id' | 206 | folder_name = 'folder_no_parent_id' |
142 | @@ -209,16 +213,14 @@ | |||
143 | 209 | root_path = self.test_server.get_root_path() | 213 | root_path = self.test_server.get_root_path() |
144 | 210 | expected = dict( | 214 | expected = dict( |
145 | 211 | is_folder=True, is_deleted=False, is_root=False, path=root_path, | 215 | is_folder=True, is_deleted=False, is_root=False, path=root_path, |
147 | 212 | filename=folder_name, parent_node_id=root_node_id, version=1) | 216 | filename=folder_name, parent_node_id=self.root_node_id, version=1) |
148 | 213 | self._assert_json_object_values(expected, metadata) | 217 | self._assert_json_object_values(expected, metadata) |
149 | 214 | 218 | ||
150 | 215 | def test_create_child_folder(self): | 219 | def test_create_child_folder(self): |
151 | 216 | # get the root node id and root folder name | ||
152 | 217 | root_node_id = self._get_root_node_id() | ||
153 | 218 | parent_folder_name = 'parent_folder_1' | 220 | parent_folder_name = 'parent_folder_1' |
154 | 219 | # create the parent folder | 221 | # create the parent folder |
155 | 220 | parent_metadata = self.cloudspaces_api_client.make_folder( | 222 | parent_metadata = self.cloudspaces_api_client.make_folder( |
157 | 221 | root_node_id, parent_folder_name) | 223 | self.root_node_id, parent_folder_name) |
158 | 222 | # Now create a sub folder under the parent folder | 224 | # Now create a sub folder under the parent folder |
159 | 223 | child_folder_name = 'child_folder_1' | 225 | child_folder_name = 'child_folder_1' |
160 | 224 | parent_node_id = parent_metadata.get('node_id') | 226 | parent_node_id = parent_metadata.get('node_id') |
161 | @@ -237,12 +239,11 @@ | |||
162 | 237 | self._assert_json_object_values(expected, metadata) | 239 | self._assert_json_object_values(expected, metadata) |
163 | 238 | 240 | ||
164 | 239 | def test_create_new_file(self): | 241 | def test_create_new_file(self): |
165 | 240 | root_node_id = self._get_root_node_id() | ||
166 | 241 | test_file_name = 'test.txt' | 242 | test_file_name = 'test.txt' |
167 | 242 | test_file_mimetype = 'text/plain' | 243 | test_file_mimetype = 'text/plain' |
168 | 243 | 244 | ||
169 | 244 | metadata = self.cloudspaces_api_client.make_file( | 245 | metadata = self.cloudspaces_api_client.make_file( |
171 | 245 | root_node_id, test_file_name) | 246 | self.root_node_id, test_file_name) |
172 | 246 | 247 | ||
173 | 247 | validictory.validate( | 248 | validictory.validate( |
174 | 248 | metadata, schemas.GET_FILE_METADATA_RESPONSE_SCHEMA) | 249 | metadata, schemas.GET_FILE_METADATA_RESPONSE_SCHEMA) |
175 | @@ -251,11 +252,12 @@ | |||
176 | 251 | expected = dict( | 252 | expected = dict( |
177 | 252 | hash=None, filename=test_file_name, is_deleted=False, | 253 | hash=None, filename=test_file_name, is_deleted=False, |
178 | 253 | is_folder=False, mimetype=test_file_mimetype, | 254 | is_folder=False, mimetype=test_file_mimetype, |
180 | 254 | parent_node_id=root_node_id, path=root_path, size=0, version=1) | 255 | parent_node_id=self.root_node_id, path=root_path, size=0, |
181 | 256 | version=1) | ||
182 | 255 | self._assert_json_object_values(expected, metadata) | 257 | self._assert_json_object_values(expected, metadata) |
183 | 256 | 258 | ||
184 | 257 | # Assert that the file has just been created. | 259 | # Assert that the file has just been created. |
186 | 258 | self._assert_datetime_limits( | 260 | self.assert_datetime_limits( |
187 | 259 | parser.parse(metadata.get('server_modified')), self.start_datetime, | 261 | parser.parse(metadata.get('server_modified')), self.start_datetime, |
188 | 260 | self._get_now_datetime()) | 262 | self._get_now_datetime()) |
189 | 261 | # TODO update the spec because it says checksum instead of hash. | 263 | # TODO update the spec because it says checksum instead of hash. |
190 | @@ -267,21 +269,19 @@ | |||
191 | 267 | 269 | ||
192 | 268 | def test_download_empty_file(self): | 270 | def test_download_empty_file(self): |
193 | 269 | test_file_name = 'test_file_to_download.txt' | 271 | test_file_name = 'test_file_to_download.txt' |
194 | 270 | root_node_id = self._get_root_node_id() | ||
195 | 271 | create_metadata = self.cloudspaces_api_client.make_file( | 272 | create_metadata = self.cloudspaces_api_client.make_file( |
197 | 272 | root_node_id, test_file_name) | 273 | self.root_node_id, test_file_name) |
198 | 273 | file_node_id = create_metadata.get('node_id') | 274 | file_node_id = create_metadata.get('node_id') |
199 | 274 | 275 | ||
200 | 275 | contents = list(self.cloudspaces_api_client.get_file(file_node_id)) | 276 | contents = list(self.cloudspaces_api_client.get_file(file_node_id)) |
201 | 276 | self.assertEqual(contents, []) | 277 | self.assertEqual(contents, []) |
202 | 277 | 278 | ||
203 | 278 | def test_delete_file(self): | 279 | def test_delete_file(self): |
204 | 279 | root_node_id = self._get_root_node_id() | ||
205 | 280 | test_file_name = 'test_file_to_delete.txt' | 280 | test_file_name = 'test_file_to_delete.txt' |
206 | 281 | test_file_mimetype = 'text/plain' | 281 | test_file_mimetype = 'text/plain' |
207 | 282 | 282 | ||
208 | 283 | create_metadata = self.cloudspaces_api_client.make_file( | 283 | create_metadata = self.cloudspaces_api_client.make_file( |
210 | 284 | root_node_id, test_file_name) | 284 | self.root_node_id, test_file_name) |
211 | 285 | file_node_id = create_metadata.get('node_id') | 285 | file_node_id = create_metadata.get('node_id') |
212 | 286 | 286 | ||
213 | 287 | delete_metadata = self.cloudspaces_api_client.delete(file_node_id) | 287 | delete_metadata = self.cloudspaces_api_client.delete(file_node_id) |
214 | @@ -292,11 +292,11 @@ | |||
215 | 292 | expected = dict( | 292 | expected = dict( |
216 | 293 | hash=None, filename=test_file_name, is_deleted=True, | 293 | hash=None, filename=test_file_name, is_deleted=True, |
217 | 294 | is_folder=False, mimetype=test_file_mimetype, | 294 | is_folder=False, mimetype=test_file_mimetype, |
219 | 295 | parent_node_id=root_node_id, path=root_path, size=0) | 295 | parent_node_id=self.root_node_id, path=root_path, size=0) |
220 | 296 | self._assert_json_object_values(expected, delete_metadata) | 296 | self._assert_json_object_values(expected, delete_metadata) |
221 | 297 | 297 | ||
222 | 298 | # Assert that the file has just been modified. | 298 | # Assert that the file has just been modified. |
224 | 299 | self._assert_datetime_limits( | 299 | self.assert_datetime_limits( |
225 | 300 | parser.parse(delete_metadata.get('server_modified')), | 300 | parser.parse(delete_metadata.get('server_modified')), |
226 | 301 | self.start_datetime, | 301 | self.start_datetime, |
227 | 302 | self._get_now_datetime()) | 302 | self._get_now_datetime()) |
228 | @@ -304,12 +304,10 @@ | |||
229 | 304 | # TODO Check the volume_id field. --elopio - 2013-11-27 | 304 | # TODO Check the volume_id field. --elopio - 2013-11-27 |
230 | 305 | 305 | ||
231 | 306 | def test_delete_folder_in_root(self): | 306 | def test_delete_folder_in_root(self): |
232 | 307 | # get the root node id and root folder name | ||
233 | 308 | root_node_id = self._get_root_node_id() | ||
234 | 309 | # create the folder to be deleted later | 307 | # create the folder to be deleted later |
235 | 310 | folder_name = 'delete_me_folder_1' | 308 | folder_name = 'delete_me_folder_1' |
236 | 311 | metadata = self.cloudspaces_api_client.make_folder( | 309 | metadata = self.cloudspaces_api_client.make_folder( |
238 | 312 | root_node_id, folder_name) | 310 | self.root_node_id, folder_name) |
239 | 313 | # now delete the folder | 311 | # now delete the folder |
240 | 314 | node_id = metadata.get('node_id') | 312 | node_id = metadata.get('node_id') |
241 | 315 | metadata = self.cloudspaces_api_client.delete(node_id) | 313 | metadata = self.cloudspaces_api_client.delete(node_id) |
242 | @@ -329,10 +327,9 @@ | |||
243 | 329 | self.cloudspaces_api_client.delete(node_id) | 327 | self.cloudspaces_api_client.delete(node_id) |
244 | 330 | 328 | ||
245 | 331 | def test_delete_folder_and_children_in_root(self): | 329 | def test_delete_folder_and_children_in_root(self): |
246 | 332 | root_node_id = self._get_root_node_id() | ||
247 | 333 | # create a new parent folder to hold the child items | 330 | # create a new parent folder to hold the child items |
248 | 334 | metadata = self.cloudspaces_api_client.make_folder( | 331 | metadata = self.cloudspaces_api_client.make_folder( |
250 | 335 | root_node_id, 'test_delete_folder_and_children_in_root') | 332 | self.root_node_id, 'test_delete_folder_and_children_in_root') |
251 | 336 | parent_node_id = metadata.get('node_id') | 333 | parent_node_id = metadata.get('node_id') |
252 | 337 | # now create sub-files and folders within this folder | 334 | # now create sub-files and folders within this folder |
253 | 338 | # this content should be deleted by the test when top folder is deleted | 335 | # this content should be deleted by the test when top folder is deleted |
254 | @@ -355,12 +352,10 @@ | |||
255 | 355 | 352 | ||
256 | 356 | def test_create_folder_using_parent_file_id(self): | 353 | def test_create_folder_using_parent_file_id(self): |
257 | 357 | # A negative test to create a folder using the node id of a file as | 354 | # A negative test to create a folder using the node id of a file as |
258 | 358 | # the parent node id for the folder | ||
259 | 359 | root_node_id = self._get_root_node_id() | ||
260 | 360 | # create a file first | 355 | # create a file first |
261 | 361 | file_name = 'test_file.txt' | 356 | file_name = 'test_file.txt' |
262 | 362 | metadata = self.cloudspaces_api_client.make_file( | 357 | metadata = self.cloudspaces_api_client.make_file( |
264 | 363 | root_node_id, file_name) | 358 | self.root_node_id, file_name) |
265 | 364 | file_node_id = metadata.get('node_id') | 359 | file_node_id = metadata.get('node_id') |
266 | 365 | # now try and create a folder, using file id as parent | 360 | # now try and create a folder, using file id as parent |
267 | 366 | # this should fail gracefully with a suitable error code | 361 | # this should fail gracefully with a suitable error code |
268 | @@ -369,11 +364,9 @@ | |||
269 | 369 | self.cloudspaces_api_client.make_folder(file_node_id, folder_name) | 364 | self.cloudspaces_api_client.make_folder(file_node_id, folder_name) |
270 | 370 | 365 | ||
271 | 371 | def test_folder_child_list_false(self): | 366 | def test_folder_child_list_false(self): |
272 | 372 | # A test to get child objects from parent directory | ||
273 | 373 | root_node_id = self._get_root_node_id() | ||
274 | 374 | # create a new parent folder to hold the child items | 367 | # create a new parent folder to hold the child items |
275 | 375 | metadata = self.cloudspaces_api_client.make_folder( | 368 | metadata = self.cloudspaces_api_client.make_folder( |
277 | 376 | root_node_id, 'test_folder_child_list_false') | 369 | self.root_node_id, 'test_folder_child_list_false') |
278 | 377 | parent_node_id = metadata.get('node_id') | 370 | parent_node_id = metadata.get('node_id') |
279 | 378 | # Create a data structure from root folder | 371 | # Create a data structure from root folder |
280 | 379 | file_count = 3 | 372 | file_count = 3 |
281 | @@ -387,11 +380,9 @@ | |||
282 | 387 | self.assertEqual(None, metadata.get('contents')) | 380 | self.assertEqual(None, metadata.get('contents')) |
283 | 388 | 381 | ||
284 | 389 | def test_folder_child_list_true(self): | 382 | def test_folder_child_list_true(self): |
285 | 390 | # A test to get child objects from parent directory | ||
286 | 391 | root_node_id = self._get_root_node_id() | ||
287 | 392 | # create a new parent folder to hold the child items | 383 | # create a new parent folder to hold the child items |
288 | 393 | metadata = self.cloudspaces_api_client.make_folder( | 384 | metadata = self.cloudspaces_api_client.make_folder( |
290 | 394 | root_node_id, 'test_folder_child_list_true') | 385 | self.root_node_id, 'test_folder_child_list_true') |
291 | 395 | parent_node_id = metadata.get('node_id') | 386 | parent_node_id = metadata.get('node_id') |
292 | 396 | # Create a data structure from root folder | 387 | # Create a data structure from root folder |
293 | 397 | file_count = 3 | 388 | file_count = 3 |
294 | @@ -408,17 +399,14 @@ | |||
295 | 408 | 399 | ||
296 | 409 | def test_folder_depth(self): | 400 | def test_folder_depth(self): |
297 | 410 | # A test to create a hierarchichal directory structure and validate | 401 | # A test to create a hierarchichal directory structure and validate |
305 | 411 | # the folder path is correct for each sub-folder | 402 | parent_node_id = self.root_node_id |
306 | 412 | root_node_id = self._get_root_node_id() | 403 | parent_metadata = self.cloudspaces_api_client.get_metadata( |
307 | 413 | # create a new parent folder to hold the child items | 404 | parent_node_id) |
301 | 414 | parent_metadata = self.cloudspaces_api_client.make_folder( | ||
302 | 415 | root_node_id, 'test_folder_depth') | ||
303 | 416 | parent_node_id = parent_metadata.get('node_id') | ||
304 | 417 | folder_depth = 10 | ||
308 | 418 | # store the path of the top level folder | 405 | # store the path of the top level folder |
309 | 419 | parent_path = os.path.join( | 406 | parent_path = os.path.join( |
310 | 420 | parent_metadata.get('path'), parent_metadata.get('filename')) | 407 | parent_metadata.get('path'), parent_metadata.get('filename')) |
311 | 421 | 408 | ||
312 | 409 | folder_depth = 10 | ||
313 | 422 | for level in range(folder_depth): | 410 | for level in range(folder_depth): |
314 | 423 | # construct the expected folder path | 411 | # construct the expected folder path |
315 | 424 | folder_name = 'folder_{}'.format(level + 1) | 412 | folder_name = 'folder_{}'.format(level + 1) |
316 | @@ -434,33 +422,25 @@ | |||
317 | 434 | parent_node_id = metadata.get('node_id') | 422 | parent_node_id = metadata.get('node_id') |
318 | 435 | 423 | ||
319 | 436 | def test_create_folder_with_existing_name(self): | 424 | def test_create_folder_with_existing_name(self): |
320 | 437 | # attempt to create 2 folders with the same name in root | ||
321 | 438 | root_node_id = self._get_root_node_id() | ||
322 | 439 | # create a new parent folder to hold the child items | ||
323 | 440 | metadata = self.cloudspaces_api_client.make_folder( | ||
324 | 441 | root_node_id, 'test_create_folder_with_existing_name') | ||
325 | 442 | parent_node_id = metadata.get('node_id') | ||
326 | 443 | folder_name = 'duplicate_folder' | 425 | folder_name = 'duplicate_folder' |
327 | 444 | self.cloudspaces_api_client.make_folder( | 426 | self.cloudspaces_api_client.make_folder( |
331 | 445 | parent_node_id, folder_name) | 427 | self.root_node_id, folder_name) |
332 | 446 | metadata = self.cloudspaces_api_client.make_folder( | 428 | folder_metadata = self.cloudspaces_api_client.make_folder( |
333 | 447 | parent_node_id, folder_name) | 429 | self.root_node_id, folder_name) |
334 | 448 | # now do a check the metadata of the dir listing | 430 | # now do a check the metadata of the dir listing |
338 | 449 | get_metadata = self.cloudspaces_api_client.get_metadata( | 431 | root_metadata = self.cloudspaces_api_client.get_metadata( |
339 | 450 | parent_node_id, list='true') | 432 | self.root_node_id, list='true') |
340 | 451 | child_nodes = get_metadata.get('contents') | 433 | child_nodes = root_metadata.get('contents') |
341 | 452 | # check only 1 folder listed and that the metadata matches | 434 | # check only 1 folder listed and that the metadata matches |
342 | 453 | self.assertEqual(len(child_nodes), 1) | 435 | self.assertEqual(len(child_nodes), 1) |
344 | 454 | self.assertEqual(metadata, child_nodes[0]) | 436 | self.assertEqual(folder_metadata, child_nodes[0]) |
345 | 455 | 437 | ||
346 | 456 | def test_new_file_version(self): | 438 | def test_new_file_version(self): |
347 | 457 | # A test to upload new content to a file and check it is updated | ||
348 | 458 | root_node_id = self._get_root_node_id() | ||
349 | 459 | test_file_name = 'file_version_test.txt' | 439 | test_file_name = 'file_version_test.txt' |
350 | 460 | content_v1 = 'This is file content version 1' | 440 | content_v1 = 'This is file content version 1' |
351 | 461 | content_v2 = 'This is the next file version, 2' | 441 | content_v2 = 'This is the next file version, 2' |
352 | 462 | metadata = self.cloudspaces_api_client.make_file( | 442 | metadata = self.cloudspaces_api_client.make_file( |
354 | 463 | root_node_id, test_file_name) | 443 | self.root_node_id, test_file_name) |
355 | 464 | file_node_id = metadata.get('node_id') | 444 | file_node_id = metadata.get('node_id') |
356 | 465 | # load version 1 of the file | 445 | # load version 1 of the file |
357 | 466 | metadata = self.cloudspaces_api_client.put_file( | 446 | metadata = self.cloudspaces_api_client.put_file( |
358 | @@ -468,7 +448,7 @@ | |||
359 | 468 | # check correct version | 448 | # check correct version |
360 | 469 | self.assertEqual(metadata.get('version'), 2) | 449 | self.assertEqual(metadata.get('version'), 2) |
361 | 470 | # Assert that the file has just been created. | 450 | # Assert that the file has just been created. |
363 | 471 | self._assert_datetime_limits( | 451 | self.assert_datetime_limits( |
364 | 472 | parser.parse(metadata.get('server_modified')), self.start_datetime, | 452 | parser.parse(metadata.get('server_modified')), self.start_datetime, |
365 | 473 | self._get_now_datetime()) | 453 | self._get_now_datetime()) |
366 | 474 | # load version 2 of the file | 454 | # load version 2 of the file |
367 | @@ -477,7 +457,7 @@ | |||
368 | 477 | # check correct version | 457 | # check correct version |
369 | 478 | self.assertEqual(metadata.get('version'), 3) | 458 | self.assertEqual(metadata.get('version'), 3) |
370 | 479 | # Assert that the file has just been updated. | 459 | # Assert that the file has just been updated. |
372 | 480 | self._assert_datetime_limits( | 460 | self.assert_datetime_limits( |
373 | 481 | parser.parse(metadata.get('server_modified')), self.start_datetime, | 461 | parser.parse(metadata.get('server_modified')), self.start_datetime, |
374 | 482 | self._get_now_datetime()) | 462 | self._get_now_datetime()) |
375 | 483 | # get the latest version and compare with expected content | 463 | # get the latest version and compare with expected content |