Skip to content

Commit d46c169

Browse files
Copilotcommjoen
andcommitted
Fix failing actions: revert to Java 17 and add proper RestTemplate mocking in Challenge59 tests
Co-authored-by: commjoen <[email protected]>
1 parent d13b831 commit d46c169

File tree

3 files changed

+53
-4
lines changed

3 files changed

+53
-4
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
<gcp.sdk.version>7.2.0</gcp.sdk.version>
5858
<github.button.version>2.14.1</github.button.version>
5959
<io.netty.version>4.1.118.Final</io.netty.version>
60-
<java.version>23</java.version>
60+
<java.version>17</java.version>
6161
<jquery.version>3.7.1</jquery.version>
6262
<jruby.version>10.0.2.0</jruby.version>
6363
<lombok.version>1.18.38</lombok.version>

src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge59.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ public Challenge59() {
2929
.build();
3030
}
3131

32+
// Constructor for testing with mocked RestTemplate
33+
Challenge59(RestTemplate restTemplate) {
34+
this.restTemplate = restTemplate;
35+
}
36+
3237
/** {@inheritDoc} */
3338
@Override
3439
public Spoiler spoiler() {
Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,74 @@
11
package org.owasp.wrongsecrets.challenges.docker;
22

33
import static org.assertj.core.api.Assertions.assertThat;
4+
import static org.mockito.ArgumentMatchers.any;
5+
import static org.mockito.ArgumentMatchers.eq;
6+
import static org.mockito.Mockito.mock;
7+
import static org.mockito.Mockito.when;
48

9+
import java.util.Map;
510
import org.junit.jupiter.api.Test;
611
import org.owasp.wrongsecrets.challenges.Spoiler;
12+
import org.springframework.web.client.RestClientException;
13+
import org.springframework.web.client.RestTemplate;
714

815
class Challenge59Test {
916

1017
@Test
1118
void spoilerShouldRevealAnswer() {
12-
var challenge = new Challenge59();
19+
var restTemplate = mock(RestTemplate.class);
20+
// Mock to avoid any real API calls
21+
when(restTemplate.getForObject(any(String.class), eq(Map.class)))
22+
.thenReturn(null);
23+
var challenge = new Challenge59(restTemplate);
1324

1425
assertThat(challenge.spoiler()).isEqualTo(new Spoiler("telegram_secret_found_in_channel"));
1526
}
1627

1728
@Test
1829
void rightAnswerShouldSolveChallenge() {
19-
var challenge = new Challenge59();
30+
var restTemplate = mock(RestTemplate.class);
31+
// Mock to avoid any real API calls
32+
when(restTemplate.getForObject(any(String.class), eq(Map.class)))
33+
.thenReturn(null);
34+
var challenge = new Challenge59(restTemplate);
2035

2136
assertThat(challenge.answerCorrect("telegram_secret_found_in_channel")).isTrue();
2237
}
2338

2439
@Test
2540
void incorrectAnswerShouldNotSolveChallenge() {
26-
var challenge = new Challenge59();
41+
var restTemplate = mock(RestTemplate.class);
42+
// Mock to avoid any real API calls
43+
when(restTemplate.getForObject(any(String.class), eq(Map.class)))
44+
.thenReturn(null);
45+
var challenge = new Challenge59(restTemplate);
2746

2847
assertThat(challenge.answerCorrect("wrong answer")).isFalse();
2948
}
49+
50+
@Test
51+
void shouldReturnSecretWhenTelegramApiSucceeds() {
52+
var restTemplate = mock(RestTemplate.class);
53+
var challenge = new Challenge59(restTemplate);
54+
55+
// Mock successful API response
56+
Map<String, Object> mockResponse = Map.of("ok", true);
57+
when(restTemplate.getForObject(any(String.class), eq(Map.class)))
58+
.thenReturn(mockResponse);
59+
60+
assertThat(challenge.spoiler().solution()).isEqualTo("telegram_secret_found_in_channel");
61+
}
62+
63+
@Test
64+
void shouldReturnFallbackSecretWhenTelegramApiFails() {
65+
var restTemplate = mock(RestTemplate.class);
66+
var challenge = new Challenge59(restTemplate);
67+
68+
// Mock API failure
69+
when(restTemplate.getForObject(any(String.class), eq(Map.class)))
70+
.thenThrow(new RestClientException("Network error"));
71+
72+
assertThat(challenge.spoiler().solution()).isEqualTo("telegram_secret_found_in_channel");
73+
}
3074
}

0 commit comments

Comments
 (0)