Skip to content

Commit dd3b0fa

Browse files
hrothwellseratch
authored andcommitted
Fix #1294 Bolt micronaut/micronaut 4 upgrade
1 parent 9b48c3d commit dd3b0fa

File tree

10 files changed

+117
-20
lines changed

10 files changed

+117
-20
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: JDK 17 Build & Tests
2+
3+
on:
4+
push:
5+
branches: [ main ]
6+
pull_request:
7+
8+
jobs:
9+
build:
10+
runs-on: ubuntu-latest
11+
timeout-minutes: 12
12+
strategy:
13+
matrix:
14+
java-version: ['17']
15+
16+
steps:
17+
- uses: actions/checkout@v3
18+
- name: Install JDK
19+
uses: actions/setup-java@v3
20+
with:
21+
java-version: ${{ matrix.java-version }}
22+
distribution: 'adopt'
23+
- name: Run all tests
24+
run: |
25+
./scripts/run_no_prep_tests.sh -ci
26+
env:
27+
SKIP_UNSTABLE_TESTS: 1
28+
- name: Upload coverage to Codecov
29+
uses: codecov/codecov-action@v3
30+
with:
31+
fail_ci_if_error: true

bolt-micronaut/pom.xml

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,18 @@
1010
</parent>
1111

1212
<properties>
13-
<!-- TODO: upgrading to v4 -->
14-
<micronaut.version>3.9.4</micronaut.version>
15-
<micronaut-test-junit5.version>3.9.2</micronaut-test-junit5.version>
16-
<micronaut-rxjava3.version>2.4.1</micronaut-rxjava3.version>
13+
<micronaut.version>4.3.12</micronaut.version>
14+
<micronaut-test-junit5.version>4.2.1</micronaut-test-junit5.version>
15+
<micronaut-rxjava3.version>3.2.1</micronaut-rxjava3.version>
1716
<junit5-jupiter.version>5.10.2</junit5-jupiter.version>
1817
<!-- Note that upgrading this library breaks other dependency resolution -->
1918
<mockito-all.version>1.10.19</mockito-all.version>
2019
<jakarta.inject.version>2.0.1.MR</jakarta.inject.version>
20+
<!-- Micronaut 4 requires jdk 17 -->
21+
<jdk.version>17</jdk.version>
22+
<release.version>17</release.version>
23+
<maven.compiler.source>17</maven.compiler.source>
24+
<maven.compiler.target>17</maven.compiler.target>
2125
</properties>
2226

2327
<artifactId>bolt-micronaut</artifactId>
@@ -57,6 +61,11 @@
5761
<artifactId>micronaut-http-server-netty</artifactId>
5862
<version>${micronaut.version}</version>
5963
</dependency>
64+
<dependency>
65+
<groupId>io.micronaut</groupId>
66+
<artifactId>micronaut-jackson-databind</artifactId>
67+
<version>${micronaut.version}</version>
68+
</dependency>
6069

6170
<dependency>
6271
<groupId>io.micronaut</groupId>

bolt-micronaut/src/main/java/com/slack/api/bolt/micronaut/SlackAppController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import io.micronaut.http.HttpRequest;
66
import io.micronaut.http.HttpResponse;
77
import io.micronaut.http.MediaType;
8-
import io.micronaut.http.annotation.Body;
98
import io.micronaut.http.annotation.Controller;
109
import io.micronaut.http.annotation.Get;
1110
import io.micronaut.http.annotation.Post;
@@ -29,7 +28,8 @@ public SlackAppController(App slackApp, SlackAppMicronautAdapter adapter) {
2928
}
3029

3130
@Post(value = "/events", consumes = {MediaType.APPLICATION_FORM_URLENCODED, MediaType.APPLICATION_JSON})
32-
public HttpResponse<String> events(HttpRequest<String> request, @Body String body) throws Exception {
31+
public HttpResponse<String> events(HttpRequest<String> request) throws Exception {
32+
String body = request.getBody().orElse(null);
3333
return adapt(request, body);
3434
}
3535

bolt-micronaut/src/test/java/test_locally/AdapterTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import com.slack.api.bolt.micronaut.SlackAppMicronautAdapter;
55
import com.slack.api.bolt.request.Request;
66
import com.slack.api.bolt.response.Response;
7-
import io.micronaut.core.convert.DefaultConversionService;
7+
import io.micronaut.core.convert.DefaultMutableConversionService;
88
import io.micronaut.http.HttpRequest;
99
import io.micronaut.http.HttpResponse;
1010
import io.micronaut.http.simple.SimpleHttpHeaders;
@@ -32,11 +32,11 @@ public void toSlackRequest() {
3232
HttpRequest<String> req = mock(HttpRequest.class);
3333
Map<String, String> rawHeaders = new HashMap<>();
3434
rawHeaders.put("X-Slack-Signature", "xxxxxxx");
35-
SimpleHttpHeaders headers = new SimpleHttpHeaders(rawHeaders, new DefaultConversionService());
35+
SimpleHttpHeaders headers = new SimpleHttpHeaders(rawHeaders, new DefaultMutableConversionService());
3636
when(req.getHeaders()).thenReturn(headers);
3737
Map<CharSequence, List<String>> params = new HashMap<>();
3838
params.put("foo", Arrays.asList("bar", "baz"));
39-
SimpleHttpParameters parameters = new SimpleHttpParameters(params, new DefaultConversionService());
39+
SimpleHttpParameters parameters = new SimpleHttpParameters(params, new DefaultMutableConversionService());
4040
when(req.getParameters()).thenReturn(parameters);
4141

4242
Request<?> slackRequest = adapter.toSlackRequest(req, "token=random&ssl_check=1");

bolt-micronaut/src/test/java/test_locally/ControllerTest.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import com.slack.api.bolt.AppConfig;
77
import com.slack.api.bolt.micronaut.SlackAppController;
88
import com.slack.api.bolt.micronaut.SlackAppMicronautAdapter;
9-
import io.micronaut.core.convert.DefaultConversionService;
9+
import io.micronaut.core.convert.DefaultMutableConversionService;
1010
import io.micronaut.http.HttpRequest;
1111
import io.micronaut.http.HttpResponse;
1212
import io.micronaut.http.MutableHttpParameters;
@@ -20,6 +20,7 @@
2020
import util.AuthTestMockServer;
2121

2222
import java.util.HashMap;
23+
import java.util.Optional;
2324

2425
import static org.hamcrest.MatcherAssert.assertThat;
2526
import static org.hamcrest.core.IsEqual.equalTo;
@@ -62,12 +63,13 @@ public void test() throws Exception {
6263
assertNotNull(controller);
6364

6465
HttpRequest<String> req = mock(HttpRequest.class);
65-
SimpleHttpHeaders headers = new SimpleHttpHeaders(new HashMap<>(), new DefaultConversionService());
66+
SimpleHttpHeaders headers = new SimpleHttpHeaders(new HashMap<>(), new DefaultMutableConversionService());
6667
when(req.getHeaders()).thenReturn(headers);
67-
SimpleHttpParameters parameters = new SimpleHttpParameters(new HashMap<>(), new DefaultConversionService());
68+
SimpleHttpParameters parameters = new SimpleHttpParameters(new HashMap<>(), new DefaultMutableConversionService());
6869
when(req.getParameters()).thenReturn(parameters);
70+
when(req.getBody()).thenReturn(Optional.of("token=random&ssl_check=1"));
6971

70-
HttpResponse<String> response = controller.events(req, "token=random&ssl_check=1");
72+
HttpResponse<String> response = controller.events(req);
7173
assertEquals(200, response.getStatus().getCode());
7274
}
7375

bolt-micronaut/src/test/java/test_locally/app/CommandsTest.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import io.micronaut.test.annotation.MockBean;
1919
import io.micronaut.test.extensions.junit5.annotation.MicronautTest;
2020
import jakarta.inject.Inject;
21+
import jakarta.inject.Singleton;
2122
import org.junit.jupiter.api.Assertions;
2223
import org.junit.jupiter.api.Test;
2324

@@ -51,7 +52,7 @@ public class CommandsTest {
5152
SlackSignature.Generator signatureGenerator = new SlackSignature.Generator(signingSecret);
5253

5354
@Primary
54-
@MockBean(AppConfig.class)
55+
@Singleton
5556
AppConfig mockSlackAppConfig() throws IOException, SlackApiException {
5657
AppConfig config = AppConfig.builder().signingSecret(signingSecret).singleTeamBotToken(botToken).build();
5758
config.setSlack(mockSlack());
@@ -76,7 +77,7 @@ Slack mockSlack() throws IOException, SlackApiException {
7677
public void command() {
7778
MutableHttpRequest<String> request = HttpRequest.POST("/slack/events", "");
7879
request.header("Content-Type", "application/x-www-form-urlencoded");
79-
String timestamp = "" + (System.currentTimeMillis() / 1000);
80+
String timestamp = String.valueOf(System.currentTimeMillis() / 1000);
8081
request.header(SlackSignature.HeaderNames.X_SLACK_REQUEST_TIMESTAMP, timestamp);
8182
String signature = signatureGenerator.generate(timestamp, helloBody);
8283
request.header(SlackSignature.HeaderNames.X_SLACK_SIGNATURE, signature);
@@ -90,7 +91,7 @@ public void command() {
9091
public void invalidSignature() {
9192
MutableHttpRequest<String> request = HttpRequest.POST("/slack/events", "");
9293
request.header("Content-Type", "application/x-www-form-urlencoded");
93-
String timestamp = "" + (System.currentTimeMillis() / 1000 - 30 * 60);
94+
String timestamp = String.valueOf(System.currentTimeMillis() / 1000 - 30 * 60);
9495
request.header(SlackSignature.HeaderNames.X_SLACK_REQUEST_TIMESTAMP, timestamp);
9596
String signature = signatureGenerator.generate(timestamp, helloBody);
9697
request.header(SlackSignature.HeaderNames.X_SLACK_SIGNATURE, signature);
@@ -122,7 +123,7 @@ public void invalidSignature() {
122123
public void regexp_matching() {
123124
MutableHttpRequest<String> request = HttpRequest.POST("/slack/events", "");
124125
request.header("Content-Type", "application/x-www-form-urlencoded");
125-
String timestamp = "" + (System.currentTimeMillis() / 1000);
126+
String timestamp = String.valueOf(System.currentTimeMillis() / 1000);
126127
request.header(SlackSignature.HeaderNames.X_SLACK_REQUEST_TIMESTAMP, timestamp);
127128
String signature = signatureGenerator.generate(timestamp, submissionBody);
128129
request.header(SlackSignature.HeaderNames.X_SLACK_SIGNATURE, signature);
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package test_locally.app;
2+
3+
import io.micronaut.core.version.VersionUtils;
4+
import io.micronaut.test.extensions.junit5.annotation.MicronautTest;
5+
import org.junit.jupiter.api.Assertions;
6+
import org.junit.jupiter.api.Test;
7+
8+
@MicronautTest
9+
public class MicronautVersionTest {
10+
11+
@Test
12+
public void expectedMicronautVersion() {
13+
String version = VersionUtils.getMicronautVersion();
14+
Assertions.assertEquals("4.3.12", version);
15+
}
16+
17+
}
18+

bolt-micronaut/src/test/resources/logback.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
<configuration>
22
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
3-
<withJansi>true</withJansi>
43
<encoder>
54
<pattern>%cyan(%d{HH:mm:ss.SSS}) %gray([%thread]) %highlight(%-5level) %magenta(%logger{36}) - %msg%n</pattern>
65
</encoder>

pom.xml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@
9191
<maven-versions-plugin.version>2.8.1</maven-versions-plugin.version>
9292
<nexus-staging-maven-plugin.version>1.6.8</nexus-staging-maven-plugin.version>
9393
<jacoco-maven-plugin.version>0.8.7</jacoco-maven-plugin.version>
94+
<maven-surefire-plugin.version>3.2.5</maven-surefire-plugin.version>
9495
<dokka.version>1.6.10</dokka.version>
9596
</properties>
9697

@@ -401,6 +402,28 @@
401402
</plugins>
402403
</build>
403404
</profile>
405+
<profile>
406+
<id>building-with-jdk-17</id>
407+
<activation>
408+
<jdk>17</jdk>
409+
</activation>
410+
<build>
411+
<plugins>
412+
<!-- java 9+ fix for tests, open modules in java.lang -->
413+
<plugin>
414+
<groupId>org.apache.maven.plugins</groupId>
415+
<artifactId>maven-surefire-plugin</artifactId>
416+
<version>${maven-surefire-plugin.version}</version>
417+
<configuration>
418+
<argLine>
419+
--add-opens java.base/java.lang=ALL-UNNAMED
420+
--add-opens java.base/java.util=ALL-UNNAMED
421+
</argLine>
422+
</configuration>
423+
</plugin>
424+
</plugins>
425+
</build>
426+
</profile>
404427
</profiles>
405428

406429
</project>

scripts/run_no_prep_tests.sh

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ flags()
1616
flags "$@"
1717

1818
is_jdk_8=`echo $JAVA_HOME | grep 8.`
19+
is_jdk_14=`echo $JAVA_HOME | grep 14.`
20+
1921
is_travis_jdk_8=`echo $TRAVIS_JDK | grep openjdk8`
2022
if [[ "${is_jdk_8}" != "" && "${is_travis_jdk_8}" != "" ]];
2123
then
@@ -25,20 +27,32 @@ then
2527
-pl !bolt-quarkus-examples \
2628
-pl !bolt-jakarta-servlet \
2729
-pl !bolt-jakarta-jetty \
30+
-pl !bolt-micronaut \
2831
clean \
2932
test-compile \
30-
'-Dtest=test_locally.**.*Test' -Dsurefire.failIfNoSpecifiedTests=false test ${CI_OPTIONS}\
33+
'-Dtest=test_locally.**.*Test' -Dsurefire.failIfNoSpecifiedTests=false test ${CI_OPTIONS} \
3134
-DfailIfNoTests=false \
3235
-Dhttps.protocols=TLSv1.2 \
3336
--no-transfer-progress && \
3437
if git status --porcelain | grep .; then git --no-pager diff; exit 1; fi
35-
else
38+
elif [[ "${is_jdk_14}" != "" ]];
39+
then
3640
./mvnw ${MAVEN_OPTS} \
41+
-pl !bolt-micronaut \
3742
clean \
3843
test-compile \
3944
'-Dtest=test_locally.**.*Test' -Dsurefire.failIfNoSpecifiedTests=false test ${CI_OPTIONS} \
4045
-DfailIfNoTests=false \
4146
-Dhttps.protocols=TLSv1.2 \
4247
--no-transfer-progress && \
4348
if git status --porcelain | grep .; then git --no-pager diff; exit 1; fi
49+
else
50+
./mvnw ${MAVEN_OPTS} \
51+
clean \
52+
test-compile \
53+
'-Dtest=test_locally.**.*Test' -Dsurefire.failIfNoSpecifiedTests=false test ${CI_OPTIONS} \
54+
-DfailIfNoTests=false \
55+
-Dhttps.protocols=TLSv1.2 \
56+
--no-transfer-progress && \
57+
if git status --porcelain | grep .; then git --no-pager diff; exit 1; fi
4458
fi

0 commit comments

Comments
 (0)