/* * Copyright 2016 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.guvnor.ala.services.tests; import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.util.ArrayList; import java.util.List; import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.WebTarget; import org.apache.commons.io.FileUtils; import org.guvnor.ala.build.maven.config.impl.MavenBuildConfigImpl; import org.guvnor.ala.build.maven.config.impl.MavenBuildExecConfigImpl; import org.guvnor.ala.build.maven.config.impl.MavenProjectConfigImpl; import org.guvnor.ala.config.Config; import org.guvnor.ala.docker.config.impl.ContextAwareDockerProvisioningConfig; import org.guvnor.ala.docker.config.impl.ContextAwareDockerRuntimeExecConfig; import org.guvnor.ala.docker.config.DockerProviderConfig; import org.guvnor.ala.docker.config.impl.DockerBuildConfigImpl; import org.guvnor.ala.docker.config.impl.DockerProviderConfigImpl; import org.guvnor.ala.docker.model.DockerProvider; import org.guvnor.ala.pipeline.Input; import org.guvnor.ala.services.api.PipelineService; import org.guvnor.ala.services.api.RuntimeProvisioningService; import org.guvnor.ala.services.api.backend.PipelineConfigImpl; import org.guvnor.ala.services.api.itemlist.PipelineConfigsList; import org.guvnor.ala.services.api.itemlist.ProviderList; import org.guvnor.ala.services.api.itemlist.ProviderTypeList; import org.guvnor.ala.services.api.itemlist.RuntimeList; import org.guvnor.ala.source.git.config.impl.GitConfigImpl; import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget; import org.junit.After; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; public class PipelineEndpointsTestIT { private final String APP_URL = "http://localhost:8080/api/"; private File tempPath; @Before public void setUp() throws IOException { tempPath = Files.createTempDirectory( "xxx" ).toFile(); } @After public void tearDown() { FileUtils.deleteQuietly( tempPath ); } @Test public void checkService() { Client client = ClientBuilder.newClient(); WebTarget target = client.target( APP_URL ); ResteasyWebTarget restEasyTarget = ( ResteasyWebTarget ) target; PipelineService proxyPipeline = restEasyTarget.proxy( PipelineService.class ); RuntimeProvisioningService proxyRuntime = restEasyTarget.proxy( RuntimeProvisioningService.class ); ProviderTypeList allProviderTypes = proxyRuntime.getProviderTypes( 0, 10, "", true ); assertNotNull( allProviderTypes ); assertEquals( 2, allProviderTypes.getItems().size() ); DockerProviderConfig dockerProviderConfig = new DockerProviderConfigImpl(); proxyRuntime.registerProvider( dockerProviderConfig ); ProviderList allProviders = proxyRuntime.getProviders( 0, 10, "", true ); assertEquals( 1, allProviders.getItems().size() ); assertTrue( allProviders.getItems().get( 0 ) instanceof DockerProvider ); PipelineConfigsList allPipelines = proxyPipeline.getPipelineConfigs( 0, 10, "", true ); assertNotNull( allPipelines ); assertEquals( 0, allPipelines.getItems().size() ); List<Config> configs = new ArrayList<>(); configs.add( new GitConfigImpl() ); configs.add( new MavenProjectConfigImpl() ); configs.add( new MavenBuildConfigImpl() ); configs.add( new DockerBuildConfigImpl() ); configs.add( new MavenBuildExecConfigImpl() ); configs.add( new DockerProviderConfigImpl() ); configs.add( new ContextAwareDockerProvisioningConfig() ); configs.add( new ContextAwareDockerRuntimeExecConfig() ); String newPipeline = proxyPipeline.newPipeline( new PipelineConfigImpl( "mypipe", configs ) ); Input input = new Input(); input.put( "repo-name", "drools-workshop" ); input.put( "create-repo", "true" ); input.put( "branch", "master" ); input.put( "out-dir", tempPath.getAbsolutePath() ); input.put( "origin", "https://github.com/kiegroup/drools-workshop" ); input.put( "project-dir", "drools-webapp-example" ); proxyPipeline.runPipeline( "mypipe", input ); RuntimeList allRuntimes = proxyRuntime.getRuntimes( 0, 10, "", true ); assertEquals( 1, allRuntimes.getItems().size() ); proxyRuntime.destroyRuntime( allRuntimes.getItems().get( 0 ).getId() ); allRuntimes = proxyRuntime.getRuntimes( 0, 10, "", true ); assertEquals( 0, allRuntimes.getItems().size() ); } }