Project

General

Profile

« Previous | Next » 

Revision 5337

Added by berkley almost 14 years ago

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.

View differences:

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