blob: f8c01e46126a8fbed8ef952f52b3a3d4c0241ee5 [file] [log] [blame]
/*
* Copyright 2017 Cisco Systems, Inc.
*
* 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 com.cisco.gerrit.plugins.slack.client;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import com.cisco.gerrit.plugins.slack.config.ProjectConfig;
import com.cisco.gerrit.plugins.slack.message.MessageTemplate;
import com.cisco.gerrit.plugins.slack.util.ResourceHelper;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.config.PluginConfig;
import com.google.gerrit.server.config.PluginConfigFactory;
import java.io.InputStream;
import java.util.Properties;
import org.junit.Test;
public class WebhookClientIntegrationTest {
private static final String PROJECT_NAME = "test-project";
private PluginConfigFactory mockConfigFactory = mock(PluginConfigFactory.class);
private PluginConfig mockPluginConfig = mock(PluginConfig.class);
private ProjectConfig getConfig() throws Exception {
Project.NameKey projectNameKey;
projectNameKey = Project.NameKey.parse(PROJECT_NAME);
// Setup mocks
when(mockConfigFactory.getFromProjectConfigWithInheritance(
projectNameKey, ProjectConfig.CONFIG_NAME))
.thenReturn(mockPluginConfig);
when(mockConfigFactory.getFromGerritConfig(ProjectConfig.CONFIG_NAME))
.thenReturn(mockPluginConfig);
// Internal proxy integration test config
// when(mockPluginConfig.getString("proxy-host", null)).thenReturn("127.0.0.1");
// when(mockPluginConfig.getInt("proxy-port", 8080)).thenReturn(8080);
// when(mockPluginConfig.getString("proxy-username", null)).thenReturn("user");
// when(mockPluginConfig.getString("proxy-password", null)).thenReturn("password");
return new ProjectConfig(mockConfigFactory, PROJECT_NAME);
}
@Test
public void canPublishMessage() throws Exception {
WebhookClient client;
client = new WebhookClient(getConfig());
Properties properties = new Properties();
try (InputStream testProperties = ResourceHelper.loadNamedResourceAsStream("test.properties")) {
properties.load(testProperties);
}
MessageTemplate template;
template = new MessageTemplate();
template.setChannel("general");
template.setName("Integration Tester");
template.setAction("proposed");
template.setProject("project");
template.setBranch("master");
template.setUrl("http://gerrit/1234");
template.setNumber(1234);
template.setTitle("Adds a test commit message");
String webhookUrl;
webhookUrl = properties.getProperty("webhook-url");
assertTrue(client.publish(template.render(), webhookUrl));
}
@Test
public void canPublishMessageWithLongMessage() throws Exception {
WebhookClient client;
client = new WebhookClient(getConfig());
Properties properties = new Properties();
try (InputStream testProperties = ResourceHelper.loadNamedResourceAsStream("test.properties")) {
properties.load(testProperties);
}
MessageTemplate template;
template = new MessageTemplate();
template.setChannel("general");
template.setName("Integration Tester");
template.setAction("commented on");
template.setProject("project");
template.setBranch("master");
template.setUrl("http://gerrit/1234");
template.setNumber(1234);
template.setTitle("Adds a test commit message");
template.setMessage(
"It provides a bunch of really great things. "
+ "I am mostly trying to fill out a really long comment to "
+ "test message rendering. Slack should do the right thing "
+ "but this will be on multiple lines in IRC.\n\n\n\n\n"
+ "This is hidden.");
String webhookUrl;
webhookUrl = properties.getProperty("webhook-url");
assertTrue(client.publish(template.render(), webhookUrl));
}
}