Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,15 @@
*
* Contributors: Red Hat, Inc.
******************************************************************************/
package com.openshift3.client.model.build;
package com.openshift3.client.model.build;

public interface IWebhookTrigger extends IBuildTrigger {

String getSecret();

/**
* The URL to trigger the build for the resource
* @return the URL or empty if the resource is not configured with an IClient
*/
String getWebhookURL();
}
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,16 @@ public BuildConfig(ModelNode node, IClient client, Map<String, String []> proper
public List<IBuildTrigger> getBuildTriggers() {
List<IBuildTrigger> triggers = new ArrayList<IBuildTrigger>();
List<ModelNode> list = get(BUILDCONFIG_TRIGGERS).asList();
final String name = getName();
final String url = getClient() != null ? getClient().getBaseURL().toString() : "";
final String version = getClient() != null ? getClient().getOpenShiftAPIVersion() : "";
for (ModelNode node : list) {
switch(BuildTriggerType.valueOf(node.get("type").asString())){
case generic:
triggers.add(new WebhookTrigger(BuildTriggerType.generic, node.get(new String[]{"generic","secret"}).asString()));
triggers.add(new WebhookTrigger(BuildTriggerType.generic, node.get(new String[]{"generic","secret"}).asString(), name, url, version,getNamespace()));
break;
case github:
triggers.add(new WebhookTrigger(BuildTriggerType.github, node.get(new String[]{"github","secret"}).asString()));
triggers.add(new WebhookTrigger(BuildTriggerType.github, node.get(new String[]{"github","secret"}).asString(), name, url, version, getNamespace()));
break;
case imageChange:
triggers.add(new ImageChangeTrigger(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,26 @@
******************************************************************************/
package com.openshift3.internal.client.model.build;

import com.openshift.internal.client.utils.StringUtils;
import com.openshift3.client.model.build.BuildTriggerType;
import com.openshift3.client.model.build.IWebhookTrigger;

public class WebhookTrigger implements IWebhookTrigger {

private BuildTriggerType type;
private String secret;
private String resourceName;
private String baseURL;
private String apiVersion;
private String namespace;

public WebhookTrigger(BuildTriggerType triggerType, String secret) {
public WebhookTrigger(BuildTriggerType triggerType, String secret, String resourceName, String baseURL, String apiVersion, String namespace) {
this.type = triggerType;
this.secret = secret;
this.resourceName = resourceName;
this.baseURL = baseURL;
this.apiVersion = apiVersion;
this.namespace = namespace;
}

@Override
Expand All @@ -31,6 +40,21 @@ public String getSecret() {
return secret;
}

@Override
public String getWebhookURL() {
if(StringUtils.isEmpty(baseURL)){
return "";
}
return String.format("%s/osapi/%s/buildConfigHooks/%s/%s/%s?namespace=%s",
baseURL,
apiVersion,
resourceName,
secret,
type.toString(),
namespace
);
}

@Override
public int hashCode() {
final int prime = 31;
Expand Down Expand Up @@ -59,5 +83,4 @@ public boolean equals(Object obj) {
return true;
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@
package com.openshift3.internal.client.model.build;

import static org.junit.Assert.*;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.*;

import java.net.URL;

import org.jboss.dmr.ModelNode;
import org.junit.BeforeClass;
Expand All @@ -35,19 +37,22 @@
public class V1Beta1BuildConfigTest {

private static IBuildConfig config;
private static IClient client;

@BeforeClass
public static void setup(){
IClient client = mock(IClient.class);
public static void setup() throws Exception{
client = mock(IClient.class);
when(client.getBaseURL()).thenReturn(new URL("https://localhost:8443"));
when(client.getOpenShiftAPIVersion()).thenReturn("v1beta1");
ModelNode node = ModelNode.fromJSONString(Samples.BUILD_CONFIG_MINIMAL.getContentAsString());
config = new BuildConfig(node, client, ResourcePropertiesRegistry.getInstance().get("v1beta1", ResourceKind.BuildConfig));
}

@Test
public void getBuildTriggers(){
IBuildTrigger [] exp = new IBuildTrigger[]{
new WebhookTrigger(BuildTriggerType.github, "secret101"),
new WebhookTrigger(BuildTriggerType.generic, "secret101"),
new WebhookTrigger(BuildTriggerType.github, "secret101","foo", "https://localhost:8443", "v1beta1","foo"),
new WebhookTrigger(BuildTriggerType.generic, "secret101","foo", "https://localhost:8443", "v1beta1","foo"),
new ImageChangeTrigger("openshift/ruby-20-centos", "ruby-20-centos", "latest")
};
assertArrayEquals(exp, config.getBuildTriggers().toArray());
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/*******************************************************************************
* 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.
******************************************************************************/
package com.openshift3.internal.client.model.build;

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;

import com.openshift3.client.model.build.BuildTriggerType;
import com.openshift3.client.model.build.IWebhookTrigger;

public class WebhookTriggerTest {

private IWebhookTrigger trigger;

@Before
public void setup(){
}
@Test
public void testGetWebhookUrlWhenResourceHasBaseURL() {
trigger = new WebhookTrigger(BuildTriggerType.generic, "secret101","foo","https://localhost:8443","v1beta1","test");
assertEquals("https://localhost:8443/osapi/v1beta1/buildConfigHooks/foo/secret101/generic?namespace=test", trigger.getWebhookURL());
}

@Test
public void testGetWebhookUrlWhenResourceDoesNotHaveBaseURL(){
trigger = new WebhookTrigger(BuildTriggerType.generic, "secret101","foo"," ","v1beta1","test");
assertEquals("",trigger.getWebhookURL());
}
}