/******************************************************************************* * Copyright (c) 2015 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package com.openshift.internal.restclient.capability.resources; import static org.junit.Assert.*; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.openshift.internal.restclient.IntegrationTestHelper; import com.openshift.restclient.IClient; import com.openshift.restclient.ResourceKind; import com.openshift.restclient.capability.CapabilityVisitor; import com.openshift.restclient.capability.resources.IBuildCancelable; import com.openshift.restclient.capability.resources.IBuildTriggerable; import com.openshift.restclient.model.IBuild; import com.openshift.restclient.model.IBuildConfig; import com.openshift.restclient.model.IImageStream; import com.openshift.restclient.model.IProject; import com.openshift.restclient.model.build.IBuildConfigBuilder; /** * * @author Jeff Cantrill * */ public class BuildCapabilitiesIntegrationTest { private static final Logger LOG = LoggerFactory.getLogger(BuildCapabilitiesIntegrationTest.class); private IBuildConfig config; private IntegrationTestHelper helper = new IntegrationTestHelper(); private IProject project; private IClient client; @Before public void setUp() throws Exception { client = helper.createClientForBasicAuth(); project = helper.generateProject(client); //an output imagestream IImageStream is = client.getResourceFactory().stub(ResourceKind.IMAGE_STREAM, "ruby-hello-world", project.getName()); LOG.debug("Creating imagestream {}", is); is = client.create(is); LOG.debug("Generated imagestream {}", is); //a buildconfig IBuildConfigBuilder builder = client.adapt(IBuildConfigBuilder.class); assertNotNull("Exp. the client to be able to use a buildconfigbuilder", builder); config = builder.named("hello-openshift") .inNamespace(project.getName()) .fromGitSource() .fromGitUrl("https://github.com/openshift/ruby-hello-world.git") .end() .usingSourceStrategy() .fromDockerImage("centos/ruby-22-centos7:latest") .end() .toImageStreamTag("ruby-hello-world:latest") .build(); LOG.debug("Creating BuildConfig {}", config); config = client.create(config); LOG.debug("Created BuildConfig {}", config); assertNotNull(config); } @Test public void testBuildActions() { //trigger the build LOG.debug("Triggering build from the buildconfig..."); IBuild build = config.accept(new CapabilityVisitor<IBuildTriggerable, IBuild>() { @Override public IBuild visit(IBuildTriggerable capability) { return capability.trigger(); } }, null); assertNotNull("Exp. to be able to trigger a build from a buildconfig", build); LOG.debug("Triggered build {}", build); LOG.debug("Canceling the build..."); //cancel the build build = build.accept(new CapabilityVisitor<IBuildCancelable, IBuild>() { @Override public IBuild visit(IBuildCancelable cap) { return cap.cancel(); } }, null); assertNotNull("Exp. to be able to cancel a build", build); LOG.debug("Canceled build {}", build); //trigger the build from a build LOG.debug("Triggering build from a build..."); build = build.accept(new CapabilityVisitor<IBuildTriggerable, IBuild>() { @Override public IBuild visit(IBuildTriggerable capability) { return capability.trigger(); } }, null); assertNotNull("Exp. to be able to trigger a build from a build", build); LOG.debug("Triggered build {}", build); //add a build cause LOG.debug("Triggering build with build cause..."); build = build.accept(new CapabilityVisitor<IBuildTriggerable, IBuild>() { @Override public IBuild visit(IBuildTriggerable capability) { capability.addBuildCause("test cause"); return capability.trigger(); } }, null); assertNotNull("Exp. to be able to add a build cause for a build", build); LOG.debug("Triggered build {}", build); } @After public void tearDown() { IntegrationTestHelper.cleanUpResource(client, project); } }