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