/*******************************************************************************
* Copyright (c) 2012-2013 University of Stuttgart.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and the Apache License 2.0 which both accompany this distribution,
* and are available at http://www.eclipse.org/legal/epl-v10.html
* and http://www.apache.org/licenses/LICENSE-2.0
*
* Contributors:
* Oliver Kopp - initial API and implementation
*******************************************************************************/
package org.eclipse.winery.repository.client;
import java.io.IOException;
import java.util.Collection;
import java.util.List;
import javax.xml.namespace.QName;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import org.eclipse.winery.model.tosca.TDefinitions;
import org.eclipse.winery.model.tosca.TEntityTemplate;
import org.eclipse.winery.model.tosca.TNodeType;
import org.eclipse.winery.model.tosca.TRelationshipType;
import org.eclipse.winery.model.tosca.TTopologyTemplate;
import org.eclipse.winery.common.ids.definitions.ArtifactTemplateId;
import org.eclipse.winery.common.interfaces.QNameAlreadyExistsException;
/**
* Tests client methods with a pre-configured client stored in a local static
* field.
*
* Client creation and multiple repositories are not tested. This should be
* subject to other test classes.
*
* TODO: This class expects things to be existent in the namespace "test". This
* should be enforced in a preload.
*/
@RunWith(JUnit4.class)
public class TestWineryRepositoryClient {
// private final String repositoryURI = "http://2471.de:8080/wineydev";
private static final String repositoryURI = "http://localhost:8080/winery";
private static final boolean USE_PROXY = true;
private static final IWineryRepositoryClient client = new WineryRepositoryClient(TestWineryRepositoryClient.USE_PROXY);
static {
TestWineryRepositoryClient.client.addRepository(TestWineryRepositoryClient.repositoryURI);
}
/**
* The namespace to put new things in.
* TODO: Is deleted completely after testing
*/
private static final String namespaceForNewArtifacts = "http://www.example.org/test/wineryclient/";
@Test
public void getAllNodeTypes() {
Collection allTypes = TestWineryRepositoryClient.client.getAllTypes(TNodeType.class);
for (TNodeType type : allTypes) {
Assert.assertNotNull("name is null", type.getName());
Assert.assertNotNull("target namespace is null", type.getTargetNamespace());
}
}
@Test
public void getAllRelationshipTypes() {
Collection allTypes = TestWineryRepositoryClient.client.getAllTypes(TRelationshipType.class);
for (TRelationshipType type : allTypes) {
Assert.assertNotNull("name is null", type.getName());
Assert.assertNotNull("target namespace is null", type.getTargetNamespace());
}
}
@Test
public void getAllNodeTypesWithAssociatedElements() {
Collection allTypes = TestWineryRepositoryClient.client.getAllTypesWithAssociatedElements(TNodeType.class);
Assert.assertNotNull(allTypes);
}
@Test
public void getAllRelationshipTypesWithAssociatedElements() {
Collection allTypes = TestWineryRepositoryClient.client.getAllTypesWithAssociatedElements(TRelationshipType.class);
Assert.assertNotNull(allTypes);
}
@Test
public void getPropertiesOfAllNodeTypes() {
// TODO
}
@Test
public void getPropertiesOfAllRelationshipTypes() {
// TODO
}
@Test
public void getTestTopologyTemplate() {
QName serviceTemplate = new QName("test", "test");
TTopologyTemplate topologyTemplate = TestWineryRepositoryClient.client.getTopologyTemplate(serviceTemplate);
Assert.assertNotNull(topologyTemplate);
}
@Test
public void getPropertiesOfTestTopologyTemplate() {
QName serviceTemplate = new QName("test", "test");
TTopologyTemplate topologyTemplate = TestWineryRepositoryClient.client.getTopologyTemplate(serviceTemplate);
Assert.assertNotNull(topologyTemplate);
List allTemplates = topologyTemplate.getNodeTemplateOrRelationshipTemplate();
for (TEntityTemplate e : allTemplates) {
// TODO
}
}
@Test
public void artifactTypeForWARfiles() {
QName artifactType = TestWineryRepositoryClient.client.getArtifactTypeQNameForExtension("war");
Assert.assertNotNull("Artifact Type for .war does not exist", artifactType);
}
@Test
public void createArtifactTemplate() throws IOException, QNameAlreadyExistsException {
// assure that the artifact type exists
QName artifactTypeQName = TestWineryRepositoryClient.client.getArtifactTypeQNameForExtension("war");
Assert.assertNotNull("Artifact Type for .war does not exist", artifactTypeQName);
// assure that the artifact template does not yet exist
// one possibility is to delete the artifact template, the other
// possibility is to
QName artifactTemplateQName = new QName(TestWineryRepositoryClient.namespaceForNewArtifacts, "artifactTemplate");
ArtifactTemplateId atId = new ArtifactTemplateId(artifactTemplateQName);
// ensure that the template does not exist yet
TestWineryRepositoryClient.client.forceDelete(atId);
TestWineryRepositoryClient.client.createArtifactTemplate(artifactTemplateQName, artifactTypeQName);
}
}