Skip to content

Commit 04cb78e

Browse files
committed
Test the known hosts verifier log message
1 parent d2ebfda commit 04cb78e

File tree

2 files changed

+61
-4
lines changed

2 files changed

+61
-4
lines changed

src/main/java/org/jenkinsci/plugins/gitclient/verifier/KnownHostsFileVerifier.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,6 @@ private void logHint(TaskListener listener) {
7272
'Manage Jenkins' -> 'Security' -> 'Git Host Key Verification Configuration' \
7373
and configure host key verification.\
7474
"""));
75-
LOGGER.log(
76-
Level.FINEST,
77-
"Known hosts file {0} not found, but verifying host keys with known hosts file",
78-
new Object[] {SshHostKeyVerificationStrategy.KNOWN_HOSTS_DEFAULT});
75+
LOGGER.finest("Verifying host keys with known hosts file, but known hosts file was not found");
7976
}
8077
}

src/test/java/org/jenkinsci/plugins/gitclient/verifier/KnownHostsFileVerifierTest.java

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.jenkinsci.plugins.gitclient.verifier;
22

33
import static org.hamcrest.MatcherAssert.assertThat;
4+
import static org.hamcrest.Matchers.hasItem;
45
import static org.hamcrest.Matchers.is;
56
import static org.jenkinsci.plugins.gitclient.verifier.KnownHostsTestUtil.nonGitHubHost;
67
import static org.jenkinsci.plugins.gitclient.verifier.KnownHostsTestUtil.runKnownHostsTests;
@@ -12,6 +13,12 @@
1213
import hudson.model.TaskListener;
1314
import java.io.File;
1415
import java.time.Duration;
16+
import java.util.ArrayList;
17+
import java.util.List;
18+
import java.util.logging.Handler;
19+
import java.util.logging.Level;
20+
import java.util.logging.LogRecord;
21+
import java.util.logging.Logger;
1522
import org.awaitility.Awaitility;
1623
import org.junit.jupiter.api.BeforeEach;
1724
import org.junit.jupiter.api.Test;
@@ -39,6 +46,37 @@ void assignVerifiers() throws Exception {
3946
fakeKnownHosts = knownHostsTestUtil.createFakeKnownHosts(FILE_CONTENT);
4047
}
4148

49+
@Test
50+
void missingKnownHostsShouldLogWarning() throws Exception {
51+
File folder = new File(testFolder, "folder");
52+
File missingKnownHosts = new File(folder, "non_existent_known_hosts");
53+
KnownHostsFileVerifier knownHostsFileVerifier = spy(new KnownHostsFileVerifier());
54+
when(knownHostsFileVerifier.getKnownHostsFile()).thenReturn(missingKnownHosts);
55+
56+
Logger logger = Logger.getLogger(KnownHostsFileVerifier.class.getName());
57+
LogHandler handler = new LogHandler();
58+
handler.setLevel(Level.ALL);
59+
logger.setUseParentHandlers(false);
60+
logger.addHandler(handler);
61+
logger.setLevel(Level.ALL);
62+
KnownHostsTestUtil.connectToHost(
63+
nonGitHubHost(),
64+
22,
65+
missingKnownHosts,
66+
knownHostsFileVerifier.forJGit(StreamBuildListener.fromStdout()),
67+
"ssh-ed25519",
68+
s -> {
69+
assertThat(s.isOpen(), is(true));
70+
Awaitility.await().atMost(Duration.ofSeconds(37)).until(() -> s.getServerKey() != null);
71+
assertThat(KnownHostsTestUtil.checkKeys(s), is(false));
72+
return true;
73+
})
74+
.close();
75+
assertThat(
76+
handler.getMessages(),
77+
hasItem("Verifying host keys with known hosts file, but known hosts file was not found"));
78+
}
79+
4280
@Test
4381
void connectWhenHostKeyNotInKnownHostsFileForOtherHostNameThenShouldFail() throws Exception {
4482
assumeTrue(runKnownHostsTests());
@@ -114,4 +152,26 @@ void testVerifyHostKeyOptionWithDefaultFile() throws Exception {
114152
assertThat(
115153
verifier.forCliGit(TaskListener.NULL).getVerifyHostKeyOption(null), is("-o StrictHostKeyChecking=yes"));
116154
}
155+
156+
private static class LogHandler extends Handler {
157+
158+
private List<String> messages = new ArrayList<>();
159+
160+
@Override
161+
public void publish(LogRecord lr) {
162+
messages.add(lr.getMessage());
163+
}
164+
165+
@Override
166+
public void flush() {}
167+
168+
@Override
169+
public void close() throws SecurityException {
170+
messages = new ArrayList<>();
171+
}
172+
173+
List<String> getMessages() {
174+
return messages;
175+
}
176+
}
117177
}

0 commit comments

Comments
 (0)