blob: 3ddefa4f11b4cfcc74408b209b24dd52295bcb1f [file] [log] [blame]
/*******************************************************************************
* 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);
}
}