/******************************************************************************* * Copyright (c) 2016 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.model.build; import static org.junit.Assert.*; import static org.mockito.Mockito.*; import java.util.Arrays; import java.util.Collections; import java.util.List; import org.apache.commons.lang.StringUtils; import org.jboss.dmr.ModelNode; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import com.openshift.internal.restclient.model.BuildConfig; import com.openshift.restclient.IClient; import com.openshift.restclient.IResourceFactory; import com.openshift.restclient.ResourceKind; import com.openshift.restclient.model.IBuildConfig; import com.openshift.restclient.model.IObjectReference; import com.openshift.restclient.model.build.BuildTriggerType; import com.openshift.restclient.model.build.IBuildTrigger; import com.openshift.restclient.model.build.IGitBuildSource; import com.openshift.restclient.model.build.ISourceBuildStrategy; import com.openshift.restclient.model.build.IWebhookTrigger; @RunWith(MockitoJUnitRunner.class) public class BuildConfigBuilderTest { @Mock private IClient client; @Mock private IResourceFactory factory; private IBuildConfig bc; private BuildConfig bcImpl; @Before public void setUp() throws Exception { bcImpl = new BuildConfig(new ModelNode(), client, Collections.emptyMap()); when(client.getResourceFactory()).thenReturn(factory); when(factory.stub(eq(ResourceKind.BUILD_CONFIG), anyString(), anyString())).thenReturn(bcImpl); } @Test public void testBuild() { bc = new BuildConfigBuilder(client) .named("foo") .inNamespace("aNamespace") .buildOnConfigChange(true) .buildOnImageChange(true) .buildOnSourceChange(true) .fromGitSource() .fromGitUrl("https://foo/bar/repo.git") .usingGitReference("branch") .inContextDir("root/directory") .end() .usingSourceStrategy() .fromImageStreamTag("builder:latest") .inNamespace("other") .end() .toImageStreamTag("foo/target:latest") .build(); List<String> triggerTypes = Arrays.asList(BuildTriggerType.CONFIG_CHANGE, BuildTriggerType.GENERIC, BuildTriggerType.GITHUB, BuildTriggerType.IMAGE_CHANGE); List<IBuildTrigger> triggers = bc.getBuildTriggers(); assertEquals("Exp. all the allowable triggers", triggerTypes.size(), triggers.size()); triggers.stream() .forEach(t->assertTrue(String.format("%s is not in expected types %s", t.getType(), triggerTypes), triggerTypes.contains(t.getType()))); triggers.stream() .filter(t->t.getType().equals(BuildTriggerType.GENERIC) || t.getType().equals(BuildTriggerType.GITHUB)) .forEach(t->assertTrue("Exp. the secret to not be blank", StringUtils.isNotBlank(((IWebhookTrigger)t).getSecret()))); IGitBuildSource source = bc.getBuildSource(); assertEquals("https://foo/bar/repo.git", source.getURI()); assertEquals("branch", source.getRef()); assertEquals("root/directory", source.getContextDir()); ISourceBuildStrategy strategy = bc.getBuildStrategy(); assertEquals("builder:latest", strategy.getImage().toString()); assertEquals("other", strategy.getFromNamespace()); IObjectReference out = bc.getBuildOutputReference(); assertEquals(ResourceKind.IMAGE_STREAM_TAG, out.getKind()); assertEquals("target:latest", out.getName()); assertEquals("foo", out.getNamespace()); } }