Skip to content

Commit 9434126

Browse files
committed
allow hooks to be updated after archive if needed
1 parent 7d4913c commit 9434126

File tree

5 files changed

+47
-3
lines changed

5 files changed

+47
-3
lines changed

src/main/java/com/redhat/labs/lodestar/models/gitlab/HookConfig.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,11 @@ public class HookConfig {
2626

2727
@JsonbProperty("token")
2828
private String token;
29+
30+
/**
31+
* Should the webhook be enabled after an engagement is archived
32+
*/
33+
@JsonbProperty("enabledAfterArchive")
34+
private boolean enabledAfterArchive;
2935

3036
}

src/main/java/com/redhat/labs/lodestar/service/ConfigService.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ void updateWebHooksInGitLab() {
122122
List<Project> projects = projectService.getProjectsByGroup(engagementRepositoryId, true);
123123
LOGGER.debug("number of projects found: {}", projects.size());
124124
projects.stream().filter(project -> project.getName().equals(IAC))
125-
.filter(project -> !engagementIsArchived(project)).forEach(project -> {
125+
.forEach(project -> {
126126

127127
Integer projectId = project.getId();
128128

@@ -131,9 +131,12 @@ void updateWebHooksInGitLab() {
131131

132132
// remove existing webhooks for project
133133
hookService.deleteProjectHooks(projectId);
134+
135+
boolean isArchived = isEngagementArchived(project);
134136

135137
// create hooks from configuration
136-
hookConfigs.stream().forEach(hookC -> {
138+
hookConfigs.stream().filter(config -> config.isEnabledAfterArchive() || !isArchived)
139+
.forEach(hookC -> {
137140
Hook hook = Hook.builder().projectId(projectId).pushEvents(true).url(hookC.getBaseUrl())
138141
.token(hookC.getToken()).build();
139142
LOGGER.debug("\tcreating webhook {}", hook.getUrl());
@@ -154,7 +157,7 @@ void updateWebHooksInGitLab() {
154157
* @param project
155158
* @return
156159
*/
157-
boolean engagementIsArchived(Project project) {
160+
boolean isEngagementArchived(Project project) {
158161

159162
Optional<Engagement> engagement = engagementService.getEngagement(project, false, false);
160163
if (engagement.isPresent() && null != engagement.get().getArchiveDate()) {
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.redhat.labs.lodestar.model;
2+
3+
import java.util.ArrayList;
4+
5+
import org.junit.jupiter.api.Assertions;
6+
import org.junit.jupiter.api.Test;
7+
8+
import com.redhat.labs.lodestar.models.gitlab.Project;
9+
10+
class ProjectTest {
11+
12+
@Test
13+
void testPreserve() {
14+
15+
Project project = new Project();
16+
Assertions.assertNull(project.getTagList());
17+
18+
project.setTagList(new ArrayList<>());
19+
Assertions.assertEquals(0, project.getTagList().size());
20+
21+
project.preserve();
22+
23+
Assertions.assertEquals(1, project.getTagList().size());
24+
Assertions.assertEquals("DO_NOT_DELETE", project.getTagList().get(0));
25+
26+
//Handle 2nd call properly
27+
project.preserve();
28+
29+
Assertions.assertEquals(1, project.getTagList().size());
30+
Assertions.assertEquals("DO_NOT_DELETE", project.getTagList().get(0));
31+
}
32+
}

src/test/java/com/redhat/labs/lodestar/resource/ConfigResourceTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,13 +122,15 @@ void testGetHookFileSuccess() {
122122
.body(is("\n[\n" +
123123
" {\n" +
124124
" \"baseUrl\": \"https://labs.com/webhooks/\",\n" +
125+
" \"enabledAfterArchive\": false,\n" +
125126
" \"name\": \"labs\",\n" +
126127
" \"pushEvent\": true,\n" +
127128
" \"pushEventsBranchFilter\": \"master\",\n" +
128129
" \"token\": \"abc\"\n" +
129130
" },\n" +
130131
" {\n" +
131132
" \"baseUrl\": \"https://rht.com/hooks/\",\n" +
133+
" \"enabledAfterArchive\": true,\n" +
132134
" \"name\": \"rht\",\n" +
133135
" \"pushEvent\": true,\n" +
134136
" \"pushEventsBranchFilter\": \"master\",\n" +

src/test/resources/webhooks.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@
99
pushEvent: true
1010
pushEventsBranchFilter: master
1111
token: def
12+
enabledAfterArchive: true

0 commit comments

Comments
 (0)