11package org .owasp .wrongsecrets .challenges .docker ;
22
33import 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 ;
510import org .junit .jupiter .api .Test ;
611import org .owasp .wrongsecrets .challenges .Spoiler ;
12+ import org .springframework .web .client .RestClientException ;
13+ import org .springframework .web .client .RestTemplate ;
714
815class 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