Project

General

Profile

1
/**
2
 *  '$RCSfile$'
3
 *  Copyright: 2010 Regents of the University of California and the
4
 *              National Center for Ecological Analysis and Synthesis
5
 *  Purpose: To test the Access Controls in metacat by JUnit
6
 *
7
 *   '$Author: leinfelder $'
8
 *     '$Date: 2011-11-28 14:44:14 -0800 (Mon, 28 Nov 2011) $'
9
 * '$Revision: 6697 $'
10
 *
11
 * This program is free software; you can redistribute it and/or modify
12
 * it under the terms of the GNU General Public License as published by
13
 * the Free Software Foundation; either version 2 of the License, or
14
 * (at your option) any later version.
15
 *
16
 * This program is distributed in the hope that it will be useful,
17
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19
 * GNU General Public License for more details.
20
 *
21
 * You should have received a copy of the GNU General Public License
22
 * along with this program; if not, write to the Free Software
23
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
24
 */
25

    
26
package edu.ucsb.nceas.metacat.dataone;
27

    
28
import java.io.ByteArrayInputStream;
29
import java.io.InputStream;
30
import java.text.SimpleDateFormat;
31
import java.util.Date;
32
import java.util.List;
33

    
34
import junit.framework.Test;
35
import junit.framework.TestSuite;
36

    
37
import org.apache.commons.io.IOUtils;
38
import org.dataone.client.D1Client;
39
import org.dataone.service.exceptions.InsufficientResources;
40
import org.dataone.service.exceptions.NotAuthorized;
41
import org.dataone.service.exceptions.NotFound;
42
import org.dataone.service.exceptions.NotImplemented;
43
import org.dataone.service.exceptions.ServiceFailure;
44
import org.dataone.service.types.v1.AccessPolicy;
45
import org.dataone.service.types.v1.AccessRule;
46
import org.dataone.service.types.v1.Checksum;
47
import org.dataone.service.types.v1.Event;
48
import org.dataone.service.types.v1.Identifier;
49
import org.dataone.service.types.v1.Log;
50
import org.dataone.service.types.v1.Node;
51
import org.dataone.service.types.v1.NodeList;
52
import org.dataone.service.types.v1.NodeReference;
53
import org.dataone.service.types.v1.NodeType;
54
import org.dataone.service.types.v1.ObjectFormat;
55
import org.dataone.service.types.v1.ObjectFormatIdentifier;
56
import org.dataone.service.types.v1.ObjectFormatList;
57
import org.dataone.service.types.v1.ObjectInfo;
58
import org.dataone.service.types.v1.ObjectList;
59
import org.dataone.service.types.v1.Permission;
60
import org.dataone.service.types.v1.Replica;
61
import org.dataone.service.types.v1.ReplicationPolicy;
62
import org.dataone.service.types.v1.ReplicationStatus;
63
import org.dataone.service.types.v1.Session;
64
import org.dataone.service.types.v1.Subject;
65
import org.dataone.service.types.v1.SystemMetadata;
66
import org.dataone.service.util.Constants;
67

    
68
/**
69
 * A JUnit test for testing the dataone CNCore implementation
70
 */
71
public class CNodeServiceTest extends D1NodeServiceTest {   
72
    
73
    /**
74
    * constructor for the test
75
    */
76
    public CNodeServiceTest(String name)
77
    {
78
        super(name);
79
    }
80

    
81
	/**
82
	 * Create a suite of tests to be run together
83
	 */
84
	public static Test suite() 
85
	{
86
		TestSuite suite = new TestSuite();
87
		suite.addTest(new CNodeServiceTest("initialize"));
88
		
89
		suite.addTest(new CNodeServiceTest("testAssertRelation"));
90
		suite.addTest(new CNodeServiceTest("testChecksum"));
91
		suite.addTest(new CNodeServiceTest("testCreate"));
92
		suite.addTest(new CNodeServiceTest("testGet"));
93
		suite.addTest(new CNodeServiceTest("testGetFormat"));
94
		suite.addTest(new CNodeServiceTest("testGetLogRecords"));
95
		suite.addTest(new CNodeServiceTest("testGetSystemMetadata"));
96
		suite.addTest(new CNodeServiceTest("testIsAuthorized"));
97
		suite.addTest(new CNodeServiceTest("testListFormats"));
98
		suite.addTest(new CNodeServiceTest("testListNodes"));
99
		suite.addTest(new CNodeServiceTest("testObjectFormatNotFoundException"));
100
		suite.addTest(new CNodeServiceTest("testRegisterSystemMetadata"));
101
		suite.addTest(new CNodeServiceTest("testReplicationPolicy"));
102
		suite.addTest(new CNodeServiceTest("testReplicationStatus"));
103
		suite.addTest(new CNodeServiceTest("testReserveIdentifier"));
104
		suite.addTest(new CNodeServiceTest("testSearch"));
105
		suite.addTest(new CNodeServiceTest("testSetAccessPolicy"));
106
		suite.addTest(new CNodeServiceTest("testSetOwner"));
107
	
108
		return suite;
109
	}
110
	
111
	
112
	/**
113
	 * test for registering standalone system metadata
114
	 */
115
	public Identifier testRegisterSystemMetadata() {
116
	    printTestHeader("testRegisterSystemMetadata");
117

    
118
	    try {
119
            Session session = getTestSession();
120
			Identifier guid = new Identifier();
121
			guid.setValue("testRegisterSystemMetadata." + System.currentTimeMillis());
122
			InputStream object = new ByteArrayInputStream("test".getBytes("UTF-8"));
123
			SystemMetadata sysmeta = createSystemMetadata(guid, session.getSubject(), object);
124
			Identifier retGuid = CNodeService.getInstance(request).registerSystemMetadata(session, guid, sysmeta);
125
			assertEquals(guid.getValue(), retGuid.getValue());
126
			return retGuid;
127
        } catch(Exception e) {
128
            fail("Unexpected error: " + e.getMessage());
129
        }
130
        return null;
131
	}
132
	
133
	/**
134
	 * test for getting system metadata
135
	 */
136
	public void testGetSystemMetadata() {
137
	    printTestHeader("testGetSystemMetadata");
138

    
139
	    try {
140
            Session session = getTestSession();
141
			Identifier guid = new Identifier();
142
			guid.setValue("testGetSystemMetadata." + System.currentTimeMillis());
143
			InputStream object = new ByteArrayInputStream("test".getBytes("UTF-8"));
144
			SystemMetadata sysmeta = createSystemMetadata(guid, session.getSubject(), object);
145
			Identifier retGuid = CNodeService.getInstance(request).registerSystemMetadata(session, guid, sysmeta);
146
			assertEquals(guid.getValue(), retGuid.getValue());
147
			// get it
148
			SystemMetadata retSysmeta = CNodeService.getInstance(request).getSystemMetadata(session, guid);
149
			// check it
150
			assertEquals(sysmeta.getIdentifier().getValue(), retSysmeta.getIdentifier().getValue());
151
        } catch(Exception e) {
152
            fail("Unexpected error: " + e.getMessage());
153
        }
154
	}
155
	
156
	public void testGetLogRecords() {
157
	    printTestHeader("testGetLogRecords");
158
	    try {
159

    
160
		    Session session = getTestSession();
161
		    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
162
		    Date fromDate = sdf.parse("2010-01-01");
163
		    Date toDate = new Date();
164
		    Event event = Event.CREATE;
165
		    int start = 0;
166
		    int count = 1;
167
	    
168
		    Log log = CNodeService.getInstance(request).getLogRecords(session, fromDate, toDate, 
169
		    	event, start, count);
170
		    assertNotNull(log);
171
		    assertTrue(log.getCount() == count);
172
		    assertTrue(log.getStart() == start);
173
		    assertTrue(log.getTotal() > 0);
174
	    } catch (Exception e) {
175
		    e.printStackTrace();
176
		    fail("Unexpected error: " + e.getMessage());
177
	    } 
178
	}
179
	
180
	public void testCreate() {
181
	    printTestHeader("testCreate");
182

    
183
	    try {
184
            Session session = getTestSession();
185
			Identifier guid = new Identifier();
186
			guid.setValue("testCreate." + System.currentTimeMillis());
187
			InputStream object = new ByteArrayInputStream("test".getBytes("UTF-8"));
188
			SystemMetadata sysmeta = createSystemMetadata(guid, session.getSubject(), object);
189
			Identifier pid = CNodeService.getInstance(request).create(session, guid, object, sysmeta);
190
			assertEquals(guid, pid);
191
        } catch(Exception e) {
192
        	e.printStackTrace();
193
            fail("Unexpected error: " + e.getMessage());
194
        }
195
	}
196
	
197
	public void testGet() {
198
	    printTestHeader("testGet");
199

    
200
	    try {
201
            Session session = getTestSession();
202
			Identifier guid = new Identifier();
203
			guid.setValue("testGet." + System.currentTimeMillis());
204
			InputStream object = new ByteArrayInputStream("test".getBytes("UTF-8"));
205
			SystemMetadata sysmeta = createSystemMetadata(guid, session.getSubject(), object);
206
			Identifier pid = CNodeService.getInstance(request).create(session, guid, object, sysmeta);
207
			assertEquals(guid.getValue(), pid.getValue());
208
			// get it
209
			InputStream retObject = CNodeService.getInstance(request).get(session, pid);
210
			// check it
211
			object.reset();
212
			assertTrue(IOUtils.contentEquals(object, retObject));
213
        } catch(Exception e) {
214
        	e.printStackTrace();
215
            fail("Unexpected error: " + e.getMessage());
216
        }
217
	}
218
	
219
	public void testAssertRelation() {
220
	    printTestHeader("testAssertRelation");
221

    
222
	    try {
223
            Session session = getTestSession();
224
			Identifier guid = new Identifier();
225
			guid.setValue("testAssertRelation." + System.currentTimeMillis());
226
			InputStream object = new ByteArrayInputStream("test".getBytes("UTF-8"));
227
			SystemMetadata sysmeta = createSystemMetadata(guid, session.getSubject(), object);
228
			Identifier describePid = new Identifier();
229
			describePid.setValue("describePid." + System.currentTimeMillis());
230
			sysmeta.setObsoletes(describePid);
231
			// save it
232
			Identifier retGuid = CNodeService.getInstance(request).registerSystemMetadata(session, guid, sysmeta);
233
			assertEquals(guid.getValue(), retGuid.getValue());
234
			// save the other
235
			InputStream object2 = new ByteArrayInputStream("test".getBytes("UTF-8"));
236
			SystemMetadata describeSysmeta = createSystemMetadata(describePid, session.getSubject(), object2);
237
			Identifier retDescribePid = CNodeService.getInstance(request).registerSystemMetadata(session, describePid, describeSysmeta);
238
			assertEquals(describePid.getValue(), retDescribePid.getValue());
239
			// check it
240
			boolean result = CNodeService.getInstance(request).assertRelation(session, guid, "obsoletes", describePid);
241
			assertTrue(result);
242
        } catch(Exception e) {
243
        	e.printStackTrace();
244
            fail("Unexpected error: " + e.getMessage());
245
        }
246
	}
247
	
248
	public void testChecksum() {
249
	    printTestHeader("testChecksum");
250

    
251
	    try {
252
            Session session = getTestSession();
253
			Identifier guid = new Identifier();
254
			guid.setValue("testChecksum." + System.currentTimeMillis());
255
			InputStream object = new ByteArrayInputStream("test".getBytes("UTF-8"));
256
			SystemMetadata sysmeta = createSystemMetadata(guid, session.getSubject(), object);
257
			// save it
258
			Identifier retGuid = CNodeService.getInstance(request).registerSystemMetadata(session, guid, sysmeta);
259
			assertEquals(guid.getValue(), retGuid.getValue());
260
			// check it
261
			Checksum checksum = CNodeService.getInstance(request).getChecksum(session, guid);
262
			assertEquals(sysmeta.getChecksum().getValue(), checksum.getValue());
263
        } catch(Exception e) {
264
            fail("Unexpected error: " + e.getMessage());
265
        }
266
	}
267
	
268
	public void testListNodes() {
269
	    printTestHeader("testListNodes");
270

    
271
	    try {
272
	    	CNodeService.getInstance(request).listNodes();
273
        } catch(NotImplemented e) {
274
        	// expecting not implemented
275
            assertTrue(true);
276
        } catch(Exception e) {
277
            fail("Unexpected error: " + e.getMessage());
278
        }
279
	}
280
	
281
	public void testReserveIdentifier() {
282
	    printTestHeader("testReserveIdentifier");
283

    
284
	    try {
285
            Session session = getTestSession();
286
			Identifier guid = new Identifier();
287
			guid.setValue("testReserveIdentifier." + System.currentTimeMillis());
288
			// reserve it
289
			Identifier resultPid = CNodeService.getInstance(request).reserveIdentifier(session, guid);
290
			assertNotNull(resultPid);
291
			assertEquals(guid.getValue(), resultPid.getValue());
292
	    } catch(NotImplemented ni) {
293
        	// this is not implemented in Metacat
294
            assertTrue(true);	
295
        } catch(Exception e) {
296
        	e.printStackTrace();
297
            fail("Unexpected error: " + e.getMessage());
298
        }
299
	}
300
	
301
	public void testSearch() {
302
	    printTestHeader("testSearch");
303

    
304
	    try {
305
            Session session = getTestSession();
306
			Identifier guid = new Identifier();
307
			guid.setValue("testSearch." + System.currentTimeMillis());
308
			InputStream object = new ByteArrayInputStream("test".getBytes("UTF-8"));
309
			SystemMetadata sysmeta = createSystemMetadata(guid, session.getSubject(), object);
310
			
311
			// save it
312
			Identifier retGuid = CNodeService.getInstance(request).registerSystemMetadata(session, guid, sysmeta);
313
			assertEquals(guid.getValue(), retGuid.getValue());
314
			// search for it
315
			ObjectList objectList = CNodeService.getInstance(request).search(session, null, null);
316
			// check it
317
			assertNotNull(objectList);
318
			boolean result = false;
319
			for (ObjectInfo objectInfo: objectList.getObjectInfoList()) {
320
				Identifier pid = objectInfo.getIdentifier();
321
				if (pid.getValue().equals(guid.getValue())) {
322
					result = true;
323
					break;
324
				}
325
			}
326
			assertTrue(result);
327
        } catch(Exception e) {
328
            fail("Unexpected error: " + e.getMessage());
329
        }
330
	}
331
	
332
	public void testSetOwner() {
333
	    printTestHeader("testSetOwner");
334

    
335
	    try {
336
            Session session = getTestSession();
337
			Identifier guid = new Identifier();
338
			guid.setValue("testSetOwner." + System.currentTimeMillis());
339
			InputStream object = new ByteArrayInputStream("test".getBytes("UTF-8"));
340
			SystemMetadata sysmeta = createSystemMetadata(guid, session.getSubject(), object);
341
			long serialVersion = 1L;
342
			// save it
343
			Identifier retGuid = CNodeService.getInstance(request).registerSystemMetadata(session, guid, sysmeta);
344
			assertEquals(guid.getValue(), retGuid.getValue());
345
			Subject rightsHolder = new Subject();
346
			rightsHolder.setValue("newUser");
347
			// set it
348
			Identifier retPid = CNodeService.getInstance(request).setOwner(session, guid, rightsHolder, serialVersion);
349
			assertEquals(guid, retPid);
350
			// get it
351
			sysmeta = CNodeService.getInstance(request).getSystemMetadata(session, guid);
352
			assertNotNull(sysmeta);
353
			// check it
354
			assertTrue(rightsHolder.equals(sysmeta.getRightsHolder()));
355
			
356
        } catch(Exception e) {
357
            fail("Unexpected error: " + e.getMessage());
358
        }
359
	}
360
	
361
	public void testSetAccessPolicy() {
362
	    printTestHeader("testSetAccessPolicy");
363

    
364
	    try {
365
            Session session = getTestSession();
366
			Identifier guid = new Identifier();
367
			guid.setValue("testSetAccessPolicy." + System.currentTimeMillis());
368
			InputStream object = new ByteArrayInputStream("test".getBytes("UTF-8"));
369
			SystemMetadata sysmeta = createSystemMetadata(guid, session.getSubject(), object);
370
	    long serialVersion = 1L;
371

    
372
			// save it
373
			Identifier retGuid = CNodeService.getInstance(request).registerSystemMetadata(session, guid, sysmeta);
374
			assertEquals(guid.getValue(), retGuid.getValue());
375
			AccessPolicy accessPolicy = new AccessPolicy();
376
			AccessRule accessRule = new AccessRule();
377
			accessRule.addPermission(Permission.WRITE);
378
			Subject publicSubject = new Subject();
379
			publicSubject.setValue(Constants.SUBJECT_PUBLIC);
380
			accessRule.addSubject(publicSubject);
381
			accessPolicy.addAllow(accessRule);
382
			// set it
383
			boolean result = CNodeService.getInstance(request).setAccessPolicy(session, guid, accessPolicy, serialVersion );
384
			assertTrue(result);
385
			// check it
386
			result = CNodeService.getInstance(request).isAuthorized(session, guid, Permission.WRITE);
387
			assertTrue(result);
388
        } catch(Exception e) {
389
            fail("Unexpected error: " + e.getMessage());
390
        }
391
	}
392
	
393
	public void testIsAuthorized() {
394
	    printTestHeader("testIsAuthorized");
395

    
396
	    try {
397
            Session session = getTestSession();
398
			Identifier guid = new Identifier();
399
			guid.setValue("testIsAuthorized." + System.currentTimeMillis());
400
			InputStream object = new ByteArrayInputStream("test".getBytes("UTF-8"));
401
			SystemMetadata sysmeta = createSystemMetadata(guid, session.getSubject(), object);
402
			// save it
403
			Identifier retGuid = CNodeService.getInstance(request).registerSystemMetadata(session, guid, sysmeta);
404
			assertEquals(guid.getValue(), retGuid.getValue());
405
			// check it
406
			Subject publicSubject = new Subject();
407
			publicSubject.setValue(Constants.SUBJECT_PUBLIC);
408
			session.setSubject(publicSubject);
409
			// public read
410
			boolean result = CNodeService.getInstance(request).isAuthorized(session, guid, Permission.READ);
411
			assertTrue(result);
412
			// not public write
413
			try {
414
				result = false;
415
				result = CNodeService.getInstance(request).isAuthorized(session, guid, Permission.WRITE);
416
				fail("Public WRITE should be denied");
417
			} catch (NotAuthorized nae) {
418
				result = true;
419
			}
420
			assertTrue(result);
421
        } catch(Exception e) {
422
            fail("Unexpected error: " + e.getMessage());
423
        }
424
	}
425
	
426
	public void testReplicationPolicy() {
427
	    printTestHeader("testReplicationPolicy");
428

    
429
	    try {
430
            Session session = getTestSession();
431
			Identifier guid = new Identifier();
432
			guid.setValue("testReplicationPolicy." + System.currentTimeMillis());
433
			InputStream object = new ByteArrayInputStream("test".getBytes("UTF-8"));
434
			SystemMetadata sysmeta = createSystemMetadata(guid, session.getSubject(), object);
435
	    long serialVersion = 1L;
436

    
437
			// save it
438
			Identifier retGuid = CNodeService.getInstance(request).registerSystemMetadata(session, guid, sysmeta);
439
			assertEquals(guid.getValue(), retGuid.getValue());
440
			
441
			ReplicationPolicy policy = new ReplicationPolicy();
442
			NodeReference node = new NodeReference();
443
			node.setValue("testNode");
444
			policy.addPreferredMemberNode(node );
445
			// set it
446
			boolean result = CNodeService.getInstance(request).setReplicationPolicy(session, guid, policy, serialVersion);
447
			assertTrue(result);
448
			// get it
449
			sysmeta = CNodeService.getInstance(request).getSystemMetadata(session, guid);
450
			assertNotNull(sysmeta);
451
			// check it
452
			assertEquals(policy.getPreferredMemberNode(0).getValue(), sysmeta.getReplicationPolicy().getPreferredMemberNode(0).getValue());
453
			
454
        } catch(Exception e) {
455
            fail("Unexpected error: " + e.getMessage());
456
        }
457
	}
458
	
459
	public void testReplicationStatus() {
460
	    printTestHeader("testReplicationStatus");
461

    
462
	    try {
463
            Session session = getTestSession();
464
			Identifier guid = new Identifier();
465
			guid.setValue("testReplicationStatus." + System.currentTimeMillis());
466
			InputStream object = new ByteArrayInputStream("test".getBytes("UTF-8"));
467
			SystemMetadata sysmeta = createSystemMetadata(guid, session.getSubject(), object);
468
      long serialVersion = 1L;
469
			Replica replica = new Replica();
470
			NodeReference replicaMemberNode = new NodeReference();
471
			replicaMemberNode.setValue("testNode");
472
			replica.setReplicationStatus(ReplicationStatus.REQUESTED);
473
			replica.setReplicaMemberNode(replicaMemberNode);
474
			replica.setReplicaVerified(new Date());
475
			sysmeta.addReplica(replica );
476
			// save it
477
			Identifier retGuid = CNodeService.getInstance(request).registerSystemMetadata(session, guid, sysmeta);
478
			assertEquals(guid.getValue(), retGuid.getValue());
479
			// set it
480
			ReplicationStatus status = ReplicationStatus.COMPLETED;
481
			boolean result = CNodeService.getInstance(request).setReplicationStatus(session, guid, replicaMemberNode, status, serialVersion);
482
			assertTrue(result);
483
			// get it
484
			sysmeta = CNodeService.getInstance(request).getSystemMetadata(session, guid);
485
			assertNotNull(sysmeta);
486
			// check it
487
			assertEquals(status, sysmeta.getReplica(0).getReplicationStatus());
488
			
489
        } catch(Exception e) {
490
            fail("Unexpected error: " + e.getMessage());
491
        }
492
	}
493
	
494
	/**
495
	 * Run an initial test that always passes to check that the test harness is
496
	 * working.
497
	 */
498
	public void initialize() 
499
	{
500
	    printTestHeader("initialize");
501
		assertTrue(1 == 1);
502
	}
503
	
504
	/**
505
	 * We want to act as the CN itself
506
	 * @throws ServiceFailure 
507
	 * @throws Exception 
508
	 */
509
	@Override
510
	public Session getTestSession() throws Exception {
511
		Session session = super.getTestSession();
512
		
513
		// use the first CN we find in the nodelist
514
        NodeList nodeList = D1Client.getCN().listNodes();
515
        for (Node node : nodeList.getNodeList()) {
516
            if ( node.getType().equals(NodeType.CN) ) {
517
                
518
                List<Subject> subjects = node.getSubjectList();
519
                for (Subject subject : subjects) {
520
                   session.setSubject(subject);
521
                   // we are done here
522
                   return session;
523
                }
524
            }
525
        }
526
        // in case we didn't find it
527
        return session;
528
	}
529
	
530

    
531
	/**
532
	 * test to list the object formats registered in metacat
533
	 */
534
	public void testListFormats() {
535
		
536
    printTestHeader("testListFormats");
537
    
538
    // make sure we are set up
539
    setUpFormats();
540
    
541
    // there should be at least 59 formats in the list
542
  	int formatsCount = 59;
543
  	ObjectFormatList objectFormatList;
544
  	
545
  	try {
546
	    objectFormatList = CNodeService.getInstance(request).listFormats();
547
	  	assertTrue(objectFormatList.getTotal() >= formatsCount);
548
  	
549
  	} catch (ServiceFailure e) {
550
  		fail("Could not get the object format list: " + e.getMessage());
551

    
552
    } catch (InsufficientResources e) {
553
  		fail("Could not get the object format list: " + e.getMessage());
554

    
555
    } catch (NotImplemented e) {
556
  		fail("Could not get the object format list: " + e.getMessage());
557

    
558
    }
559
    
560
	}
561
	
562
  /**
563
   * Test getting a single object format from the registered list
564
   */
565
  public void testGetFormat() {
566
  	
567
    printTestHeader("testGetFormat");
568

    
569
    // make sure we are set up
570
    setUpFormats();
571
    
572
    String knownFormat = "text/plain";
573
    ObjectFormatIdentifier fmtid = new ObjectFormatIdentifier();
574
    fmtid.setValue(knownFormat);
575
  	
576
    try {
577
	    
578
			String result = 
579
				CNodeService.getInstance(request).getFormat(fmtid).getFormatId().getValue();
580
	  	System.out.println("Expected result: " + knownFormat);
581
	  	System.out.println("Found    result: " + result);
582
	  	assertTrue(result.equals(knownFormat));
583
  
584
    } catch (NullPointerException npe) {	  
585
	    fail("The returned format was null: " + npe.getMessage());
586
    
587
    } catch (NotFound nfe) {     
588
    	fail("The format " + knownFormat + " was not found: " + nfe.getMessage());
589
    	
590
    } catch (ServiceFailure sfe) {
591
    	fail("The format " + knownFormat + " was not found: " + sfe.getMessage());
592

    
593
    } catch (InsufficientResources ise) {
594
    	fail("The format " + knownFormat + " was not found: " + ise.getMessage());
595
 
596
    } catch (NotImplemented nie) {
597
    	fail("The getFormat() method has not been implemented: " + nie.getMessage());
598

    
599
    }
600
  	
601
  }
602
	
603
  /**
604
   * Test getting a non-existent object format, returning NotFound
605
   */
606
  public void testObjectFormatNotFoundException() {
607
  
608
    printTestHeader("testObjectFormatNotFoundException");
609

    
610
    ObjectFormatIdentifier fmtid = new ObjectFormatIdentifier();
611
  	String badFormat = "text/bad-format";
612
  	fmtid.setValue(badFormat);
613
  	
614
  	try {
615
  		
616
	    ObjectFormat objectFormat = 
617
	    	CNodeService.getInstance(request).getFormat(fmtid);
618
      
619
  	} catch (Exception e) {
620
	    
621
  		assertTrue(e instanceof NotFound);
622
  	}
623
  	
624
  }
625
 
626
}
(1-1/4)