/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.component.update.api; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.IOException; import org.junit.Test; import de.rcenvironment.core.communication.common.InstanceNodeSessionId; import de.rcenvironment.core.communication.common.LogicalNodeId; import de.rcenvironment.core.communication.common.NodeIdentifierTestUtils; /** * Test cases for {@link PersistentComponentDescription}. * * @author Doreen Seider * @author Robert Mischke (8.0.0 id adaptations) */ public class PersistentComponentDescriptionTest { /** * Test. * * @throws IOException on error */ @Test public void test() throws IOException { String persistentComponentDescription = "{" + "\"identifier\" : \"86881b19-105c-4e48-85a5-8ee0ee7197be\"," + "\"name\" : \"Add\"," + "\"location\" : \"335:129\"," + "\"component\" : {" + "\"identifier\" : \"de.rcenvironment.rce.components.python.PythonComponent_Python\"" + "}" + "}\""; PersistentComponentDescription description = new PersistentComponentDescription(persistentComponentDescription); assertEquals("de.rcenvironment.rce.components.python.PythonComponent_Python", description.getComponentIdentifier()); assertEquals("", description.getComponentVersion()); assertEquals(null, description.getComponentNodeIdentifier()); assertEquals(persistentComponentDescription, description.getComponentDescriptionAsString()); final InstanceNodeSessionId dummyInstanceId = NodeIdentifierTestUtils.createTestInstanceNodeSessionId(); final LogicalNodeId dummyLogicalNodeId = dummyInstanceId.convertToDefaultLogicalNodeId(); persistentComponentDescription = "{" + "\"identifier\" : \"86881b19-105c-4e48-85a5-8ee0ee7197be\"," + "\"name\" : \"Add\"," + "\"location\" : \"335:129\"," + "\"component\" : {" + "\"identifier\" : \"de.rcenvironment.rce.components.python.PythonComponent_Python\"," + "\"version\" : \"2.0\"" + "}," + "\"platform\" : \"" + dummyInstanceId.getInstanceNodeSessionIdString() + "\"" + "}\""; description = new PersistentComponentDescription(persistentComponentDescription); assertEquals("de.rcenvironment.rce.components.python.PythonComponent_Python", description.getComponentIdentifier()); assertEquals("2.0", description.getComponentVersion()); // useful additional aspect: the string form contains a (legacy) instance id, so this covers backwards compatibility assertEquals(dummyLogicalNodeId, description.getComponentNodeIdentifier()); assertEquals(persistentComponentDescription, description.getComponentDescriptionAsString()); } /** * Tests if an semantically invalid JSON representation is handled properly. * * @throws IOException on unexpected error **/ @Test public void testMissingAttributesHandledProperly() throws IOException { String persistentComponentDescription = "{\"component\" : {}}\""; try { new PersistentComponentDescription(persistentComponentDescription); fail("IOException expected"); } catch (IOException e) { assertTrue(e.getMessage().contains("'identifier' missing")); } persistentComponentDescription = "{}"; try { new PersistentComponentDescription(persistentComponentDescription); fail("IOException expected"); } catch (IOException e) { assertTrue(e.getMessage().contains("'component' missing")); } } }