Mercurial > hg > sworduploader
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 |