source: ComponentRegistry/trunk/ComponentRegistry/src/test/java/clarin/cmdi/componentregistry/impl/database/AdminRegistryTest.java @ 3451

Last change on this file since 3451 was 3451, checked in by George.Georgovassilis@mpi.nl, 11 years ago

#360 Fixes for shha lux16 environment and renaming of DAO interfaces and implementations

File size: 4.9 KB
Line 
1package clarin.cmdi.componentregistry.impl.database;
2
3import static org.junit.Assert.assertEquals;
4import static org.junit.Assert.assertTrue;
5import static org.junit.Assert.fail;
6
7import java.security.Principal;
8
9import org.junit.Before;
10import org.junit.Test;
11import org.springframework.beans.factory.annotation.Autowired;
12
13import clarin.cmdi.componentregistry.BaseUnitTest;
14import clarin.cmdi.componentregistry.ComponentRegistry;
15import clarin.cmdi.componentregistry.ComponentRegistryFactory;
16import clarin.cmdi.componentregistry.ComponentStatus;
17import clarin.cmdi.componentregistry.DeleteFailedException;
18import clarin.cmdi.componentregistry.MDMarshaller;
19import clarin.cmdi.componentregistry.frontend.CMDItemInfo;
20import clarin.cmdi.componentregistry.frontend.DisplayDataNode;
21import clarin.cmdi.componentregistry.frontend.SubmitFailedException;
22import clarin.cmdi.componentregistry.model.ComponentDescription;
23import clarin.cmdi.componentregistry.model.ProfileDescription;
24import clarin.cmdi.componentregistry.persistence.ComponentDescriptionDao;
25import clarin.cmdi.componentregistry.persistence.ProfileDescriptionDao;
26import clarin.cmdi.componentregistry.rest.DummyPrincipal;
27import clarin.cmdi.componentregistry.rest.RegistryTestHelper;
28
29/**
30 *
31 * @author george.georgovassilis@mpi.nl
32 *
33 */
34public class AdminRegistryTest extends BaseUnitTest{
35
36    @Autowired
37    private ComponentDescriptionDao componentDescriptionDao;
38    @Autowired
39    private ProfileDescriptionDao profileDescriptionDao;
40    @Autowired
41    private ComponentRegistryFactory componentRegistryFactory;
42    private static final Principal PRINCIPAL_ADMIN = DummyPrincipal.DUMMY_ADMIN_PRINCIPAL;
43    @Autowired
44    private MDMarshaller marshaller;
45
46    @Before
47    public void init() {
48        ComponentRegistryTestDatabase.resetAndCreateAllTables(jdbcTemplate);
49    }
50
51    @Test
52    public void testForceUpdate() throws Exception {
53        ComponentRegistry testRegistry = componentRegistryFactory.getPublicRegistry();
54        String content1 = "";
55        content1 += "<CMD_ComponentSpec isProfile=\"false\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
56        content1 += "    xsi:noNamespaceSchemaLocation=\"general-component-schema.xsd\">\n";
57        content1 += "    <Header/>\n";
58        content1 += "    <CMD_Component name=\"XXX\" CardinalityMin=\"1\" CardinalityMax=\"10\">\n";
59        content1 += "        <CMD_Element name=\"Availability\" ValueScheme=\"string\" />\n";
60        content1 += "    </CMD_Component>\n";
61        content1 += "</CMD_ComponentSpec>\n";
62        ComponentDescription compDesc1 = RegistryTestHelper.addComponent(testRegistry, "XXX1", content1);
63
64        String content2 = "";
65        content2 += "<CMD_ComponentSpec isProfile=\"true\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
66        content2 += "    xsi:noNamespaceSchemaLocation=\"general-component-schema.xsd\">\n";
67        content2 += "    <Header/>\n";
68        content2 += "    <CMD_Component name=\"YYY\" CardinalityMin=\"1\" CardinalityMax=\"unbounded\">\n";
69        content2 += "        <CMD_Component ComponentId=\"" + compDesc1.getId() + "\" CardinalityMin=\"0\" CardinalityMax=\"99\">\n";
70        content2 += "        </CMD_Component>\n";
71        content2 += "    </CMD_Component>\n";
72        content2 += "</CMD_ComponentSpec>\n";
73        ProfileDescription profileDesc = RegistryTestHelper.addProfile(testRegistry, "YYY1", content2);
74
75        AdminRegistry adminReg = new AdminRegistry();
76        adminReg.setComponentRegistryFactory(componentRegistryFactory);
77        adminReg.setComponentDescriptionDao(componentDescriptionDao);
78        adminReg.setProfileDescriptionDao(profileDescriptionDao);
79        adminReg.setMarshaller(marshaller);
80        CMDItemInfo fileInfo = new CMDItemInfo(new MDMarshaller());
81        fileInfo.setForceUpdate(false);
82        fileInfo.setDataNode(new DisplayDataNode(compDesc1.getName(), false, compDesc1, ComponentStatus.PUBLISHED));
83        fileInfo.setContent(content1);
84        try {
85            adminReg.submitFile(fileInfo, PRINCIPAL_ADMIN);
86            fail();
87        } catch (SubmitFailedException e) {
88        }
89        fileInfo.setForceUpdate(true);
90        adminReg.submitFile(fileInfo, PRINCIPAL_ADMIN); //Component needs to be forced because they can be used by other profiles/components
91
92        assertEquals(1, testRegistry.getComponentDescriptions().size());
93        try {
94            fileInfo.setForceUpdate(false);
95            adminReg.delete(fileInfo, PRINCIPAL_ADMIN);
96            fail();
97        } catch (SubmitFailedException e) {
98            assertTrue(e.getCause() instanceof DeleteFailedException);
99        }
100        assertEquals(1, testRegistry.getComponentDescriptions().size());
101        fileInfo.setForceUpdate(true);
102        adminReg.delete(fileInfo, PRINCIPAL_ADMIN);
103        assertEquals(0, testRegistry.getComponentDescriptions().size());
104
105        assertEquals(1, testRegistry.getProfileDescriptions().size());
106        fileInfo.setForceUpdate(false);
107        fileInfo.setDataNode(new DisplayDataNode(profileDesc.getName(), false, profileDesc, ComponentStatus.PUBLISHED));
108        adminReg.delete(fileInfo, PRINCIPAL_ADMIN); //Profile do not need to be forced they cannot be used by other profiles
109        assertEquals(0, testRegistry.getProfileDescriptions().size());
110    }
111}
Note: See TracBrowser for help on using the repository browser.