1 /*
2 * Copyright (c) 2003
3 * Information Desire GmbH
4 * All rights reserved.
5 */
6 package com.infodesire.infobit;
7
8 import junit.framework.TestCase;
9 import junit.framework.TestSuite;
10
11 import java.io.ByteArrayInputStream;
12 import java.io.ByteArrayOutputStream;
13 import java.io.InputStream;
14
15 import java.util.ArrayList;
16 import java.util.Arrays;
17 import java.util.Collection;
18 import java.util.HashSet;
19 import java.util.List;
20 import java.util.Collections;
21
22 import com.infodesire.infobit.data.BinaryContent;
23 import com.infodesire.infobit.data.Infobit;
24 import com.infodesire.infobit.data.Acl;
25 import com.infodesire.infobit.data.Version;
26 import com.infodesire.infobit.data.Content;
27 import com.infodesire.infobit.data.TextContent;
28 /***
29 * test case for infobit capabilities
30 *
31 * @author konstantin
32 * @created July 29, 2003
33 * @version $Revision: 1.18 $
34 */
35 public class InfobitTest extends InfobitTestBase {
36
37 Acl _defaultAcl;
38
39
40 /***
41 * Constructor for the InfobitTest object
42 *
43 * @param name Description of Parameter
44 */
45 public InfobitTest(String name) {
46 super(name);
47 }
48
49
50 /***
51 * The JUnit setup method
52 *
53 * @exception Exception Description of Exception
54 */
55 public void setUp() throws Exception {
56 super.setUp();
57 InfobitPool pool = _configuration.getPool("superuser_pool");
58 _defaultAcl = pool.getAclManager().createAcl("default");
59
60 }
61
62
63 /***
64 * test creation and removal of infobits
65 *
66 * @exception Exception Description of Exception
67 */
68 public void xxtestInfobitCreation() throws Exception {
69
70 InfobitPool pool = _configuration.getPool("pool_one");
71 InfobitManager manager = pool.getInfobitManager();
72 String iid = "DE1213434545677";
73 Infobit ibit = manager.createInfobit(iid, _defaultAcl);
74 // need to flush infobit pool before artifically raising exception
75 pool.flush();
76 // assertTrue(pool.hasInfobit(iid));
77 boolean bombed = false;
78 try {
79 manager.createInfobit(iid, _defaultAcl);
80 } catch (InfobitException ex) {
81 bombed = true;
82 }
83 assertTrue("allowed creation of infobit with the same infobit ID", bombed);
84
85 Infobit ibit2 = manager.getInfobit(iid);
86 assertEquals(ibit, ibit2);
87 manager.removeInfobit(iid);
88 assertFalse(manager.hasInfobit(iid));
89 assertNull(manager.getInfobit(iid));
90
91 }
92
93
94 /***
95 * test version creation and manipulation
96 *
97 * @exception Exception Description of Exception
98 */
99 public void xxtestVersonCreationAndManipulation() throws Exception {
100 InfobitPool pool = _configuration.getPool("pool_one");
101 InfobitManager manager = pool.getInfobitManager();
102 String iid = "DE1213434545677";
103 Infobit ibit = manager.createInfobit(iid, _defaultAcl);
104
105 assertTrue(ibit.getVersions().isEmpty());
106 assertNull(ibit.getActualVersion());
107
108 manager.createText(ibit, "blurge", "", new HashSet());
109 assertEquals(ibit.getVersions().size(), 1);
110 Version ver = (Version) ibit.getVersions().iterator().next();
111 assertEquals(ver.getName(), "blurge");
112 assertEquals(ver.getAuthor(), "foo");
113 assertNull(ibit.getActualVersion());
114
115 manager.setActualVersion(ibit, ver);
116
117 assertEquals(ibit.getActualVersion(), ver);
118 }
119
120
121 /***
122 * Tests binary content creation.
123 *
124 * @exception Exception Description of Exception
125 */
126 public void testBinaryContentCreation() throws Exception {
127 InfobitPool pool = _configuration.getPool("pool_one");
128 InfobitManager manager = pool.getInfobitManager();
129 String iid = "DE1213434545677";
130 Infobit ibit = manager.createInfobit(iid, _defaultAcl);
131
132 assertTrue(ibit.getVersions().isEmpty());
133
134 InputStream is = getClass().getClassLoader().getResource("/maven-propaganda.png").openStream();
135 ByteArrayOutputStream bos = new ByteArrayOutputStream();
136 byte[] buf = new byte[512];
137 int n;
138 while ((n = is.read(buf)) > -1) {
139 bos.write(buf, 0, n);
140 }
141
142 byte[] data = bos.toByteArray();
143 // assertEquals(data[0], 0x50);
144 // assertEquals(data[1], 0x89);
145 // assertEquals(data[2], 0x47);
146 // assertEquals(data[3], 0x4e);
147 //assertEquals(data[4], 0x0a);
148 //assertEquals(data[5], 0x0d);
149 final String mimeType = "application/octet";
150 InputStream stream = new ByteArrayInputStream(data);
151 manager.createBinary(ibit, "image_01", stream, mimeType,
152 Collections.EMPTY_SET);
153
154 pool.flush();
155
156 ibit = manager.getInfobit(iid);
157
158 List vers = (List) ibit.getVersions();
159 assertTrue(vers.size() == 1);
160 assertNull(ibit.getActualVersion());
161
162 // assert single version has data as content
163 Version version = (Version) vers.get(0);
164 BinaryContent binary = (BinaryContent) version.getContent();
165 InputStream content = manager.getContent(binary);
166 byte[] read = new byte[data.length];
167 int next = 0;
168 while (next < data.length) {
169 n = content.read(read, next, data.length - next);
170 assertTrue(n > 0);
171 next += n;
172 }
173 assertTrue(content.read() == -1);
174 assertTrue(Arrays.equals(data, read));
175 content.close();
176 }
177
178
179 /***
180 * A unit test for JUnit
181 *
182 * @exception Exception Description of Exception
183 */
184 public void testAttributeSetting() throws Exception {
185 InfobitPool pool = _configuration.getPool("pool_one");
186 InfobitManager manager = pool.getInfobitManager();
187 String iid = "DE1213434545677";
188 Infobit ibit = manager.createInfobit(iid, _defaultAcl);
189
190 manager.setAttribute(ibit, "blurge", "bang");
191
192 pool.flush();
193
194 ibit = manager.getInfobit(iid);
195 assertEquals(ibit.getAttributeMap().get("blurge"), "bang");
196 boolean bombed = false;
197 try {
198 ibit.getAttributeMap().put("bla", "bla");
199 } catch (UnsupportedOperationException ex) {
200 bombed = true;
201 }
202
203 assertTrue("allowed direct modification of infobit attributes", bombed);
204 Collection cc = manager.queryInfobits("infobit.attributes['blurge'] = 'bang'");
205
206 assertEquals(cc.size(), 1);
207 assertEquals(cc.iterator().next(), ibit);
208 }
209
210
211 /***
212 * A unit test for JUnit - disabled for a while
213 *
214 * @exception Exception Description of Exception
215 */
216 public void xxtestBinaryStream() throws Exception {
217 InfobitPool pool = _configuration.getPool("news_pool");
218 InfobitManager manager = pool.getInfobitManager();
219 Acl acl = pool.getAclManager().getAcl("news_acl");
220
221 Infobit ib = manager.createInfobit("maven_image", acl);
222 InputStream is = getClass().getResourceAsStream("/maven-propaganda.png");
223
224 manager.setActualVersion(ib, manager.createBinary(ib, "foo-bar", is, "image/png", Collections.EMPTY_SET));
225 pool.flush();
226 }
227 }
228
This page was automatically generated by Maven