annotate sword2-libraries-pyinstaller-compatible/tests/http/test_sss.py @ 22:d1752c7031e4 timeouts tip

Updated .hgignore to ignore sword2_logging.conf and anything in .cache
author Steve Welburn <stephen.welburn@eecs.qmul.ac.uk>
date Tue, 22 Jan 2013 14:43:42 +0000
parents 8b69bba225c9
children
rev   line source
marco@16 1 from . import TestController
marco@16 2
marco@16 3 from sword2 import Connection, Entry
marco@16 4 from sword2.exceptions import PackagingFormatNotAvailable
marco@16 5 from sword2.compatible_libs import json
marco@16 6
marco@16 7 SSS_PY_URL="http://sword-app.svn.sourceforge.net/viewvc/sword-app/sss/trunk/sss.py?revision=HEAD"
marco@16 8 PORT_NUMBER="8081"
marco@16 9
marco@16 10 import subprocess, urllib, tempfile
marco@16 11 import os
marco@16 12
marco@16 13 import atexit
marco@16 14
marco@16 15 from time import sleep
marco@16 16
marco@16 17 long_service_doc = '''<?xml version="1.0" ?>
marco@16 18 <service xmlns:dcterms="http://purl.org/dc/terms/"
marco@16 19 xmlns:sword="http://purl.org/net/sword/terms/"
marco@16 20 xmlns:atom="http://www.w3.org/2005/Atom"
marco@16 21 xmlns="http://www.w3.org/2007/app">
marco@16 22
marco@16 23 <sword:version>2.0</sword:version>
marco@16 24 <sword:maxUploadSize>16777216</sword:maxUploadSize>
marco@16 25
marco@16 26 <workspace>
marco@16 27 <atom:title>Main Site</atom:title>
marco@16 28
marco@16 29 <collection href="http://swordapp.org/col-iri/43">
marco@16 30 <atom:title>Collection 43</atom:title>
marco@16 31 <accept>*/*</accept>
marco@16 32 <accept alternate="multipart-related">*/*</accept>
marco@16 33 <sword:collectionPolicy>Collection Policy</sword:collectionPolicy>
marco@16 34 <dcterms:abstract>Collection Description</dcterms:abstract>
marco@16 35 <sword:mediation>false</sword:mediation>
marco@16 36 <sword:treatment>Treatment description</sword:treatment>
marco@16 37 <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
marco@16 38 <sword:acceptPackaging>http://purl.org/net/sword/package/METSDSpaceSIP</sword:acceptPackaging>
marco@16 39 <sword:service>http://swordapp.org/sd-iri/e4</sword:service>
marco@16 40 </collection>
marco@16 41 </workspace>
marco@16 42 <workspace>
marco@16 43 <atom:title>Sub-site</atom:title>
marco@16 44
marco@16 45 <collection href="http://swordapp.org/col-iri/44">
marco@16 46 <atom:title>Collection 44</atom:title>
marco@16 47 <accept>*/*</accept>
marco@16 48 <accept alternate="multipart-related">*/*</accept>
marco@16 49 <sword:collectionPolicy>Collection Policy</sword:collectionPolicy>
marco@16 50 <dcterms:abstract>Collection Description</dcterms:abstract>
marco@16 51 <sword:mediation>true</sword:mediation>
marco@16 52 <sword:treatment>Treatment description</sword:treatment>
marco@16 53 <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
marco@16 54 <sword:service>http://swordapp.org/sd-iri/e5</sword:service>
marco@16 55 <sword:service>http://swordapp.org/sd-iri/e6</sword:service>
marco@16 56 <sword:service>http://swordapp.org/sd-iri/e7</sword:service>
marco@16 57 <sword:service>http://swordapp.org/sd-iri/e8</sword:service>
marco@16 58 </collection>
marco@16 59 <collection href="http://swordapp.org/col-iri/46">
marco@16 60 <atom:title>Collection 46</atom:title>
marco@16 61 <accept>application/zip</accept>
marco@16 62 <accept alternate="multipart-related">application/zip</accept>
marco@16 63 <sword:collectionPolicy>Only Theses</sword:collectionPolicy>
marco@16 64 <dcterms:abstract>Theses dropbox</dcterms:abstract>
marco@16 65 <sword:mediation>true</sword:mediation>
marco@16 66 <sword:treatment>Treatment description</sword:treatment>
marco@16 67 <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
marco@16 68 </collection>
marco@16 69 </workspace>
marco@16 70 </service>'''
marco@16 71
marco@16 72
marco@16 73 f, sss_path = tempfile.mkstemp(suffix=".py")
marco@16 74 os.close(f)
marco@16 75
marco@16 76 urllib.urlretrieve(SSS_PY_URL, sss_path)
marco@16 77 sss_pid = subprocess.Popen(['python', sss_path, PORT_NUMBER])
marco@16 78 sleep(1)
marco@16 79
marco@16 80 atexit.register(sss_pid.kill)
marco@16 81
marco@16 82 class TestConnection(TestController):
marco@16 83 def test_01_blank_init(self):
marco@16 84 conn = Connection("http://example.org/service-doc")
marco@16 85 assert conn.sd_iri == "http://example.org/service-doc"
marco@16 86 assert conn.sd == None
marco@16 87
marco@16 88 def test_02_init_then_load_from_string(self):
marco@16 89 conn = Connection("http://example.org/service-doc")
marco@16 90 assert conn.sd_iri == "http://example.org/service-doc"
marco@16 91 assert conn.sd == None
marco@16 92 conn.load_service_document(long_service_doc)
marco@16 93 assert conn.sd != None
marco@16 94 assert len(conn.sd.workspaces) == 2
marco@16 95 assert len(conn.workspaces) == 2
marco@16 96 assert conn.sd.workspaces[0][0] == "Main Site"
marco@16 97 assert conn.sd.workspaces[1][0] == "Sub-site"
marco@16 98 assert len(conn.sd.workspaces[1][1]) == 2
marco@16 99
marco@16 100 def test_03_init_then_load_from_string_t_history(self):
marco@16 101 conn = Connection("http://example.org/service-doc")
marco@16 102 assert conn.sd_iri == "http://example.org/service-doc"
marco@16 103 assert conn.sd == None
marco@16 104 conn.load_service_document(long_service_doc)
marco@16 105 # Should have made a two client 'transactions', the init and subsequent XML load
marco@16 106 assert len(conn.history) == 2
marco@16 107 assert conn.history[0]['type'] == "init"
marco@16 108 assert conn.history[1]['type'] == "SD Parse"
marco@16 109
marco@16 110 def test_04_init_from_sss_then_get_doc(self):
marco@16 111 conn = Connection("http://localhost:%s/sd-uri" % PORT_NUMBER, user_name="sword", user_pass="sword")
marco@16 112 assert conn.sd_iri == "http://localhost:%s/sd-uri" % PORT_NUMBER
marco@16 113 assert conn.sd == None # Not asked to get sd doc yet
marco@16 114 conn.get_service_document()
marco@16 115 assert conn.sd != None
marco@16 116 assert conn.sd.parsed == True
marco@16 117 assert conn.sd.valid == True
marco@16 118 assert len(conn.sd.workspaces) == 1
marco@16 119
marco@16 120 def test_05_init_from_sss(self):
marco@16 121 conn = Connection("http://localhost:%s/sd-uri" % PORT_NUMBER, user_name="sword", user_pass="sword", download_service_document=True)
marco@16 122 assert conn.sd_iri == "http://localhost:%s/sd-uri" % PORT_NUMBER
marco@16 123 assert conn.sd != None
marco@16 124 assert conn.sd.parsed == True
marco@16 125 assert conn.sd.valid == True
marco@16 126 assert len(conn.sd.workspaces) == 1
marco@16 127
marco@16 128 def test_06_Simple_POST_to_sss(self):
marco@16 129 conn = Connection("http://localhost:%s/sd-uri" % PORT_NUMBER, user_name="sword", user_pass="sword", download_service_document=True)
marco@16 130 resp = conn.create(payload = "Payload is just a load of text",
marco@16 131 mimetype = "text/plain",
marco@16 132 filename = "readme.txt",
marco@16 133 packaging = 'http://purl.org/net/sword/package/Binary',
marco@16 134 workspace = 'Main Site',
marco@16 135 collection = conn.sd.workspaces[0][1][0].title,
marco@16 136 in_progress=True,
marco@16 137 metadata_entry=None)
marco@16 138 assert resp.code == 201
marco@16 139
marco@16 140 def test_07_Multipart_POST_to_sss(self):
marco@16 141 conn = Connection("http://localhost:%s/sd-uri" % PORT_NUMBER, user_name="sword", user_pass="sword", download_service_document=True)
marco@16 142 e = Entry(title="Foo", id="asidjasidj", dcterms_appendix="blah blah", dcterms_title="foo bar")
marco@16 143 resp = conn.create(payload = "Multipart payload here",
marco@16 144 metadata_entry = e,
marco@16 145 mimetype = "text/plain",
marco@16 146 filename = "readme.txt",
marco@16 147 packaging = 'http://purl.org/net/sword/package/Binary',
marco@16 148 workspace='Main Site',
marco@16 149 collection=conn.sd.workspaces[0][1][0].title,
marco@16 150 in_progress=True)
marco@16 151 assert resp.code == 201
marco@16 152
marco@16 153
marco@16 154 def test_08_Simple_POST_to_sss_w_coliri(self):
marco@16 155 conn = Connection("http://localhost:%s/sd-uri" % PORT_NUMBER, user_name="sword", user_pass="sword", download_service_document=True)
marco@16 156 e = Entry(title="Foo", id="asidjasidj", dcterms_appendix="blah blah", dcterms_title="foo bar")
marco@16 157 resp = conn.create(payload = "Payload is just a load of text",
marco@16 158 mimetype = "text/plain",
marco@16 159 filename = "readme.txt",
marco@16 160 packaging = 'http://purl.org/net/sword/package/Binary',
marco@16 161 col_iri = conn.sd.workspaces[0][1][0].href,
marco@16 162 in_progress=True,
marco@16 163 metadata_entry=None)
marco@16 164 assert resp.code == 201
marco@16 165
marco@16 166 def test_09_Multipart_POST_to_sss_w_coliri(self):
marco@16 167 conn = Connection("http://localhost:%s/sd-uri" % PORT_NUMBER, user_name="sword", user_pass="sword", download_service_document=True)
marco@16 168 e = Entry(title="Foo", id="asidjasidj", dcterms_appendix="blah blah", dcterms_title="foo bar")
marco@16 169 e = Entry(title="Foo", id="asidjasidj", dcterms_appendix="blah blah", dcterms_title="foo bar")
marco@16 170 resp = conn.create(payload = "Multipart payload here",
marco@16 171 metadata_entry = e,
marco@16 172 mimetype = "text/plain",
marco@16 173 filename = "readme.txt",
marco@16 174 packaging = 'http://purl.org/net/sword/package/Binary',
marco@16 175 col_iri = conn.sd.workspaces[0][1][0].href,
marco@16 176 in_progress=True)
marco@16 177 assert resp != None
marco@16 178
marco@16 179
marco@16 180 def test_10_Multipart_POST_then_update_on_EM_IRI(self):
marco@16 181 conn = Connection("http://localhost:%s/sd-uri" % PORT_NUMBER, user_name="sword", user_pass="sword", download_service_document=True)
marco@16 182 e = Entry(title="Foo", id="asidjasidj", dcterms_appendix="blah blah", dcterms_title="foo bar")
marco@16 183 deposit_receipt = conn.create(payload = "Multipart_POST_then_update_on_EM_IRI",
marco@16 184 metadata_entry = e,
marco@16 185 mimetype = "text/plain",
marco@16 186 filename = "readme.txt",
marco@16 187 packaging = 'http://purl.org/net/sword/package/Binary',
marco@16 188 col_iri = conn.workspaces[0][1][0].href,
marco@16 189 in_progress=True)
marco@16 190 assert deposit_receipt.edit_media != None
marco@16 191 dr = conn.update(payload = "Multipart_POST_then_update_on_EM_IRI -- updated resource",
marco@16 192 mimetype = "text/plain",
marco@16 193 filename = "readthis.txt",
marco@16 194 packaging = "http://purl.org/net/sword/package/Binary",
marco@16 195 edit_media_iri = deposit_receipt.edit_media)
marco@16 196 assert dr.code == 204 # empty response
marco@16 197
marco@16 198 def test_11_Multipart_POST_then_update_metadata_on_Edit_IRI(self):
marco@16 199 conn = Connection("http://localhost:%s/sd-uri" % PORT_NUMBER, user_name="sword", user_pass="sword", download_service_document=True)
marco@16 200 e = Entry(title="Foo", id="asidjasidj", dcterms_appendix="blah blah", dcterms_title="foo bar")
marco@16 201 deposit_receipt = conn.create(payload = "Multipart_POST_then_update_on_EM_IRI",
marco@16 202 metadata_entry = e,
marco@16 203 mimetype = "text/plain",
marco@16 204 filename = "readme.txt",
marco@16 205 packaging = 'http://purl.org/net/sword/package/Binary',
marco@16 206 col_iri = conn.sd.workspaces[0][1][0].href,
marco@16 207 in_progress=True)
marco@16 208 assert deposit_receipt.code == 201 # new resource
marco@16 209
marco@16 210 e.add_fields(dcterms_newfield = "blah de blah")
marco@16 211 dr = conn.update_metadata_for_resource(edit_iri = deposit_receipt.edit,
marco@16 212 metadata_entry = e)
marco@16 213 assert (dr.code == 200 or dr.code == 204)
marco@16 214
marco@16 215
marco@16 216 def test_12_Metadata_POST_to_sss(self):
marco@16 217 conn = Connection("http://localhost:%s/sd-uri" % PORT_NUMBER, user_name="sword", user_pass="sword", download_service_document=True)
marco@16 218 e = Entry(title="Foo", id="asidjasidj", dcterms_appendix="blah blah", dcterms_title="foo bar")
marco@16 219 resp = conn.create(metadata_entry = e,
marco@16 220 workspace='Main Site',
marco@16 221 collection=conn.sd.workspaces[0][1][0].title,
marco@16 222 in_progress=True)
marco@16 223 assert resp != None
marco@16 224
marco@16 225
marco@16 226 def test_13_Metadata_POST_to_sss_altering_entry(self):
marco@16 227 conn = Connection("http://localhost:%s/sd-uri" % PORT_NUMBER, user_name="sword", user_pass="sword", download_service_document=True)
marco@16 228 e = Entry(title="Foo", id="asidjasidj", dcterms_appendix="blah blah", dcterms_title="foo bar")
marco@16 229 e.add_fields(dcterms_identifier="doi://somerubbish", dcterms_foo="blah blah")
marco@16 230 resp = conn.create(metadata_entry = e,
marco@16 231 workspace='Main Site',
marco@16 232 collection=conn.sd.workspaces[0][1][0].title,
marco@16 233 in_progress=False)
marco@16 234 assert resp != None
marco@16 235
marco@16 236 def test_14_Invalid_Packaging_cached_receipt(self):
marco@16 237 conn = Connection("http://localhost:%s/sd-uri" % PORT_NUMBER, user_name="sword", user_pass="sword", download_service_document=True, honour_receipts=True)
marco@16 238 col_iri = conn.sd.workspaces[0][1][0].href # pick the first collection
marco@16 239 dr = conn.create(payload = "Payload is just a load of text",
marco@16 240 mimetype = "text/plain",
marco@16 241 filename = "readme.txt",
marco@16 242 packaging = 'http://purl.org/net/sword/package/Binary',
marco@16 243 col_iri = col_iri,
marco@16 244 in_progress=True)
marco@16 245 # Now to GET that resource with invalid packaging
marco@16 246 try:
marco@16 247 content = conn.get_resource(dr.cont_iri, packaging="foofar")
marco@16 248 assert 1 == 0 # fail
marco@16 249 except PackagingFormatNotAvailable:
marco@16 250 # test the 'honour_receipts' flag and cached deposit
marco@16 251 pass
marco@16 252
marco@16 253 def test_15_Metadata_POST_to_sss_w_coliri(self):
marco@16 254 conn = Connection("http://localhost:%s/sd-uri" % PORT_NUMBER, user_name="sword", user_pass="sword", download_service_document=True)
marco@16 255 e = Entry(title="Foo", id="asidjasidj", dcterms_appendix="blah blah", dcterms_title="foo bar")
marco@16 256 dr = conn.create(metadata_entry = e,
marco@16 257 col_iri = conn.sd.workspaces[0][1][0].href,
marco@16 258 in_progress=True)
marco@16 259 assert dr.code == 201
marco@16 260
marco@16 261 def test_16_Invalid_Packaging_cached_receipt(self):
marco@16 262 conn = Connection("http://localhost:%s/sd-uri" % PORT_NUMBER, user_name="sword", user_pass="sword", download_service_document=True, honour_receipts=True)
marco@16 263 col_iri = conn.sd.workspaces[0][1][0].href # pick the first collection
marco@16 264 dr = conn.create(payload = "Payload is just a load of text",
marco@16 265 mimetype = "text/plain",
marco@16 266 filename = "readme.txt",
marco@16 267 packaging = 'http://purl.org/net/sword/package/Binary',
marco@16 268 col_iri = col_iri,
marco@16 269 in_progress=True,
marco@16 270 metadata_entry=None)
marco@16 271 # Now to GET that resource with invalid packaging
marco@16 272 try:
marco@16 273 content = conn.get_resource(dr.cont_iri, packaging="foofar")
marco@16 274 assert 1 == 0 # fail
marco@16 275 except PackagingFormatNotAvailable:
marco@16 276 # test the 'honour_receipts' flag and cached deposit
marco@16 277 pass
marco@16 278
marco@16 279 def test_17_Simple_POST_and_GET(self):
marco@16 280 conn = Connection("http://localhost:%s/sd-uri" % PORT_NUMBER, user_name="sword", user_pass="sword", download_service_document=True)
marco@16 281 col_iri = conn.sd.workspaces[0][1][0].href # pick the first collection
marco@16 282 dr = conn.create(payload = "Simple_POST_and_GET",
marco@16 283 mimetype = "text/plain",
marco@16 284 filename = "readme.txt",
marco@16 285 packaging = 'http://purl.org/net/sword/package/Binary',
marco@16 286 col_iri = col_iri,
marco@16 287 in_progress=True,
marco@16 288 metadata_entry=None)
marco@16 289 assert dr.code == 201
marco@16 290 # Now to GET that resource with no prescribed for packaging
marco@16 291 content_object = conn.get_resource(dr.cont_iri)
marco@16 292 # Can't guarantee that sss.py won't mangle submissions, so can't validate response at this moment
marco@16 293 assert content_object != None
marco@16 294
marco@16 295
marco@16 296 def test_18_Metadata_POST_to_se_iri(self):
marco@16 297 conn = Connection("http://localhost:%s/sd-uri" % PORT_NUMBER, user_name="sword", user_pass="sword", download_service_document=True)
marco@16 298 e = Entry(title="Foo", id="asidjasidj", dcterms_appendix="blah blah", dcterms_title="foo bar")
marco@16 299 deposit_receipt = conn.create(payload = "Multipart_POST_then_update_on_EM_IRI",
marco@16 300 metadata_entry = e,
marco@16 301 mimetype = "text/plain",
marco@16 302 filename = "readme.txt",
marco@16 303 packaging = 'http://purl.org/net/sword/package/Binary',
marco@16 304 col_iri = conn.sd.workspaces[0][1][0].href,
marco@16 305 in_progress=True)
marco@16 306
marco@16 307 assert deposit_receipt.se_iri != None
marco@16 308 e.add_fields(dcterms_identifier="doi://somerubbish", dcterms_foo="blah blah")
marco@16 309 dr = conn.append(se_iri = deposit_receipt.se_iri,
marco@16 310 metadata_entry = e,
marco@16 311 in_progress=False)
marco@16 312 assert dr.code == 201
marco@16 313
marco@16 314 def test_19_File_POST_to_se_iri(self):
marco@16 315 conn = Connection("http://localhost:%s/sd-uri" % PORT_NUMBER, user_name="sword", user_pass="sword", download_service_document=True)
marco@16 316 e = Entry(title="Foo", id="asidjasidj", dcterms_appendix="blah blah", dcterms_title="foo bar")
marco@16 317 deposit_receipt = conn.create(payload = "Multipart_POST_then_update_on_EM_IRI",
marco@16 318 metadata_entry = e,
marco@16 319 mimetype = "text/plain",
marco@16 320 filename = "readme.txt",
marco@16 321 packaging = 'http://purl.org/net/sword/package/Binary',
marco@16 322 col_iri = conn.sd.workspaces[0][1][0].href,
marco@16 323 in_progress=True)
marco@16 324
marco@16 325 assert deposit_receipt.se_iri != None
marco@16 326 dr = conn.append(se_iri = deposit_receipt.se_iri,
marco@16 327 payload = "Multipart_POST_then_appending_file_on_SE_IRI -- updated resource",
marco@16 328 mimetype = "text/plain",
marco@16 329 filename = "readthisextrafile.txt",
marco@16 330 packaging = "http://purl.org/net/sword/package/Binary")
marco@16 331 assert dr.code == 201
marco@16 332
marco@16 333 def test_20_Multipart_POST_to_se_iri(self):
marco@16 334 conn = Connection("http://localhost:%s/sd-uri" % PORT_NUMBER, user_name="sword", user_pass="sword", download_service_document=True)
marco@16 335 e = Entry(title="Foo", id="asidjasidj", dcterms_appendix="blah blah", dcterms_title="foo bar")
marco@16 336 deposit_receipt = conn.create(payload = "Multipart_POST_then_update_on_EM_IRI",
marco@16 337 metadata_entry = e,
marco@16 338 mimetype = "text/plain",
marco@16 339 filename = "readme.txt",
marco@16 340 packaging = 'http://purl.org/net/sword/package/Binary',
marco@16 341 col_iri = conn.sd.workspaces[0][1][0].href,
marco@16 342 in_progress=True)
marco@16 343
marco@16 344 assert deposit_receipt.se_iri != None
marco@16 345 e.add_fields(dcterms_identifier="doi://multipart_update_to_SE_IRI")
marco@16 346 dr = conn.append(se_iri = deposit_receipt.se_iri,
marco@16 347 payload = "Multipart_POST_then_appending_file_on_SE_IRI -- updated resource",
marco@16 348 mimetype = "text/plain",
marco@16 349 filename = "readthisextrafile.txt",
marco@16 350 packaging = "http://purl.org/net/sword/package/Binary",
marco@16 351 metadata_entry = e)
marco@16 352 print dr.code
marco@16 353 assert dr.code == 201
marco@16 354
marco@16 355
marco@16 356 def test_21_Create_deposit_and_delete_content(self):
marco@16 357 conn = Connection("http://localhost:%s/sd-uri" % PORT_NUMBER, user_name="sword", user_pass="sword", download_service_document=True)
marco@16 358 e = Entry(title="Foo", id="asidjasidj", dcterms_appendix="blah blah", dcterms_title="foo bar")
marco@16 359 deposit_receipt = conn.create(payload = "Multipart_POST_then_update_on_EM_IRI",
marco@16 360 metadata_entry = e,
marco@16 361 mimetype = "text/plain",
marco@16 362 filename = "readme.txt",
marco@16 363 packaging = 'http://purl.org/net/sword/package/Binary',
marco@16 364 col_iri = conn.sd.workspaces[0][1][0].href,
marco@16 365 in_progress=True)
marco@16 366 assert deposit_receipt.edit_media != None
marco@16 367 dr = conn.delete(resource_iri = deposit_receipt.edit_media)
marco@16 368 assert dr.code == 204 or dr.code == 200
marco@16 369
marco@16 370
marco@16 371 def test_22_Create_deposit_and_delete_deposit(self):
marco@16 372 conn = Connection("http://localhost:%s/sd-uri" % PORT_NUMBER, user_name="sword", user_pass="sword", download_service_document=True)
marco@16 373 e = Entry(title="Foo", id="asidjasidj", dcterms_appendix="blah blah", dcterms_title="foo bar")
marco@16 374 deposit_receipt = conn.create(payload = "Multipart_POST_then_update_on_EM_IRI",
marco@16 375 metadata_entry = e,
marco@16 376 mimetype = "text/plain",
marco@16 377 filename = "readme.txt",
marco@16 378 packaging = 'http://purl.org/net/sword/package/Binary',
marco@16 379 col_iri = conn.sd.workspaces[0][1][0].href,
marco@16 380 in_progress=True)
marco@16 381 assert deposit_receipt.edit != None
marco@16 382 dr = conn.delete(resource_iri = deposit_receipt.edit)
marco@16 383 assert dr.code == 204 or dr.code == 200
marco@16 384
marco@16 385
marco@16 386 def test_23_Finish_in_progress_deposit(self):
marco@16 387 conn = Connection("http://localhost:%s/sd-uri" % PORT_NUMBER, user_name="sword", user_pass="sword", download_service_document=True)
marco@16 388 e = Entry(title="Foo", id="asidjasidj", dcterms_appendix="blah blah", dcterms_title="foo bar")
marco@16 389 deposit_receipt = conn.create(payload = "Multipart_POST_then_update_on_EM_IRI",
marco@16 390 metadata_entry = e,
marco@16 391 mimetype = "text/plain",
marco@16 392 filename = "readme.txt",
marco@16 393 packaging = 'http://purl.org/net/sword/package/Binary',
marco@16 394 col_iri = conn.sd.workspaces[0][1][0].href,
marco@16 395 in_progress=True)
marco@16 396 assert deposit_receipt.edit != None
marco@16 397 dr = conn.complete_deposit(se_iri = deposit_receipt.se_iri)
marco@16 398 print "This will fail until the sss.py SWORD2 server responds properly, rather than with code 201"
marco@16 399 assert dr.code == 200
marco@16 400
marco@16 401 def test_24_get_sword_statement(self):
marco@16 402 conn = Connection("http://localhost:%s/sd-uri" % PORT_NUMBER, user_name="sword", user_pass="sword", download_service_document=True)
marco@16 403 e = Entry(title="Foo", id="asidjasidj", dcterms_appendix="blah blah", dcterms_title="foo bar")
marco@16 404 deposit_receipt = conn.create(payload = "Multipart_POST_then_update_on_EM_IRI",
marco@16 405 metadata_entry = e,
marco@16 406 mimetype = "text/plain",
marco@16 407 filename = "readme.txt",
marco@16 408 packaging = 'http://purl.org/net/sword/package/Binary',
marco@16 409 col_iri = conn.sd.workspaces[0][1][0].href,
marco@16 410 in_progress=True)
marco@16 411 ss_iri = None
marco@16 412 for item_dict in deposit_receipt.links['http://purl.org/net/sword/terms/statement']:
marco@16 413 if item_dict.has_key('type') and item_dict.get('type', None) == "application/atom+xml;type=feed":
marco@16 414 ss_iri = item_dict.get('href')
marco@16 415 assert ss_iri != None
marco@16 416 ss = conn.get_atom_sword_statement(ss_iri)
marco@16 417 assert ss != None
marco@16 418 assert ss.entries[0].metadata.get('sword_depositedBy') == 'sword'