Revision 5337
Added by berkley almost 14 years ago
CrudServiceTest.java | ||
---|---|---|
28 | 28 |
import java.util.*; |
29 | 29 |
import java.io.*; |
30 | 30 |
|
31 |
import java.security.MessageDigest; |
|
32 |
|
|
31 | 33 |
import edu.ucsb.nceas.MCTestCase; |
32 | 34 |
import edu.ucsb.nceas.metacat.client.MetacatAuthException; |
33 | 35 |
import edu.ucsb.nceas.metacat.client.MetacatException; |
... | ... | |
36 | 38 |
import junit.framework.Test; |
37 | 39 |
import junit.framework.TestSuite; |
38 | 40 |
|
41 |
import org.dataone.service.types.*; |
|
42 |
|
|
43 |
import edu.ucsb.nceas.metacat.properties.PropertyService; |
|
44 |
import edu.ucsb.nceas.metacat.client.rest.MetacatRestClient; |
|
45 |
|
|
46 |
import edu.ucsb.nceas.metacat.service.SessionService; |
|
47 |
import edu.ucsb.nceas.metacat.util.SessionData; |
|
48 |
|
|
39 | 49 |
/** |
40 | 50 |
* A JUnit test for testing the dataone CrudService class |
41 | 51 |
*/ |
... | ... | |
71 | 81 |
{ |
72 | 82 |
TestSuite suite = new TestSuite(); |
73 | 83 |
suite.addTest(new CrudServiceTest("initialize")); |
74 |
|
|
84 |
suite.addTest(new CrudServiceTest("testSingletonAccessor")); |
|
85 |
suite.addTest(new CrudServiceTest("testCreate")); |
|
86 |
//suite.addTest(new CrudServiceTest("")); |
|
87 |
//suite.addTest(new CrudServiceTest("")); |
|
88 |
//suite.addTest(new CrudServiceTest("")); |
|
89 |
//suite.addTest(new CrudServiceTest("")); |
|
90 |
//suite.addTest(new CrudServiceTest("")); |
|
75 | 91 |
return suite; |
76 | 92 |
} |
93 |
|
|
94 |
/** |
|
95 |
* create(AuthToken token, Identifier guid, InputStream object, SystemMetadata sysmeta) |
|
96 |
* throws InvalidToken, ServiceFailure, NotAuthorized, IdentifierNotUnique, UnsupportedType, |
|
97 |
* InsufficientResources, InvalidSystemMetadata, NotImplemented |
|
98 |
*/ |
|
99 |
public void testCreate() |
|
100 |
{ |
|
101 |
try |
|
102 |
{ |
|
103 |
CrudService cs = CrudService.getInstance(); |
|
104 |
|
|
105 |
//login and get a sessionid |
|
106 |
System.out.println("creating MetacatRestClient with url " + cs.getContextUrl()); |
|
107 |
MetacatRestClient restClient = new MetacatRestClient(cs.getContextUrl()); |
|
108 |
String username = PropertyService.getProperty("test.mcUser"); |
|
109 |
String password = PropertyService.getProperty("test.mcPassword"); |
|
110 |
System.out.println("logging in with username: " + username + " and password " + password + " to context " + cs.getContextUrl()); |
|
111 |
String response = restClient.login(username, password); |
|
112 |
//System.out.println("response to login: " + response); |
|
113 |
String sessionid = restClient.getSessionId(); |
|
114 |
SessionService sessionService = SessionService.getInstance(); |
|
115 |
sessionService.registerSession(new SessionData(sessionid, username, new String[0], password, "CrudServiceLogin")); |
|
116 |
System.out.println("sessionid: " + sessionid); |
|
117 |
AuthToken token = new AuthToken(sessionid); |
|
118 |
|
|
119 |
String s = "<?xml version=\"1.0\"?><test></test>\n"; |
|
120 |
|
|
121 |
//create the system metadata then run the create method |
|
122 |
StringBufferInputStream sbis = new StringBufferInputStream(s); |
|
123 |
String docid = generateDocumentId(); |
|
124 |
String smdocid = generateDocumentId(); |
|
125 |
Identifier id = new Identifier(); |
|
126 |
id.setValue(docid); |
|
127 |
SystemMetadata sm = new SystemMetadata(); |
|
128 |
//set the id |
|
129 |
sm.setIdentifier(id); |
|
130 |
System.out.println("sm id is " + id); |
|
131 |
sm.setObjectFormat(ObjectFormat.convert("eml://ecoinformatics.org/eml-2.1.0")); |
|
132 |
System.out.println("sm objectformat: " + sm.getObjectFormat()); |
|
133 |
//create the checksum |
|
134 |
String checksumS = checksum(s); |
|
135 |
ChecksumAlgorithm ca = ChecksumAlgorithm.convert("MD5"); |
|
136 |
Checksum checksum = new Checksum(); |
|
137 |
checksum.setValue(checksumS); |
|
138 |
checksum.setAlgorithm(ca); |
|
139 |
sm.setChecksum(checksum); |
|
140 |
System.out.println("sm checksum is " + checksumS); |
|
141 |
//set the size |
|
142 |
sm.setSize(s.getBytes().length); |
|
143 |
System.out.println("sm size: " + s.getBytes().length); |
|
144 |
//submitter |
|
145 |
Principal p = new Principal(); |
|
146 |
p.setValue("joe"); |
|
147 |
sm.setSubmitter(p); |
|
148 |
sm.setRightsHolder(p); |
|
149 |
sm.setDateUploaded(new Date()); |
|
150 |
sm.setDateSysMetadataModified(new Date()); |
|
151 |
NodeReference nr = new NodeReference(); |
|
152 |
nr.setValue("metacat"); |
|
153 |
sm.setOriginMemberNode(nr); |
|
154 |
sm.setAuthoritativeMemberNode(nr); |
|
155 |
|
|
156 |
|
|
157 |
cs.create(token, id, sbis, sm); |
|
158 |
} |
|
159 |
catch(Exception e) |
|
160 |
{ |
|
161 |
e.printStackTrace(); |
|
162 |
fail("Error in testCreate: " + e.getMessage()); |
|
163 |
} |
|
164 |
} |
|
77 | 165 |
|
78 | 166 |
/** |
167 |
* getInstance() |
|
168 |
*/ |
|
169 |
public void testSingletonAccessor() |
|
170 |
{ |
|
171 |
CrudService cs = CrudService.getInstance(); |
|
172 |
assertNotNull(cs); |
|
173 |
} |
|
174 |
|
|
175 |
/** |
|
79 | 176 |
* Run an initial test that always passes to check that the test harness is |
80 | 177 |
* working. |
81 | 178 |
*/ |
... | ... | |
84 | 181 |
assertTrue(1 == 1); |
85 | 182 |
} |
86 | 183 |
|
184 |
/** |
|
185 |
* produce an md5 checksum for item |
|
186 |
*/ |
|
187 |
private String checksum(String item) |
|
188 |
throws Exception |
|
189 |
{ |
|
190 |
StringBufferInputStream fis = new StringBufferInputStream(item); |
|
191 |
|
|
192 |
byte[] buffer = new byte[1024]; |
|
193 |
MessageDigest complete = MessageDigest.getInstance("MD5"); |
|
194 |
int numRead; |
|
195 |
|
|
196 |
do |
|
197 |
{ |
|
198 |
numRead = fis.read(buffer); |
|
199 |
if (numRead > 0) |
|
200 |
{ |
|
201 |
complete.update(buffer, 0, numRead); |
|
202 |
} |
|
203 |
} while (numRead != -1); |
|
204 |
|
|
205 |
|
|
206 |
return getHex(complete.digest()); |
|
207 |
} |
|
208 |
|
|
209 |
/** |
|
210 |
* convert a byte array to a hex string |
|
211 |
*/ |
|
212 |
private static String getHex( byte [] raw ) |
|
213 |
{ |
|
214 |
final String HEXES = "0123456789ABCDEF"; |
|
215 |
if ( raw == null ) { |
|
216 |
return null; |
|
217 |
} |
|
218 |
final StringBuilder hex = new StringBuilder( 2 * raw.length ); |
|
219 |
for ( final byte b : raw ) { |
|
220 |
hex.append(HEXES.charAt((b & 0xF0) >> 4)) |
|
221 |
.append(HEXES.charAt((b & 0x0F))); |
|
222 |
} |
|
223 |
return hex.toString(); |
|
224 |
} |
|
87 | 225 |
} |
Also available in: Unified diff
removed CrudService dependency on servlet params. CrudService is now a singleton. I'm getting an error from metacat saying it can't find teh systemmetadata schema, even though it is, in fact, registered with metacat. need to identify why this is happening.