annotate sword2-libraries-pyinstaller-compatible/tests/functional/test_service_document.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 SDCollection, ServiceDocument
marco@16 4 from sword2.compatible_libs import json
marco@16 5
marco@16 6 class TestSDCollection(TestController):
marco@16 7 def test_01_blank_init(self):
marco@16 8 c = SDCollection()
marco@16 9 assert c.title == None
marco@16 10 assert c.href == None
marco@16 11
marco@16 12 def test_02_init(self):
marco@16 13 c = SDCollection(title="My test collection", href="http://example.org")
marco@16 14 assert c.title == "My test collection"
marco@16 15 assert c.href == "http://example.org"
marco@16 16
marco@16 17 def test_03_init_and_update(self):
marco@16 18 c = SDCollection(title="My test collection", href="http://example.org")
marco@16 19 assert c.title == "My test collection"
marco@16 20 assert c.href == "http://example.org"
marco@16 21 c.title = "Altered Title"
marco@16 22 assert c.title == "Altered Title"
marco@16 23
marco@16 24 def test_04_init_and_update_json_test(self):
marco@16 25 c = SDCollection(title="My test collection", href="http://example.org")
marco@16 26 assert c.title == "My test collection"
marco@16 27 assert c.href == "http://example.org"
marco@16 28 c.title = "Altered Title"
marco@16 29 assert c.title == "Altered Title"
marco@16 30 j = c.to_json()
marco@16 31 j_data = json.loads(j)
marco@16 32 assert j_data['title'] == "Altered Title"
marco@16 33 assert j_data['href'] == "http://example.org"
marco@16 34 assert j_data['accept'] == []
marco@16 35
marco@16 36 short_service_doc = '''<?xml version="1.0" ?>
marco@16 37 <service xmlns:dcterms="http://purl.org/dc/terms/"
marco@16 38 xmlns:sword="http://purl.org/net/sword/terms/"
marco@16 39 xmlns:atom="http://www.w3.org/2005/Atom"
marco@16 40 xmlns="http://www.w3.org/2007/app">
marco@16 41
marco@16 42 <sword:version>2.0</sword:version>
marco@16 43 <sword:maxUploadSize>16777216</sword:maxUploadSize>
marco@16 44
marco@16 45 <workspace>
marco@16 46 <atom:title>Main Site</atom:title>
marco@16 47
marco@16 48 <collection href="http://swordapp.org/col-iri/43">
marco@16 49 <atom:title>Collection 43</atom:title>
marco@16 50 <accept>*/*</accept>
marco@16 51 <accept alternate="multipart-related">*/*</accept>
marco@16 52 <sword:collectionPolicy>Collection Policy</sword:collectionPolicy>
marco@16 53 <dcterms:abstract>Collection Description</dcterms:abstract>
marco@16 54 <sword:mediation>false</sword:mediation>
marco@16 55 <sword:treatment>Treatment description</sword:treatment>
marco@16 56 <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
marco@16 57 <sword:acceptPackaging>http://purl.org/net/sword/package/METSDSpaceSIP</sword:acceptPackaging>
marco@16 58 <sword:service>http://swordapp.org/sd-iri/e4</sword:service>
marco@16 59 </collection>
marco@16 60 </workspace>
marco@16 61 </service>'''
marco@16 62
marco@16 63 long_service_doc = '''<?xml version="1.0" ?>
marco@16 64 <service xmlns:dcterms="http://purl.org/dc/terms/"
marco@16 65 xmlns:sword="http://purl.org/net/sword/terms/"
marco@16 66 xmlns:atom="http://www.w3.org/2005/Atom"
marco@16 67 xmlns="http://www.w3.org/2007/app">
marco@16 68
marco@16 69 <sword:version>2.0</sword:version>
marco@16 70 <sword:maxUploadSize>16777216</sword:maxUploadSize>
marco@16 71
marco@16 72 <workspace>
marco@16 73 <atom:title>Main Site</atom:title>
marco@16 74
marco@16 75 <collection href="http://swordapp.org/col-iri/43">
marco@16 76 <atom:title>Collection 43</atom:title>
marco@16 77 <accept>*/*</accept>
marco@16 78 <accept alternate="multipart-related">*/*</accept>
marco@16 79 <sword:collectionPolicy>Collection Policy</sword:collectionPolicy>
marco@16 80 <dcterms:abstract>Collection Description</dcterms:abstract>
marco@16 81 <sword:mediation>false</sword:mediation>
marco@16 82 <sword:treatment>Treatment description</sword:treatment>
marco@16 83 <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
marco@16 84 <sword:acceptPackaging>http://purl.org/net/sword/package/METSDSpaceSIP</sword:acceptPackaging>
marco@16 85 <sword:service>http://swordapp.org/sd-iri/e4</sword:service>
marco@16 86 </collection>
marco@16 87 </workspace>
marco@16 88 <workspace>
marco@16 89 <atom:title>Sub-site</atom:title>
marco@16 90
marco@16 91 <collection href="http://swordapp.org/col-iri/44">
marco@16 92 <atom:title>Collection 44</atom:title>
marco@16 93 <accept>*/*</accept>
marco@16 94 <accept alternate="multipart-related">*/*</accept>
marco@16 95 <sword:collectionPolicy>Collection Policy</sword:collectionPolicy>
marco@16 96 <dcterms:abstract>Collection Description</dcterms:abstract>
marco@16 97 <sword:mediation>true</sword:mediation>
marco@16 98 <sword:treatment>Treatment description</sword:treatment>
marco@16 99 <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
marco@16 100 <sword:service>http://swordapp.org/sd-iri/e5</sword:service>
marco@16 101 <sword:service>http://swordapp.org/sd-iri/e6</sword:service>
marco@16 102 <sword:service>http://swordapp.org/sd-iri/e7</sword:service>
marco@16 103 <sword:service>http://swordapp.org/sd-iri/e8</sword:service>
marco@16 104 </collection>
marco@16 105 <collection href="http://swordapp.org/col-iri/46">
marco@16 106 <atom:title>Collection 46</atom:title>
marco@16 107 <accept>application/zip</accept>
marco@16 108 <accept alternate="multipart-related">application/zip</accept>
marco@16 109 <sword:collectionPolicy>Only Theses</sword:collectionPolicy>
marco@16 110 <dcterms:abstract>Theses dropbox</dcterms:abstract>
marco@16 111 <sword:mediation>true</sword:mediation>
marco@16 112 <sword:treatment>Treatment description</sword:treatment>
marco@16 113 <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
marco@16 114 </collection>
marco@16 115 </workspace>
marco@16 116 </service>'''
marco@16 117
marco@16 118 class TestServiceDocument(TestController):
marco@16 119 def test_01_blank_init(self):
marco@16 120 s = ServiceDocument()
marco@16 121 assert s.version == None
marco@16 122 assert s.parsed == False
marco@16 123 assert s.valid == False # Invalid document as should be blank
marco@16 124
marco@16 125 def test_02_init_and_load_simple(self):
marco@16 126 s = ServiceDocument()
marco@16 127 s.load_document(short_service_doc)
marco@16 128 assert s.version == "2.0"
marco@16 129 assert s.valid == True
marco@16 130 assert s.maxUploadSize == 16777216 # check int()
marco@16 131
marco@16 132 def test_03_load_on_init(self):
marco@16 133 s = ServiceDocument(xml_response = short_service_doc)
marco@16 134 assert s.version == "2.0"
marco@16 135 assert s.valid == True
marco@16 136 assert s.maxUploadSize == 16777216 # check int()
marco@16 137
marco@16 138 def test_04_init_and_load_long(self):
marco@16 139 s = ServiceDocument()
marco@16 140 s.load_document(long_service_doc)
marco@16 141 assert s.version == "2.0"
marco@16 142 assert s.valid == True
marco@16 143 assert s.maxUploadSize == 16777216 # check int()
marco@16 144
marco@16 145 def test_05_long_load_on_init(self):
marco@16 146 s = ServiceDocument(xml_response = long_service_doc)
marco@16 147 assert s.version == "2.0"
marco@16 148 assert s.valid == True
marco@16 149 assert s.maxUploadSize == 16777216 # check int()
marco@16 150
marco@16 151 def test_06_workspaces_short(self):
marco@16 152 s = ServiceDocument(xml_response = short_service_doc)
marco@16 153 assert len(s.workspaces) == 1
marco@16 154 assert s.workspaces[0][0] == "Main Site"
marco@16 155 assert len(s.workspaces[0][1]) == 1
marco@16 156
marco@16 157 def test_07_workspaces_long(self):
marco@16 158 s = ServiceDocument(xml_response = long_service_doc)
marco@16 159 assert len(s.workspaces) == 2
marco@16 160 assert s.workspaces[0][0] == "Main Site"
marco@16 161 assert s.workspaces[1][0] == "Sub-site"
marco@16 162 assert len(s.workspaces[1][1]) == 2
marco@16 163
marco@16 164 def test_08_collection_information_long(self):
marco@16 165 s = ServiceDocument(xml_response = long_service_doc)
marco@16 166 sub_workspace = s.workspaces[1]
marco@16 167 assert sub_workspace[0] == "Sub-site"
marco@16 168 sub_collections = sub_workspace[1]
marco@16 169 for c in sub_collections:
marco@16 170 if c.title == "Collection 44":
marco@16 171 assert c.href == "http://swordapp.org/col-iri/44"
marco@16 172 assert len(c.service) == 4
marco@16 173 assert c.mediation == True
marco@16 174 if c.href == "http://swordapp.org/col-iri/46":
marco@16 175 assert c.title == "Collection 46"
marco@16 176 assert c.service == None
marco@16 177 assert c.collectionPolicy == "Only Theses"
marco@16 178
marco@16 179 def test_09_accept_information_long(self):
marco@16 180 s = ServiceDocument(xml_response = long_service_doc)
marco@16 181 sub_workspace = s.workspaces[1]
marco@16 182 assert sub_workspace[0] == "Sub-site"
marco@16 183 sub_collections = sub_workspace[1]
marco@16 184 for c in sub_collections:
marco@16 185 if c.title == "Collection 44":
marco@16 186 assert "*/*" in c.accept
marco@16 187 if c.href == "http://swordapp.org/col-iri/46":
marco@16 188 assert "application/zip" in c.accept
marco@16 189 assert "http://purl.org/net/sword/package/SimpleZip" in c.acceptPackaging
marco@16 190