source: ComponentRegistry/branches/jeaferversion/ComponentRegistry/src/test/java/clarin/cmdi/componentregistry/impl/database/ComponentRegistryDbImplTest.java @ 1633

Last change on this file since 1633 was 1633, checked in by jeafer, 13 years ago

Jean-Charles branch commit2,
Changes regarding comment on the ComponentRegistry service.
Delete_comment from RestService? to Database access (CommentsDao?) implemented.
Post_comment from RestService? to Database access (CommentsDao?) implemented. (Not yet tested)
Comment class updated
TestComment? class updated
DataBase? : Table comment updated, Corrections of fkey references
Validate classes implemented to validate comment

File size: 27.2 KB
Line 
1package clarin.cmdi.componentregistry.impl.database;
2
3import static org.junit.Assert.assertEquals;
4import static org.junit.Assert.assertNotNull;
5import static org.junit.Assert.assertNull;
6import static org.junit.Assert.assertTrue;
7import static org.junit.Assert.fail;
8
9import java.io.ByteArrayOutputStream;
10import java.io.OutputStream;
11import java.util.Calendar;
12
13import org.apache.commons.lang.time.DateFormatUtils;
14import org.junit.Before;
15import org.junit.Test;
16import org.junit.runner.RunWith;
17import org.springframework.beans.factory.annotation.Autowired;
18import org.springframework.jdbc.core.JdbcTemplate;
19import org.springframework.test.context.ContextConfiguration;
20import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
21
22import clarin.cmdi.componentregistry.ComponentRegistry;
23import clarin.cmdi.componentregistry.ComponentRegistryException;
24import clarin.cmdi.componentregistry.DeleteFailedException;
25import clarin.cmdi.componentregistry.UserCredentials;
26import clarin.cmdi.componentregistry.UserUnauthorizedException;
27import clarin.cmdi.componentregistry.components.CMDComponentSpec;
28import clarin.cmdi.componentregistry.model.ComponentDescription;
29import clarin.cmdi.componentregistry.model.ProfileDescription;
30import clarin.cmdi.componentregistry.model.UserMapping.User;
31import clarin.cmdi.componentregistry.rest.DummyPrincipal;
32import clarin.cmdi.componentregistry.rest.RegistryTestHelper;
33
34@RunWith(SpringJUnit4ClassRunner.class)
35@ContextConfiguration(locations = {"/applicationContext.xml"})
36public class ComponentRegistryDbImplTest {
37
38    protected final static UserCredentials USER_CREDS = DummyPrincipal.DUMMY_CREDENTIALS;
39    protected static final DummyPrincipal PRINCIPAL_ADMIN = DummyPrincipal.DUMMY_ADMIN_PRINCIPAL;
40    @Autowired
41    private ComponentRegistryBeanFactory componentRegistryBeanFactory;
42    @Autowired
43    private UserDao userDao;
44    @Autowired
45    private JdbcTemplate jdbcTemplate;
46
47    @Before
48    public void init() {
49        ComponentRegistryTestDatabase.resetAndCreateAllTables(jdbcTemplate);
50    }
51
52    @Test
53    public void testRegisterComponent() throws Exception {
54        ComponentRegistry register = getComponentRegistryForUser(null);
55        ComponentDescription description = ComponentDescription.createNewDescription();
56
57        description.setName("Aap");
58        description.setDescription("MyDescription");
59
60        assertEquals(0, register.getComponentDescriptions().size());
61        assertEquals(0, register.getProfileDescriptions().size());
62
63        CMDComponentSpec testComponent = RegistryTestHelper.getTestComponent();
64        assertNull(testComponent.getHeader().getID());
65        assertNull(testComponent.getHeader().getName());
66        assertNull(testComponent.getHeader().getDescription());
67        testComponent.getHeader().setDescription("Will not be overwritten");
68
69        register.register(description, testComponent);
70
71        assertEquals(1, register.getComponentDescriptions().size());
72        assertEquals(0, register.getProfileDescriptions().size());
73
74        ComponentDescription desc = register.getComponentDescriptions().get(0);
75        assertNotNull(desc);
76        CMDComponentSpec component = register.getMDComponent(desc.getId());
77        assertNotNull(component);
78
79        assertNull(register.getMDProfile(desc.getId()));
80
81        ComponentDescription componentDescription = register.getComponentDescription(description.getId());
82        assertNotNull(componentDescription);
83
84        assertEquals("Header id should be set from description id", description.getId(), component.getHeader().getID());
85        assertEquals("Aap", component.getHeader().getName());
86        assertEquals("Will not be overwritten", component.getHeader().
87                getDescription());
88    }
89
90    @Test
91    public void testRegisterProfile() throws Exception {
92        ComponentRegistry register = getComponentRegistryForUser(null);
93        ProfileDescription description = ProfileDescription.createNewDescription();
94        description.setName("Aap");
95        description.setDescription("MyDescription");
96
97        assertEquals(0, register.getComponentDescriptions().size());
98        assertEquals(0, register.getProfileDescriptions().size());
99
100        CMDComponentSpec testProfile = RegistryTestHelper.getTestProfile();
101        assertNull(testProfile.getHeader().getID());
102        assertNull(testProfile.getHeader().getName());
103        assertNull(testProfile.getHeader().getDescription());
104
105        register.register(description, testProfile);
106
107        assertEquals(0, register.getComponentDescriptions().size());
108        assertEquals(1, register.getProfileDescriptions().size());
109        ProfileDescription desc = register.getProfileDescriptions().get(0);
110        assertNull(register.getMDComponent(desc.getId()));
111
112        CMDComponentSpec profile = register.getMDProfile(desc.getId());
113
114        ProfileDescription profileDescription = register.getProfileDescription(description.getId());
115        assertNotNull(profileDescription);
116
117        assertNotNull(profile);
118        assertEquals("Header id should be set from description id", description.getId(), profile.getHeader().getID());
119        assertEquals("Aap", profile.getHeader().getName());
120        assertEquals("MyDescription", profile.getHeader().getDescription());
121    }
122
123    @Test
124    public void testDeletePublicProfile() throws Exception {
125        ComponentRegistry register = getComponentRegistryForUser(null);
126        ProfileDescription description = createProfile(register);
127
128        // Delete as admin
129        register.deleteMDProfile(description.getId(), PRINCIPAL_ADMIN);
130
131        assertEquals(0, register.getProfileDescriptions().size());
132        assertNull(register.getMDProfile(description.getId()));
133    }
134
135    @Test
136    public void testDeleteUserProfile() throws Exception {
137        User user = createUser();
138        Number userId = userDao.insertUser(user);
139        ComponentRegistry registry = getComponentRegistryForUser(userId);
140        ProfileDescription description = createProfile(registry);
141        // Delete as user
142        registry.deleteMDProfile(description.getId(), USER_CREDS.getPrincipal());
143        assertEquals(0, registry.getComponentDescriptions().size());
144        assertNull(registry.getMDProfile(description.getId()));
145        // Delete as admin
146        description = createProfile(registry);
147
148        registry.deleteMDProfile(description.getId(), PRINCIPAL_ADMIN);
149        assertEquals(0, registry.getProfileDescriptions().size());
150        assertNull(registry.getMDProfile(description.getId()));
151    }
152
153    @Test
154    public void testGetDeletedDescriptions() throws Exception {
155        User user = createUser();
156        Number userId = userDao.insertUser(user);
157        ComponentRegistry registry = getComponentRegistryForUser(userId);
158        ComponentRegistry publicReg = getComponentRegistryForUser(null);
159        ProfileDescription desc1 = createProfile(registry);
160        ProfileDescription desc2 = createProfile(publicReg);
161        ComponentDescription desc3 = createComponent(registry);
162        ComponentDescription desc4 = createComponent(publicReg);
163
164        assertEquals(0, registry.getDeletedProfileDescriptions().size());
165        assertEquals(0, publicReg.getDeletedProfileDescriptions().size());
166        assertEquals(0, registry.getDeletedComponentDescriptions().size());
167        assertEquals(0, publicReg.getDeletedComponentDescriptions().size());
168
169        registry.deleteMDProfile(desc1.getId(), USER_CREDS.getPrincipal());
170
171        assertEquals(1, registry.getDeletedProfileDescriptions().size());
172        assertEquals(0, publicReg.getDeletedProfileDescriptions().size());
173        assertEquals(0, registry.getDeletedComponentDescriptions().size());
174        assertEquals(0, publicReg.getDeletedComponentDescriptions().size());
175
176        publicReg.deleteMDProfile(desc2.getId(), USER_CREDS.getPrincipal());
177
178        assertEquals(1, registry.getDeletedProfileDescriptions().size());
179        assertEquals(1, publicReg.getDeletedProfileDescriptions().size());
180        assertEquals(0, registry.getDeletedComponentDescriptions().size());
181        assertEquals(0, publicReg.getDeletedComponentDescriptions().size());
182
183        registry.deleteMDComponent(desc3.getId(), USER_CREDS.getPrincipal(), false);
184
185        assertEquals(1, registry.getDeletedProfileDescriptions().size());
186        assertEquals(1, publicReg.getDeletedProfileDescriptions().size());
187        assertEquals(1, registry.getDeletedComponentDescriptions().size());
188        assertEquals(0, publicReg.getDeletedComponentDescriptions().size());
189
190        publicReg.deleteMDComponent(desc4.getId(), USER_CREDS.getPrincipal(), false);
191
192        assertEquals(1, registry.getDeletedProfileDescriptions().size());
193        assertEquals(1, publicReg.getDeletedProfileDescriptions().size());
194        assertEquals(1, registry.getDeletedComponentDescriptions().size());
195        assertEquals(1, publicReg.getDeletedComponentDescriptions().size());
196
197    }
198
199    private ProfileDescription createProfile(ComponentRegistry register) throws Exception {
200        ProfileDescription description = getProfileDesc();
201
202        CMDComponentSpec testProfile = RegistryTestHelper.getTestProfile();
203        register.register(description, testProfile);
204
205        assertEquals(1, register.getProfileDescriptions().size());
206        assertNotNull(register.getMDProfile(description.getId()));
207        // Non authorized user should never be able to delete
208        try {
209            register.deleteMDProfile(description.getId(), new DummyPrincipal("Fake User"));
210            fail("Should have thrown exception");
211        } catch (UserUnauthorizedException e) {
212        }
213
214        assertEquals(1, register.getProfileDescriptions().size());
215        assertNotNull(register.getMDProfile(description.getId()));
216        return description;
217    }
218
219    private ProfileDescription getProfileDesc() {
220        ProfileDescription description = ProfileDescription.createNewDescription();
221        description.setName("Aap");
222        description.setCreatorName(USER_CREDS.getDisplayName());
223        description.setUserId(USER_CREDS.getPrincipalName());
224        description.setDescription("MyDescription");
225        return description;
226    }
227
228    @Test
229    public void testDeletePublicComponent() throws Exception {
230        ComponentRegistry registry = getComponentRegistryForUser(null);
231        ComponentDescription description = createComponent(registry);
232        // Delete as admin
233        registry.deleteMDComponent(description.getId(), PRINCIPAL_ADMIN, false);
234        assertEquals(0, registry.getComponentDescriptions().size());
235        assertNull(registry.getMDComponent(description.getId()));
236    }
237
238    @Test
239    public void testDeleteUserComponent() throws Exception {
240        User user = createUser();
241        Number userId = userDao.insertUser(user);
242        ComponentRegistry registry = getComponentRegistryForUser(userId);
243        ComponentDescription description = createComponent(registry);
244        // Delete as user
245        registry.deleteMDComponent(description.getId(), USER_CREDS.getPrincipal(), false);
246        assertEquals(0, registry.getComponentDescriptions().size());
247        assertNull(registry.getMDProfile(description.getId()));
248
249        // Delete as admin
250        description = createComponent(registry);
251
252        registry.deleteMDComponent(description.getId(), PRINCIPAL_ADMIN, false);
253        assertEquals(0, registry.getComponentDescriptions().size());
254        assertNull(registry.getMDComponent(description.getId()));
255    }
256
257    @Test
258    public void testDoNotDeleteOldPublicComponent() throws Exception {
259        Number userId = userDao.insertUser(createUser());
260        ComponentRegistry registry = getComponentRegistryForUser(userId);
261
262        ComponentDescription description = getComponentDesc();
263        Calendar calendar = Calendar.getInstance();
264        calendar.set(Calendar.YEAR, 1999);
265        description.setRegistrationDate(DateFormatUtils.formatUTC(calendar.getTime(), DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.getPattern()));
266        CMDComponentSpec testComp = RegistryTestHelper.getTestComponent();
267
268        registry.register(description, testComp);
269        registry.publish(description, testComp, USER_CREDS.getPrincipal());
270
271        // Switch to public registry
272        registry = getComponentRegistryForUser(null);
273
274        try {
275            registry.deleteMDComponent(description.getId(), USER_CREDS.getPrincipal(), false);
276            fail("Should have thrown exception");
277        } catch (DeleteFailedException e) {
278        }
279        assertEquals(1, registry.getComponentDescriptions().size());
280        registry.deleteMDComponent(description.getId(), PRINCIPAL_ADMIN, false);
281        assertEquals(0, registry.getComponentDescriptions().size());
282
283        registry = getComponentRegistryForUser(userId); // ComponentRegistryFactoryImpl.getInstance().getComponentRegistry(true, USER_CREDS); //user registry
284        description = getComponentDesc();
285        registry.register(description, testComp);
286        assertEquals(1, registry.getComponentDescriptions().size());
287        registry.deleteMDComponent(description.getId(), USER_CREDS.getPrincipal(), false); //user workspace can always delete
288        assertEquals(0, registry.getComponentDescriptions().size());
289    }
290
291    @Test
292    public void testDoNotDeleteOldPublicProfile() throws Exception {
293        Number userId = userDao.insertUser(createUser());
294        ComponentRegistry registry = getComponentRegistryForUser(userId);
295
296        ProfileDescription description = getProfileDesc();
297        Calendar calendar = Calendar.getInstance();
298        calendar.set(Calendar.YEAR, 1999);
299        description.setRegistrationDate(DateFormatUtils.formatUTC(calendar.getTime(), DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.getPattern()));
300        CMDComponentSpec testComp = RegistryTestHelper.getTestProfile();
301
302        registry.register(description, testComp);
303        registry.publish(description, testComp, USER_CREDS.getPrincipal());
304
305        // Switch to public registry
306        registry = getComponentRegistryForUser(null);
307        try {
308            registry.deleteMDProfile(description.getId(), USER_CREDS.getPrincipal());
309            fail("Should have thrown exception");
310        } catch (DeleteFailedException e) {
311        }
312        assertEquals(1, registry.getProfileDescriptions().size());
313        registry.deleteMDProfile(description.getId(), PRINCIPAL_ADMIN);
314        assertEquals(0, registry.getProfileDescriptions().size());
315
316        registry = getComponentRegistryForUser(userId);
317        description = getProfileDesc();//Need to create a new one for a new id
318        registry.register(description, testComp);
319        assertEquals(1, registry.getProfileDescriptions().size());
320        registry.deleteMDProfile(description.getId(), USER_CREDS.getPrincipal()); //user workspace can always delete
321        assertEquals(0, registry.getProfileDescriptions().size());
322    }
323
324    private ComponentDescription createComponent(ComponentRegistry registry) throws Exception {
325        ComponentDescription description = getComponentDesc();
326        CMDComponentSpec testComp = RegistryTestHelper.getTestComponent();
327
328        registry.register(description, testComp);
329
330        // Non authorized user should never be able to delete
331        try {
332            registry.deleteMDComponent(description.getId(), new DummyPrincipal("Fake User"), false);
333            fail("Should have thrown exception");
334        } catch (UserUnauthorizedException e) {
335        }
336
337        assertEquals(1, registry.getComponentDescriptions().size());
338        assertNotNull(registry.getMDComponent(description.getId()));
339        return description;
340    }
341
342    private ComponentDescription getComponentDesc() {
343        ComponentDescription description = ComponentDescription.createNewDescription();
344        description.setName("Aap");
345        description.setCreatorName(USER_CREDS.getDisplayName());
346        description.setUserId(USER_CREDS.getPrincipalName());
347        description.setDescription("MyDescription");
348        return description;
349    }
350   
351    private ComponentRegistry getComponentRegistryForUser(Number userId) {
352        ComponentRegistryDbImpl componentRegistry = componentRegistryBeanFactory.getNewComponentRegistry();
353        componentRegistry.setUserId(userId);
354        return componentRegistry;
355    }
356
357    private User createUser() {
358        User user = new User();
359        user.setName(USER_CREDS.getDisplayName());
360        user.setPrincipalName(USER_CREDS.getPrincipalName());
361        return user;
362    }
363
364    @Test
365    public void testGetProfileAsXsd() throws Exception {
366        ComponentRegistry register = getComponentRegistryForUser(null);
367        String profileContent = "";
368        profileContent += "<CMD_ComponentSpec isProfile=\"true\" xmlns:xml=\"http://www.w3.org/XML/1998/namespace\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
369        profileContent += "    xsi:noNamespaceSchemaLocation=\"general-component-schema.xsd\">\n";
370        profileContent += "    <Header />\n";
371        profileContent += "    <CMD_Component name=\"Actor\" CardinalityMin=\"0\" CardinalityMax=\"unbounded\">\n";
372        profileContent += "        <CMD_Element name=\"Age\">\n";
373        profileContent += "            <ValueScheme>\n";
374        profileContent += "                <pattern>[0-9][0-9]</pattern>\n";
375        profileContent += "            </ValueScheme>\n";
376        profileContent += "        </CMD_Element>\n";
377        profileContent += "    </CMD_Component>\n";
378        profileContent += "</CMD_ComponentSpec>\n";
379
380        String id = "profile1";
381        ProfileDescription description = RegistryTestHelper.addProfile(register, id, profileContent);
382
383        OutputStream output = new ByteArrayOutputStream();
384        register.getMDProfileAsXsd(description.getId(), output);
385        String xsd = output.toString();
386        assertTrue(xsd.endsWith("</xs:schema>"));
387
388        assertTrue(RegistryTestHelper.hasComponent(xsd, "Actor", "0", "unbounded"));
389    }
390
391    @Test
392    public void testGetNestedRecursiveComponentAsXsd() throws Exception {
393        User user = createUser();
394        Number userId = userDao.insertUser(user);
395        ComponentRegistry register = getComponentRegistryForUser(null);
396
397        String comp1Id = "component1";
398        String comp2Id = "component2";
399
400        // Component1 references component2
401       
402        String comp1Content = "";
403        comp1Content += "<CMD_ComponentSpec isProfile=\"false\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
404        comp1Content += "    xsi:noNamespaceSchemaLocation=\"general-component-schema.xsd\">\n";
405        comp1Content += "    <Header/>\n";
406        comp1Content += "    <CMD_Component name=\"Recursion\" CardinalityMin=\"1\" CardinalityMax=\"10\">\n";
407        comp1Content += "       <CMD_Element name=\"Availability\" ValueScheme=\"string\" />\n";
408        comp1Content += "       <CMD_Component ComponentId=\"" + ComponentRegistry.REGISTRY_ID + comp2Id + "\" CardinalityMin=\"0\" CardinalityMax=\"5\"/>\n";
409        comp1Content += "    </CMD_Component>\n";
410        comp1Content += "</CMD_ComponentSpec>\n";
411
412        ComponentDescription comp1Desc = RegistryTestHelper.addComponent(register, comp1Id, comp1Content);
413
414        // Component2 references component1
415
416        String comp2Content = "";
417        comp2Content += "<CMD_ComponentSpec isProfile=\"false\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
418        comp2Content += "    xsi:noNamespaceSchemaLocation=\"general-component-schema.xsd\">\n";
419        comp2Content += "    <Header/>\n";
420        comp2Content += "    <CMD_Component name=\"Recursion\" CardinalityMin=\"1\" CardinalityMax=\"10\">\n";
421        comp2Content += "        <CMD_Element name=\"Availability\" ValueScheme=\"string\" />\n";
422        comp2Content += "        <CMD_Component ComponentId=\"" + comp1Desc.getId() + "\" CardinalityMin=\"0\" CardinalityMax=\"5\"/>\n";
423        comp2Content += "    </CMD_Component>\n";
424        comp2Content += "</CMD_ComponentSpec>\n";
425
426        RegistryTestHelper.addComponent(register, comp2Id, comp2Content);
427
428        String profileContent = "";
429        profileContent += "<CMD_ComponentSpec isProfile=\"true\" xmlns:xml=\"http://www.w3.org/XML/1998/namespace\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
430        profileContent += "    xsi:noNamespaceSchemaLocation=\"general-component-schema.xsd\">\n";
431        profileContent += "    <Header />\n";
432        profileContent += "    <CMD_Component ComponentId=\"" + comp1Desc.getId()
433                + "\" filename=\"component-test-file\" CardinalityMin=\"0\" CardinalityMax=\"5\">\n";
434        profileContent += "    </CMD_Component>\n";
435        profileContent += "</CMD_ComponentSpec>\n";
436
437        String id = "profile1";
438        ProfileDescription description = RegistryTestHelper.addProfile(register, id, profileContent);
439
440        OutputStream output = new ByteArrayOutputStream();
441        try {
442            register.getMDProfileAsXml(description.getId(), output);
443            // This should throw a ComponentRegistryException for recursion
444            fail();
445        } catch (ComponentRegistryException ex) {
446        }
447    }
448
449    @Test
450    public void testGetNestedComponentAsXsd() throws Exception {
451        ComponentRegistry register = getComponentRegistryForUser(null);
452
453        String compId = "component1";
454        String compContent = "";
455        compContent += "<CMD_ComponentSpec isProfile=\"false\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
456        compContent += "    xsi:noNamespaceSchemaLocation=\"general-component-schema.xsd\">\n";
457        compContent += "    <Header/>\n";
458        compContent += "    <CMD_Component name=\"Actor\" CardinalityMin=\"1\" CardinalityMax=\"10\">\n";
459        compContent += "        <CMD_Element name=\"Availability\" ValueScheme=\"string\" />\n";
460        compContent += "    </CMD_Component>\n";
461        compContent += "</CMD_ComponentSpec>\n";
462
463        ComponentDescription compDesc = RegistryTestHelper.addComponent(register, compId, compContent);
464
465        String profileContent = "";
466        profileContent += "<CMD_ComponentSpec isProfile=\"true\" xmlns:xml=\"http://www.w3.org/XML/1998/namespace\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
467        profileContent += "    xsi:noNamespaceSchemaLocation=\"general-component-schema.xsd\">\n";
468        profileContent += "    <Header />\n";
469        profileContent += "    <CMD_Component ComponentId=\"" + compDesc.getId()
470                + "\" filename=\"component-test-file\" CardinalityMin=\"0\" CardinalityMax=\"5\">\n";
471        profileContent += "    </CMD_Component>\n";
472        profileContent += "</CMD_ComponentSpec>\n";
473
474        String id = "profile1";
475        ProfileDescription description = RegistryTestHelper.addProfile(register, id, profileContent);
476
477        OutputStream output = new ByteArrayOutputStream();
478        register.getMDProfileAsXsd(description.getId(), output);
479        String xsd = output.toString();
480
481        assertTrue(xsd.endsWith("</xs:schema>"));
482        assertTrue(RegistryTestHelper.hasComponent(xsd, "Actor", "0", "5"));
483    }
484
485    @Test
486    public void testGetNestedComponentAsXsdComplex() throws Exception {
487        ComponentRegistry register = getComponentRegistryForUser(null);
488
489        String compContent = "";
490        compContent += "<CMD_ComponentSpec isProfile=\"false\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
491        compContent += "    xsi:noNamespaceSchemaLocation=\"general-component-schema.xsd\">\n";
492        compContent += "    <Header/>\n";
493        compContent += "    <CMD_Component name=\"XXX\" CardinalityMin=\"1\" CardinalityMax=\"10\">\n";
494        compContent += "        <CMD_Element name=\"Availability\" ValueScheme=\"string\" />\n";
495        compContent += "    </CMD_Component>\n";
496        compContent += "</CMD_ComponentSpec>\n";
497        ComponentDescription compDesc1 = RegistryTestHelper.addComponent(register, "component1", compContent);
498
499        compContent = "";
500        compContent += "<CMD_ComponentSpec isProfile=\"false\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
501        compContent += "    xsi:noNamespaceSchemaLocation=\"general-component-schema.xsd\">\n";
502        compContent += "    <Header/>\n";
503        compContent += "    <CMD_Component name=\"YYY\" CardinalityMin=\"1\" CardinalityMax=\"1\">\n";
504        compContent += "        <CMD_Element name=\"Availability\" ValueScheme=\"string\" />\n";
505        compContent += "        <CMD_Component ComponentId=\"" + compDesc1.getId() + "\" filename=\"component-test-file\">\n";
506        compContent += "        </CMD_Component>\n";
507        compContent += "    </CMD_Component>\n";
508        compContent += "</CMD_ComponentSpec>\n";
509        ComponentDescription compDesc2 = RegistryTestHelper.addComponent(register, "component2", compContent);
510
511        compContent = "";
512        compContent += "<CMD_ComponentSpec isProfile=\"false\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
513        compContent += "    xsi:noNamespaceSchemaLocation=\"general-component-schema.xsd\">\n";
514        compContent += "    <Header/>\n";
515        compContent += "    <CMD_Component name=\"ZZZ\u00e9\" CardinalityMin=\"1\" CardinalityMax=\"unbounded\">\n";
516        compContent += "        <CMD_Component ComponentId=\"" + compDesc2.getId()
517                + "\" filename=\"component-test-file\" CardinalityMin=\"0\" CardinalityMax=\"2\">\n";
518        compContent += "        </CMD_Component>\n";
519        compContent += "        <CMD_Component ComponentId=\"" + compDesc1.getId()
520                + "\" filename=\"component-test-file\" CardinalityMin=\"0\" CardinalityMax=\"99\">\n";
521        compContent += "        </CMD_Component>\n";
522        compContent += "    </CMD_Component>\n";
523        compContent += "</CMD_ComponentSpec>\n";
524        ComponentDescription compDesc3 = RegistryTestHelper.addComponent(register, "component3", compContent);
525
526        ByteArrayOutputStream output = new ByteArrayOutputStream();
527        register.getMDComponentAsXsd(compDesc3.getId(), output);
528        String xsd = output.toString("UTF-8");
529
530        assertTrue(xsd.endsWith("</xs:schema>"));
531        // System.out.println(xsd);
532
533        assertTrue(RegistryTestHelper.hasComponent(xsd, "YYY", "0", "2"));
534        assertTrue(RegistryTestHelper.hasComponent(xsd, "XXX", "1", "10"));
535        assertTrue(RegistryTestHelper.hasComponent(xsd, "XXX", "0", "99"));
536        assertTrue(RegistryTestHelper.hasComponent(xsd, "ZZZ\u00e9", "1", "unbounded"));
537    }
538
539    @Test
540    public void testUpdate() throws Exception {
541        ComponentRegistry register = getComponentRegistryForUser(null);
542        ComponentDescription description = ComponentDescription.createNewDescription();
543        description.setName("Aap");
544        description.setDescription("MyDescription");
545
546        CMDComponentSpec testComponent = RegistryTestHelper.getTestComponent("Test1");
547        register.register(description, testComponent);
548
549        // Change values
550        description.setName("Noot");
551        description.setDescription("AnotherDescription");
552        // Update in db
553        register.update(description, testComponent, PRINCIPAL_ADMIN, false);
554        description = register.getComponentDescription(description.getId());
555        // Test if new values are there
556        assertNotNull(description);
557        assertEquals("Noot", description.getName());
558        assertEquals("AnotherDescription", description.getDescription());
559
560        // Update content
561        CMDComponentSpec testComponent2 = RegistryTestHelper.getTestComponent("Test2");
562        register.update(description, testComponent2, PRINCIPAL_ADMIN, false);
563        // Test if new content is there
564        assertEquals(RegistryTestHelper.getXml(testComponent2),
565                RegistryTestHelper.getXml(register.getMDComponent(description.getId())));
566
567
568        // Update both
569        description.setName("Mies");
570        description.setDescription("YetAnotherDescription");
571        CMDComponentSpec testComponent3 = RegistryTestHelper.getTestComponent("Test3");
572
573        // Update in db
574        register.update(description, testComponent3, PRINCIPAL_ADMIN, false);
575        description = register.getComponentDescription(description.getId());
576        // Test if new values are there
577        assertNotNull(description);
578        assertEquals("Mies", description.getName());
579        assertEquals("YetAnotherDescription", description.getDescription());
580        // Test if new content is there
581        assertEquals(RegistryTestHelper.getXml(testComponent3),
582                RegistryTestHelper.getXml(register.getMDComponent(description.getId())));
583    }
584
585    @Test
586    public void testPublish() throws Exception {
587        Number userId = userDao.insertUser(createUser());
588
589        ComponentRegistry userRegistry = getComponentRegistryForUser(userId);
590        ComponentRegistry publicRegistry = getComponentRegistryForUser(null);
591        ComponentDescription description = ComponentDescription.createNewDescription();
592        description.setName("Aap");
593        description.setDescription("MyDescription");
594        description.setUserId(DummyPrincipal.DUMMY_CREDENTIALS.getPrincipalName());
595
596        CMDComponentSpec testComponent = RegistryTestHelper.getTestComponent("Test1");
597        userRegistry.register(description, testComponent);
598        description = userRegistry.getComponentDescription(description.getId());
599        assertNotNull(description);
600        assertEquals("Aap", description.getName());
601        assertEquals("MyDescription", description.getDescription());
602
603        // Change values
604        description.setName("Noot");
605        description.setDescription("AnotherDescription");
606        CMDComponentSpec testComponent2 = RegistryTestHelper.getTestComponent("Test2");
607
608        // Publish
609        int result = userRegistry.publish(description, testComponent2, DummyPrincipal.DUMMY_PRINCIPAL);
610        assertEquals(0, result);
611
612        // Should not be in user registry
613        assertNull(userRegistry.getComponentDescription(description.getId()));
614        // Get from public registry
615        description = publicRegistry.getComponentDescription(description.getId());
616        // Test if new values are there
617        assertNotNull(description);
618        assertEquals("Noot", description.getName());
619        assertEquals("AnotherDescription", description.getDescription());
620        // Test if new content is there
621        assertEquals(RegistryTestHelper.getXml(testComponent2),
622                RegistryTestHelper.getXml(publicRegistry.getMDComponent(description.getId())));
623        assertNull(userRegistry.getMDComponent(description.getId()));
624    }
625}
Note: See TracBrowser for help on using the repository browser.