Java tutorial
/******************************************************************************* * 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("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()); } }