Mercurial > hg > sworduploader
diff sword2-libraries-pyinstaller-compatible/tests/functional/test_service_document.py @ 16:8b69bba225c9
Added pyinstaller compatible sword2 python libraries
author | Marco Fabiani <marco.fabiani@eecs.qmul.ac.uk> |
---|---|
date | Tue, 29 May 2012 12:42:49 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sword2-libraries-pyinstaller-compatible/tests/functional/test_service_document.py Tue May 29 12:42:49 2012 +0100 @@ -0,0 +1,190 @@ +from . import TestController + +from sword2 import SDCollection, ServiceDocument +from sword2.compatible_libs import json + +class TestSDCollection(TestController): + def test_01_blank_init(self): + c = SDCollection() + assert c.title == None + assert c.href == None + + def test_02_init(self): + c = SDCollection(title="My test collection", href="http://example.org") + assert c.title == "My test collection" + assert c.href == "http://example.org" + + def test_03_init_and_update(self): + c = SDCollection(title="My test collection", href="http://example.org") + assert c.title == "My test collection" + assert c.href == "http://example.org" + c.title = "Altered Title" + assert c.title == "Altered Title" + + def test_04_init_and_update_json_test(self): + c = SDCollection(title="My test collection", href="http://example.org") + assert c.title == "My test collection" + assert c.href == "http://example.org" + c.title = "Altered Title" + assert c.title == "Altered Title" + j = c.to_json() + j_data = json.loads(j) + assert j_data['title'] == "Altered Title" + assert j_data['href'] == "http://example.org" + assert j_data['accept'] == [] + +short_service_doc = '''<?xml version="1.0" ?> +<service xmlns:dcterms="http://purl.org/dc/terms/" + xmlns:sword="http://purl.org/net/sword/terms/" + xmlns:atom="http://www.w3.org/2005/Atom" + xmlns="http://www.w3.org/2007/app"> + + <sword:version>2.0</sword:version> + <sword:maxUploadSize>16777216</sword:maxUploadSize> + + <workspace> + <atom:title>Main Site</atom:title> + + <collection href="http://swordapp.org/col-iri/43"> + <atom:title>Collection 43</atom:title> + <accept>*/*</accept> + <accept alternate="multipart-related">*/*</accept> + <sword:collectionPolicy>Collection Policy</sword:collectionPolicy> + <dcterms:abstract>Collection Description</dcterms:abstract> + <sword:mediation>false</sword:mediation> + <sword:treatment>Treatment description</sword:treatment> + <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging> + <sword:acceptPackaging>http://purl.org/net/sword/package/METSDSpaceSIP</sword:acceptPackaging> + <sword:service>http://swordapp.org/sd-iri/e4</sword:service> + </collection> + </workspace> +</service>''' + +long_service_doc = '''<?xml version="1.0" ?> +<service xmlns:dcterms="http://purl.org/dc/terms/" + xmlns:sword="http://purl.org/net/sword/terms/" + xmlns:atom="http://www.w3.org/2005/Atom" + xmlns="http://www.w3.org/2007/app"> + + <sword:version>2.0</sword:version> + <sword:maxUploadSize>16777216</sword:maxUploadSize> + + <workspace> + <atom:title>Main Site</atom:title> + + <collection href="http://swordapp.org/col-iri/43"> + <atom:title>Collection 43</atom:title> + <accept>*/*</accept> + <accept alternate="multipart-related">*/*</accept> + <sword:collectionPolicy>Collection Policy</sword:collectionPolicy> + <dcterms:abstract>Collection Description</dcterms:abstract> + <sword:mediation>false</sword:mediation> + <sword:treatment>Treatment description</sword:treatment> + <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging> + <sword:acceptPackaging>http://purl.org/net/sword/package/METSDSpaceSIP</sword:acceptPackaging> + <sword:service>http://swordapp.org/sd-iri/e4</sword:service> + </collection> + </workspace> + <workspace> + <atom:title>Sub-site</atom:title> + + <collection href="http://swordapp.org/col-iri/44"> + <atom:title>Collection 44</atom:title> + <accept>*/*</accept> + <accept alternate="multipart-related">*/*</accept> + <sword:collectionPolicy>Collection Policy</sword:collectionPolicy> + <dcterms:abstract>Collection Description</dcterms:abstract> + <sword:mediation>true</sword:mediation> + <sword:treatment>Treatment description</sword:treatment> + <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging> + <sword:service>http://swordapp.org/sd-iri/e5</sword:service> + <sword:service>http://swordapp.org/sd-iri/e6</sword:service> + <sword:service>http://swordapp.org/sd-iri/e7</sword:service> + <sword:service>http://swordapp.org/sd-iri/e8</sword:service> + </collection> + <collection href="http://swordapp.org/col-iri/46"> + <atom:title>Collection 46</atom:title> + <accept>application/zip</accept> + <accept alternate="multipart-related">application/zip</accept> + <sword:collectionPolicy>Only Theses</sword:collectionPolicy> + <dcterms:abstract>Theses dropbox</dcterms:abstract> + <sword:mediation>true</sword:mediation> + <sword:treatment>Treatment description</sword:treatment> + <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging> + </collection> + </workspace> +</service>''' + +class TestServiceDocument(TestController): + def test_01_blank_init(self): + s = ServiceDocument() + assert s.version == None + assert s.parsed == False + assert s.valid == False # Invalid document as should be blank + + def test_02_init_and_load_simple(self): + s = ServiceDocument() + s.load_document(short_service_doc) + assert s.version == "2.0" + assert s.valid == True + assert s.maxUploadSize == 16777216 # check int() + + def test_03_load_on_init(self): + s = ServiceDocument(xml_response = short_service_doc) + assert s.version == "2.0" + assert s.valid == True + assert s.maxUploadSize == 16777216 # check int() + + def test_04_init_and_load_long(self): + s = ServiceDocument() + s.load_document(long_service_doc) + assert s.version == "2.0" + assert s.valid == True + assert s.maxUploadSize == 16777216 # check int() + + def test_05_long_load_on_init(self): + s = ServiceDocument(xml_response = long_service_doc) + assert s.version == "2.0" + assert s.valid == True + assert s.maxUploadSize == 16777216 # check int() + + def test_06_workspaces_short(self): + s = ServiceDocument(xml_response = short_service_doc) + assert len(s.workspaces) == 1 + assert s.workspaces[0][0] == "Main Site" + assert len(s.workspaces[0][1]) == 1 + + def test_07_workspaces_long(self): + s = ServiceDocument(xml_response = long_service_doc) + assert len(s.workspaces) == 2 + assert s.workspaces[0][0] == "Main Site" + assert s.workspaces[1][0] == "Sub-site" + assert len(s.workspaces[1][1]) == 2 + + def test_08_collection_information_long(self): + s = ServiceDocument(xml_response = long_service_doc) + sub_workspace = s.workspaces[1] + assert sub_workspace[0] == "Sub-site" + sub_collections = sub_workspace[1] + for c in sub_collections: + if c.title == "Collection 44": + assert c.href == "http://swordapp.org/col-iri/44" + assert len(c.service) == 4 + assert c.mediation == True + if c.href == "http://swordapp.org/col-iri/46": + assert c.title == "Collection 46" + assert c.service == None + assert c.collectionPolicy == "Only Theses" + + def test_09_accept_information_long(self): + s = ServiceDocument(xml_response = long_service_doc) + sub_workspace = s.workspaces[1] + assert sub_workspace[0] == "Sub-site" + sub_collections = sub_workspace[1] + for c in sub_collections: + if c.title == "Collection 44": + assert "*/*" in c.accept + if c.href == "http://swordapp.org/col-iri/46": + assert "application/zip" in c.accept + assert "http://purl.org/net/sword/package/SimpleZip" in c.acceptPackaging +