| /******************************************************************************* |
| * Copyright (C) 2021 the Eclipse BaSyx Authors |
| * |
| * This program and the accompanying materials are made |
| * available under the terms of the Eclipse Public License 2.0 |
| * which is available at https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| ******************************************************************************/ |
| package org.eclipse.basyx.regression.AASServer; |
| |
| import static org.junit.Assert.assertEquals; |
| |
| import java.util.Map; |
| |
| import org.eclipse.basyx.components.aas.aasx.SubmodelFileEndpointLoader; |
| import org.eclipse.basyx.submodel.metamodel.api.identifier.IdentifierType; |
| import org.eclipse.basyx.submodel.metamodel.api.submodelelement.ISubmodelElement; |
| import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IFile; |
| import org.eclipse.basyx.submodel.metamodel.map.SubModel; |
| import org.eclipse.basyx.submodel.metamodel.map.identifier.Identifier; |
| import org.eclipse.basyx.submodel.metamodel.map.submodelelement.SubmodelElementCollection; |
| import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.File; |
| import org.junit.Before; |
| import org.junit.Test; |
| |
| /** |
| * Tests the SubmodelFileEndpointLoader |
| * |
| * @author espen |
| * |
| */ |
| public class TestFileEndpointLoader { |
| private SubModel submodel; |
| private final String relativePath = "/file/root/text.txt"; |
| private final String absolutePath = "http://localhost:1234/file/root/text.txt"; |
| private final String relativeTargetPath = "http://localhost:4321/new/file/root/text.txt"; |
| |
| @Before |
| public void setup() { |
| File fRel = new File(relativePath, "application/json"); |
| fRel.setIdShort("fRel"); |
| File fAbs = new File(absolutePath, "application/json"); |
| fAbs.setIdShort("fAbs"); |
| SubmodelElementCollection col = new SubmodelElementCollection(); |
| col.setIdShort("fileCollection"); |
| File fCol = new File(relativePath, "application/json"); |
| fCol.setIdShort("fInside"); |
| col.addSubModelElement(fCol); |
| submodel = new SubModel("FileTestSubmodel", new Identifier(IdentifierType.IRDI, "FileTestSubmodel")); |
| submodel.addSubModelElement(fRel); |
| submodel.addSubModelElement(fAbs); |
| submodel.addSubModelElement(col); |
| } |
| |
| /** |
| * Tests setting a static string endpoint (relative to the given path in the existing value) |
| */ |
| @Test |
| public void testRelativePaths1() { |
| SubmodelFileEndpointLoader.setRelativeFileEndpoints(submodel, "http://localhost:4321/new"); |
| checkRelativeTargetPaths(); |
| } |
| |
| /** |
| * Tests setting a endpoint via host, port and root path (relative to the given path in the existing value) |
| */ |
| @Test |
| public void testRelativePaths2() { |
| SubmodelFileEndpointLoader.setRelativeFileEndpoints(submodel, "localhost", 4321, "/new"); |
| checkRelativeTargetPaths(); |
| } |
| |
| /** |
| * Tests elements inside of collections |
| */ |
| @Test |
| public void testCollections() { |
| SubmodelFileEndpointLoader.setRelativeFileEndpoints(submodel, "localhost", 4321, "/new"); |
| |
| Map<String, ISubmodelElement> elements = submodel.getSubmodelElements(); |
| SubmodelElementCollection col = (SubmodelElementCollection) elements.get("fileCollection"); |
| IFile file = (IFile) col.getSubmodelElements().get("fInside"); |
| assertEquals(relativeTargetPath, file.getValue()); |
| } |
| |
| private void checkRelativeTargetPaths() { |
| Map<String, ISubmodelElement> elements = submodel.getSubmodelElements(); |
| |
| String fromRelative = ((IFile) elements.get("fRel")).getValue(); |
| assertEquals(relativeTargetPath, fromRelative); |
| |
| String fromAbsolute = ((IFile) elements.get("fAbs")).getValue(); |
| assertEquals(relativeTargetPath, fromAbsolute); |
| } |
| } |